найдите ярлык арии на странице html, используя суп python - PullRequest
0 голосов
/ 10 января 2020

У меня есть html страниц, с этим кодом:

<span itemprop="title" data-andiallelmwithtext="15" aria-current="page" aria-label="you in page number 452">page 452</span>

Я хочу найти ярлык арии, поэтому я попробовал это:

is_452 = soup.find("span", {"aria-label": "you in page number 452"})
print(is_452)

Я хочу получить результат:

is_452 =page 452

Я получаю результат:

is_452=none

как это сделать?

Ответы [ 2 ]

0 голосов
/ 10 января 2020

В нем есть разрывы строк, поэтому он не соответствует тексту. Попробуйте следующее

from simplified_scrapy.simplified_doc import SimplifiedDoc
html='''<span itemprop="title" data-andiallelmwithtext="15" aria-current="page" aria-label="you in page
number 452">page 452</span>'''
doc = SimplifiedDoc(html)
is_452 = doc.getElementByReg('aria-label="you in page[\s]*number 452"',tag="span")
print (is_452.text)
0 голосов
/ 10 января 2020

Возможно, нужный элемент является динамическим c элементом, и вы можете использовать Selenium для извлечения значения атрибута aria-label , вызывающего WebDriverWait для visibility_of_element_located(), и вы можете использовать любую из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "section#header a.cart-heading[href='/cart']"))).get_attribute("aria-label"))
    
  • Использование XPATH:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//section[@id='header']//a[@class='cart-heading' and @href='/cart']"))).get_attribute("aria-label"))
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...