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

如何用Beautiful Soup获取特定ID的所有HTML标签及全部指定href链接

嘿,我来帮你搞定这两个Beautiful Soup的问题:

问题1:获取与特定id关联的所有HTML标签

首先得提一句,HTML规范里要求id是唯一标识,一个页面里同一个id本该只出现一次,但实际开发中偶尔会遇到不规范的页面。分两种场景给你解决方案:

  • 如果是想抓页面里所有带某个id的元素(哪怕页面不规范有重复):
    别用只会返回第一个结果的find(),改用find_all(),指定id参数就行:

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(你的HTML内容, 'html.parser')
    # 把"target-id"换成你要找的id值
    all_matching_elements = soup.find_all(id="target-id")
    
  • 如果是想找某个特定id元素内部的所有子标签:
    先定位到这个id的元素,再用find_all(True)抓取它下面所有子标签(包括嵌套的);要是只想要直接子标签,用.children转成列表就行:

    # 先找到目标父元素
    parent_element = soup.find(id="parent-id")
    # 获取所有子标签(含嵌套)
    all_child_tags = parent_element.find_all(True)
    # 获取直接子标签(不含嵌套的子子标签)
    direct_child_tags = list(parent_element.children)
    
问题2:获取所有href为指定值的链接

你遇到的只返回第一个链接的问题,肯定是用了find()方法——它本来就只返回第一个匹配项。换成find_all()就能拿到全部符合条件的链接了,给你改个示例:

假设你原来的代码是这样的(只能拿到第一个):

# 原代码(错误示范)
single_link = soup.find('a', href="1")

改成下面这样,就能获取所有href为"1"的<a>标签了:

from bs4 import BeautifulSoup

soup = BeautifulSoup(你的HTML内容, 'html.parser')
# 抓取所有href等于"1"的链接
all_links = soup.find_all('a', href="1")

# 遍历处理每个链接,比如打印文本或href
for link in all_links:
    print(f"链接文本:{link.text}")
    print(f"链接地址:{link['href']}")

另外要注意,确保你传入的href值和页面里的完全一致,比如页面里是href="1"就用字符串"1",哪怕页面里的href没加引号,BeautifulSoup也能正确匹配到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:11:34