You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CoinDesk抓取比特币文章封面URL,XPath返回重复结果如何解决?

解决CoinDesk封面图URL重复抓取的问题

原因分析

你遇到的重复问题,大概率是每个img-block容器里存在两个<img>标签(比如用于适配不同设备的分辨率图、或者隐藏的备用图),你的XPath匹配到了所有符合条件的img,所以10个容器返回20条结果。

三种解决办法

  • 优化XPath精准定位
    直接指定每个img-block下的第一个img,或者只匹配直接子节点的img,避免抓取到嵌套的冗余img:

    //div[@class="img-block"]//img[1]/@src
    

    或者如果每个img-block只有一个直接子img,用更简洁的路径:

    //div[@class="img-block"]/img/@src
    

    要是页面里的主图有特定属性(比如class、loading属性),还可以进一步缩小范围,比如:

    //div[@class="img-block"]//img[@loading="lazy"]/@src
    
  • 提取结果后去重
    如果不想调整XPath,也可以在获取到结果列表后做去重处理。以Python为例,要保留原顺序的话用dict.fromkeys,不需要顺序的话用集合:

    # 假设已经通过XPath获取到src列表
    raw_srcs = response.xpath('//div[@class="img-block"]//img/@src').getall()
    # 保留顺序的去重
    unique_srcs = list(dict.fromkeys(raw_srcs))
    # 不关心顺序的话用集合
    # unique_srcs = list(set(raw_srcs))
    
  • 定位文章容器再取图
    先定位每篇文章的根容器,再从每个容器里取封面图,确保每个文章只取一次:

    //article//div[@class="img-block"]//img/@src
    

    这样先锁定每篇文章的范围,再抓取对应封面,从根源避免重复。

内容的提问来源于stack exchange,提问作者hareko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:30:44