You need to enable JavaScript to run this app. 使用BeautifulSoup从目标URL提取相似网站列表及对应重叠评分
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup从目标URL提取相似网站列表及对应重叠评分

问题描述

需从站点信息采集页提取amazon.com对应的相似站点匹配数据,目前已定位到class为site的元素区域,目标是抓取全部4个相似站点的域名标识、以及每个站点与amazon.com的流量重叠评分,最终生成站点名称-评分对照表。实际操作中尝试从结构为<a href="/siteinfo/ebay.com" class="truncation">ebay.com</a>的锚标签中提取数据,但当前只能获取到单个值,无法拿到全量目标信息。

现有代码的核心缺陷

当前已编写的测试代码如下,因选择逻辑匹配错误,无法获得预期结果:

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, "html.parser")
print([item.get_text(strip=True) for item in soup.select("span.site")]) 
  • 选择器匹配目标错配:代码中指定选择的span.site与实际相似站点所在的DOM层级不匹配,无法命中带truncation类的锚标签条目,自然无法获取全量站点列表
  • 缺乏关联绑定逻辑:仅单独抓取站点文本的遍历方式,没有将站点条目和对应的重叠评分节点做映射,无法生成一一对应的对照关系
修正后的实现流程
  • 优先定位class为site的目标父容器,过滤页面其他无关元素的干扰
  • 遍历父容器下所有带truncation类的锚标签,提取每个标签内的站点域名文本
  • 顺着DOM层级找到同一条目下的重叠评分节点,将站点名称和评分值做一一绑定
  • 整理结果输出为对照表格式

修正后的参考实现代码:

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, "html.parser")
# 定位相似站点列表父容器
similar_module = soup.find(class_="site")
site_score_list = []
# 遍历所有相似站点锚标签
for site_link in similar_module.select("a.truncation"):
    site_name = site_link.get_text(strip=True)
    # 匹配同条目下的重叠评分值
    overlap_score = site_link.parent.parent.select_one(".score-value").get_text(strip=True)
    site_score_list.append((site_name, overlap_score))

最终可输出符合要求的对照表效果:

站点名称                  与amazon.com的重叠评分
eBay.com                   70.1
pinterest.com              54.7
wikipedia.org              51.3
facebook.com               50.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 11:15:06