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

Python网页爬取求助:无法抓取Points,标签类与Matches数量重复

解决抓取points字段的问题

因为matches和points的标签类名完全相同,直接用find()会默认返回第一个匹配的元素(也就是matches),你可以试试这两种方法:

方法1:通过父级容器精准定位

打开浏览器开发者工具(F12),找到points对应的元素,往上查看它的父级标签,找带有唯一标识的属性(比如特殊的class、data属性)。比如假设points的父容器有data-stat="points"这样的标识,代码可以这么写:

points = soup.select_one('div[data-stat="points"] .your-class-name').text.strip()

把your-class-name替换成实际的类名,这样就能直接定位到points的元素。

方法2:按索引取第二个匹配元素

如果两个元素在同一层级下,matches是第一个,points是第二个,用find_all()获取所有匹配的元素列表,再取索引为1的元素:

# 获取所有匹配的元素
stats_values = soup.find_all('span', class_='your-class-name')
# 取第二个元素(索引从0开始)
points = stats_values[1].text.strip()

注意要确保stats_values的长度至少为2,避免索引越界,可以加个判断:

if len(stats_values) >= 2:
    points = stats_values[1].text.strip()
else:
    print("未找到points数据")

关键提示

  • 别用find(),它只返回第一个匹配项,这就是你拿到matches的核心原因。
  • 用浏览器开发者工具定位元素时,右键points数据选“检查”,能清晰看到它和matches元素的结构差异,找差异点来做筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:50:26