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

如何用Python BeautifulSoup抓取重复出现的首个ID元素?

搞定BeautifulSoup重复抓取同ID元素的问题

嘿,我来帮你解决这个困扰!首先得说清楚问题出在哪:你应该是用了find_all()方法来查找目标ID元素吧?这个方法会返回所有匹配该ID的元素列表,所以你每次打印都会得到两个结果。而你尝试的review2['id'].next_element写法本身就不对——如果review2是find_all()返回的列表,直接用['id']会触发错误,因为列表不能这么取属性;就算是单个元素,next_element也不是用来获取首个匹配项的正确姿势。

下面给你两个简单有效的解决方案:

方法1:用find()直接拿第一个匹配项(首推)

BeautifulSoup的find()方法天生就只会返回第一个匹配到的元素,刚好满足你的需求。示例代码如下:

from bs4 import BeautifulSoup

# 假设你的HTML内容存在html变量中
soup = BeautifulSoup(html, 'html.parser')
# 直接用find()获取第一个目标ID元素
first_target = soup.find(id='你的目标ID值')
print(first_target)

方法2:从find_all()结果里取第一个元素

如果你已经写了find_all()的代码,也可以直接取列表的第一个元素(索引为0),但记得先判断列表是否为空,避免出现索引越界的错误:

results = soup.find_all(id='你的目标ID值')
if results:  # 先确认有匹配结果
    first_target = results[0]
    print(first_target)
else:
    print("没找到匹配的元素哦")

顺便提一句:虽然HTML规范要求ID必须是唯一的,但实际网页偶尔会有不规范的情况(就是你遇到的同一个ID出现两次),所以BeautifulSoup才会返回多个结果。用上面两种方法都能精准拿到第一个匹配的元素~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:50:22