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

Python使用Beautiful Soup提取href/data-ctorig链接失败问题排查

问题根源

不是页面脚本阻止爬取,是代码的元素定位逻辑有误:

  • 你当前查找的是class="wrapper"的div标签,href、data-ctorig这两个属性并不在div上,而是在div嵌套的<a>标签内,直接在div上调用get()取属性自然拿不到结果
  • 注释里写的soup.a会匹配页面全局第一个a标签,不是搜索结果区域的链接,所以返回的是站点根路径/,拿不到目标属性值
修正后可运行代码
import requests
from bs4 import BeautifulSoup

band = "it's my life bon jovi"
url = f'https://www.letras.mus.br/?q={band}'
# 添加基础请求头模拟普通浏览器访问,避免被基础反爬规则拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.content, 'html.parser')

# 直接匹配wrapper容器下带data-ctorig属性的第一个a标签,也就是第一条搜索结果链接
first_link = soup.select_one('div.wrapper a[data-ctorig]')
if first_link:
    print("data-ctorig属性值:", first_link.get('data-ctorig'))
    print("href属性值:", first_link.get('href'))
补充说明
  • 原代码存在重复导入requests的问题,已经在修正版里删除冗余导入
  • 不需要用find_all获取全量wrapper元素再循环遍历,用select_one可以直接拿到匹配规则的第一个目标元素,执行效率更高
  • 爬取公开站点时建议带上常规UA头,requests默认的UA标识很容易被站点识别为爬虫,返回和浏览器访问不一致的页面内容

页面结构截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:57:33