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

Python Web Scraping求助:使用BeautifulSoup提取href属性报错

解决BeautifulSoup提取href属性的错误

你的代码报错核心原因有两个:

  1. site_html.find_all('h4')返回的是结果列表,列表没有get()方法,不能直接调用该方法获取属性。
  2. href属性属于<h4>内部的<a>标签,而非<h4>标签本身。

修正后的代码示例

首先补全必要的导入语句:

import requests
from bs4 import BeautifulSoup

方法一:遍历h4标签,逐个提取内部a标签的href

request = requests.get('https://www.eloscimento.com.br')
site_html = BeautifulSoup(request.text, 'html.parser')

# 获取所有h4标签(返回列表)
h4_list = site_html.find_all('h4')
# 遍历每个h4标签
for h4 in h4_list:
    # 查找当前h4下的a标签
    a_tag = h4.find('a')
    # 确保a标签存在,避免报错
    if a_tag:
        href = a_tag.get('href')
        print(href)

方法二:直接定位h4下的a标签(更高效)

用CSS选择器直接选中所有h4的直接子元素a标签:

request = requests.get('https://www.eloscimento.com.br')
site_html = BeautifulSoup(request.text, 'html.parser')

# 直接获取所有h4内部的a标签
a_tags = site_html.select('h4 > a')
for a in a_tags:
    href = a.get('href')
    print(href)

关键说明

  • find_all()返回的是多个元素组成的列表,必须遍历每个元素才能处理。
  • get('href')方法用于从标签对象中提取属性值,也可以用a_tag['href'],但get()会在属性不存在时返回None,避免抛出异常。
  • CSS选择器select()可以更精准地定位元素,适合复杂的层级结构查询。

内容的提问来源于stack exchange,提问作者Hélder Neves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:20:31