Python. Selenium. Парсится лишняя информация, как скорректировать путь?
Html код страницы вот такой:
<div class="product_item__description ">
<div>
9 000
<span class="rub">
<!--noindex-->
<b>₽</b>
<!--/noindex-->
<i class="rub__old">руб.</i></span>
</div>
<div class="product_item__old-price">
10 000 <span class="rub">
<!--noindex--><b>₽</b>
<!--/noindex-->
<i class="rub__old">руб.</i></span>
</div>
</div>
Пытаюсь спарсить только вот это: " 9 000 " следующим кодом:
prices= driver.find_elements_by_css_selector("div.product_item__description > div")
Получаем в prices массив цен. В большинстве случаев нет, тогда все хорошо колличество товаров = колличеству цен в массиве prices, но когда old-price присутствует то в массив prices записывается 2 цены " 9 000 " и 10 000 .
Вот собственно вопрос как сделать так что бы selenium брал данные только из первого div а второй где old price игнорил
Ответы (2 шт):
ну так отсеките результат, это же так просто prices[0]
либо
prices= driver.find_elements_by_css_selector("div.product_item__description > div")[0]
Update вы сами создаете себе проблемы, попытавшись искать по общему селектору сначала найдите товары ( product_item__description ), а потом в каждом ищите div
items = driver.find_elements_by_css_selector("div.product_item__description)
for item in items:
prices = item.find_elements_by_css_Selector("div")
for price in prices:
if(price.get("class") == "")
price_new = .....
else
price_old = ....
пишу в блокноте, так что найдете и исправите на подходящие методы
Вам нужно создать массив который будет хранить вебэлементы (IWebElements в C#) и в него загнать ваш запрос IWebElements = driver.find_elements_by_css_selector("div.product_item__description > div")
и после этого он будет содержать либо один див (если старой цены нет), либо 2 (если старая цена есть).
Теперь вы можете к своему prices присвоить значение нулевого элемента массива IWebElements, который и будет содержать актуальную цену.