Python 3.x 当父标记仅具有某个元素的子标记时,将删除数据
我试图从一个电子商务网站上搜集某个产品的数据。在结果页面上,列出了50种产品。有些产品的原价低于原价,而有些产品的折扣价去掉了原价。这方面的HTML代码是 对于非折扣产品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
<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
将消失