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

使用BeautifulSoup无法获取href属性问题求助

解决BeautifulSoup获取href返回None的问题

嘿,你这是踩了个常见的小坑呀!你用event.find("href")肯定拿不到值,因为href是<a>标签的属性,不是一个独立的HTML标签~

问题根源

find()方法是用来查找HTML标签的,比如find("p")找段落标签,而href是<a>标签自带的属性,不能用find()去搜索它。

正确的获取方式

直接用BeautifulSoup元素的get()方法来提取属性,或者通过attrs字典访问,后者更安全(属性不存在时不会报错,只会返回None):

  • 方式1:href = event.get("href")
  • 方式2:href = event.attrs.get("href")

优化后的完整代码

考虑到其他元素也可能存在找不到的情况,我们可以加上判断避免报错,比如:

events = soup.find_all("a", attrs={"class": "event-link-wrap"})
for event in events:
    # 获取链接,属性不存在时返回None
    href = event.get("href")
    # 获取分类,先判断元素是否存在再取文本
    category_elem = event.find("p", {"class": "category"})
    category = category_elem.text.strip() if category_elem else "无分类"
    # 获取标题
    title_elem = event.find("h3")
    title = title_elem.text.strip() if title_elem else "无标题"
    # 获取场馆
    arena_elem = event.find("span", {"class": "venue"})
    arena = arena_elem.text.strip() if arena_elem else "无场馆"
    
    # 打印结果
    print(f"链接: {href}")
    print(f"分类: {category}")
    print(f"标题: {title}")
    print(f"场馆: {arena}")
    print("-" * 30)

额外提示

如果你怀疑href是在event这个<a>标签的子标签里(比如嵌套了另一个<a>),那可以先找到子标签再提取属性:

sub_link = event.find("a")
if sub_link:
    href = sub_link.get("href")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:32:08