Python. Selenium. Парсится лишняя информация, как скорректировать путь?

Html код страницы вот такой:

<div class="product_item__description ">
  <div>
        9 000&nbsp;
    <span class="rub">
    <!--noindex-->
    <b>&#8381;</b>
    <!--/noindex-->
    <i class="rub__old">руб.</i></span>
  </div>
  <div class="product_item__old-price">
                  10 000&nbsp;<span class="rub">
          <!--noindex--><b>&#8381;</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 шт):

Автор решения: danilshik

ну так отсеките результат, это же так просто 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 = ....

пишу в блокноте, так что найдете и исправите на подходящие методы

→ Ссылка
Автор решения: GromWolf

Вам нужно создать массив который будет хранить вебэлементы (IWebElements в C#) и в него загнать ваш запрос IWebElements = driver.find_elements_by_css_selector("div.product_item__description > div") и после этого он будет содержать либо один див (если старой цены нет), либо 2 (если старая цена есть).

Теперь вы можете к своему prices присвоить значение нулевого элемента массива IWebElements, который и будет содержать актуальную цену.

→ Ссылка