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

如何使用BeautifulSoup提取网站中的href链接?附问题代码排查

原有代码问题说明

你写的代码存在两处核心错误:

  1. 定位到的div.exbox-body元素本身没有href属性,href是该div内部嵌套的a标签的属性,直接提取会触发KeyError
  2. 没有做请求有效性校验和属性存在性校验,容错性极低,容易触发异常中断程序

修正后可运行代码

from bs4 import BeautifulSoup
import requests

# 新增浏览器请求头,避免被网站反爬拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
res = requests.get('http://smartcatalog.emo-milano.com/it/catalogo/elenco-alfabetico/400/A', headers=headers)

# 先校验请求是否成功
if res.status_code == 200:
    soup = BeautifulSoup(res.text, 'lxml')
    # 直接定位到div下带href属性的a标签
    link_list = soup.select('div.exbox-body a')
    for a_tag in link_list:
        # 用get方法提取属性,属性不存在时返回None不会报错
        url = a_tag.get('href')
        if url:
            print(url)
else:
    print(f'请求失败,状态码:{res.status_code}')

修改点说明

  • 新增请求头模拟浏览器访问,规避绝大多数基础反爬拦截
  • 增加请求状态码校验,只有请求成功才会执行后续解析逻辑
  • 调整元素定位规则,直接提取目标div下的a标签,从a标签上获取href属性
  • 使用get方法提取属性,配合空值过滤逻辑,避免属性缺失导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:24:03