Я попытался найти это здесь, но не смог найти ответ, чтобы быть честным, поскольку это должно быть довольно легко сделать с Selenium, но, поскольку производительность является важным фактором, я подумал о том, чтобы сделать это с Beautifulsoup вместо этого.
Сценарий : мне нужно проанализировать цены на различные товары, которые генерируются случайным образом в зависимости от ввода пользователя, см. Код ниже:
<div class="sk-expander-content" style="display: block;">
<ul>
<li>
<span>Third Party Liability</span>
<span>€756.62</span>
</li>
<li>
<span>Fire & Theft</span>
<span>€15.59</span>
</li>
</ul>
</div>
Если эти параметры были сохранены c и всегда будет отображаться в одной и той же позиции в пределах html, было бы легко пересмотреть цены, но, поскольку они могут быть размещены в любом месте в пределах div sk-expander-content
, я не уверен, как их найти в Dynami c way.
Наилучшим подходом было бы написать метод для передачи текста искомого диапазона и возврата значения в евро. Структура тегов span всегда одинакова, первый span - это всегда имя элемента, а второй - всегда цена.
Первое, что пришло на ум, - следующий код, но я Я не уверен, достаточно ли он надежен или имеет смысл:
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
div_i_need = soup.find_all("div", class_="sk-expander-content")[1]
def price_scraper(text_to_find):
for el in div_i_need.find_all(['ul', 'li', 'span']):
if el.name == 'span':
if el[0].text == text_to_find:
return(el[1].text)
Ваша помощь будет высоко оценена.