Python 3.x 当父标记仅具有某个元素的子标记时,将删除数据

Python 3.x 当父标记仅具有某个元素的子标记时,将删除数据,python-3.x,selenium,Python 3.x,Selenium,我试图从一个电子商务网站上搜集某个产品的数据。在结果页面上,列出了50种产品。有些产品的原价低于原价,而有些产品的折扣价去掉了原价。这方面的HTML代码是 对于非折扣产品 <div class="class-1"> <span> Rs. 7999 </span> </div> 7999卢比 对于折扣产品 <div class="class-1"> &l

我试图从一个电子商务网站上搜集某个产品的数据。在结果页面上,列出了50种产品。有些产品的原价低于原价,而有些产品的折扣价去掉了原价。这方面的HTML代码是

对于非折扣产品

<div class="class-1">
    <span>
        Rs. 7999
    </span>
</div>

7999卢比
对于折扣产品

<div class="class-1">
    <span>
        <span class="class-2">
         Rs. 11621
        </span>
        <span class="class-3">
         Rs. 15495
        </span>
    </span>
    <span class="class-4">
     (25% OFF)
    </span>
</div>

11621卢比
15495卢比
(七五折)
结果应该是什么

我想要一个代码,它可以滚动浏览产品列表,并从非折扣产品的
Div[class='class1]/span
标签中提取数据,如果存在子
span[class='class2']
标签,它应该只从该标签中提取数据,而不是从
span[class='class3]
标签中提取数据。
请帮忙

如果我清楚地了解您,首先您需要获得以下产品的列表:

products = driver.find_element_by_xpath('//div[@class="class-1"]')
现在,您可以反复浏览产品列表并获取以下价格

prices = []
for product in products:
   discount_price = product.find_elements_by_xpath('.//span[@class="class-2"]')
   if(discount_price):
      prices.append(discount_price[0].text)
   else:
       prices.append(product.find_element_by_xpath('./span').text)
说明:
对于每个产品,我正在检查是否存在您定义的
//span[@class=“class-2”]
子元素。 如果存在这样的元素,
product.find\u elements\u by_xpath('.//span[@class=“class-2”]”)
将返回非空的web元素列表。在Python中,非空列表是布尔值
True
,因此
if
将消失。
否则列表为空,
else
将消失