首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当父标记只有某个元素的子标记时,刮取数据

当父标记只有某个元素的子标记时,刮取数据
EN

Stack Overflow用户
提问于 2021-05-21 07:12:41
回答 1查看 254关注 0票数 0

我正试图从电子商务网站上为某一特定产品刮取数据。在结果页面上,列出了50种产品。有些产品有它们的原价,而有些产品的折扣价格与原来的价格脱节。它的HTML代码是

非折扣产品

代码语言:javascript
复制
<div class="class-1">
    <span>
        Rs. 7999
    </span>
</div>

贴现产品

代码语言:javascript
复制
<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>

结果应该是什么?

我想要一个代码,可以滚动产品列表,从Div[class='class-1]/span标签中提取非折扣产品的数据,如果存在子span[class='class-2'],它应该只从该标签中提取数据,而不是从Span[Class-3]标记中提取数据。救命啊!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-21 07:26:04

如果我明白你的意思,首先你需要得到一份产品清单,上面有:

代码语言:javascript
复制
products = driver.find_element_by_xpath('//div[@class="class-1"]')

现在,您可以遍历产品列表,并按以下方式获取价格

代码语言:javascript
复制
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_elements_by_xpath('.//span[@class="class-2"]')将返回非空的web元素列表。在Python中,不是空列表是布尔True,所以if会消失。

否则,列表是空的,else就会消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67632328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档