Вопрос о разборе селена / Beautifulsoup HTML - PullRequest
0 голосов
/ 24 сентября 2018

HTML

<span class="itemName tiny">foo</span>
    <span class="fr">
        <span id="2kCf5PSJ0vuykePDtnKrGOKvepUq1suWY5xrArwfAEVl2RmP8xyaq388rH4_slash_63OS||CAD||PPR||CA" class="itemValue privacy valueTiny">bar</span>
        <span class="currencyType ">CAD</span>
    </span>

Мой код

html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
balance = soup.find(text="foo").findNext('span id')
print(balance) <--- expecting "bar"
schequing = balance.text

, но баланс всегда пуст, и я получаю эту ошибку.

File "C:/Users/thomas/PycharmProjects/test/mainapp/main.py", line 223, in bills
schequing = balance.text
AttributeError: 'NoneType' object has no attribute 'text'

Кто-нибудь знает, какразобрать HTML с красивым супом?Мое намерение здесь состоит в том, чтобы найти значение foo, которое является уникальным, а затем получить значение следующего тега, которое должно быть bar.

1 Ответ

0 голосов
/ 24 сентября 2018

Желаемый элемент - это динамический элемент , поэтому вы должны использовать WebDriverWait , чтобы элемент был видимым , а затем проанализировать html следующим образом:

driver=webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe')
driver.get("your_url")
WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located((By.XPATH, "//span[@class='itemValue privacy valueTiny'][text()='bar']")))
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
balance = soup.find(text="foo").findNext('span id')
print(balance)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...