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

使用requests+BeautifulSoup爬取雅虎财经股价返回None问题求解

问题原因
  • 反爬拦截:雅虎财经对未携带浏览器标识的请求会返回异常页面,直接用requests发起的默认请求会被识别为爬虫,返回的HTML内容不含你要定位的股价元素,因此查找结果为None。
  • 定位规则不稳定:你代码中使用的类名是前端框架动态生成的,会随页面版本、访问区域、会话状态变化,硬编码该类名的定位方式本身容错性极低。
修复方案
  1. 给请求添加User-Agent请求头,模拟正常浏览器访问
  2. 改用更稳定的data-testid属性定位元素,雅虎财经股价元素的data-testid固定为qsp-price,不会随前端渲染逻辑随意变更
修正后代码
import requests
from bs4 import BeautifulSoup

url = 'https://ca.finance.yahoo.com/quote/AAPL?p=AAPL'
# 添加请求头模拟Chrome浏览器访问
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
# 用data-testid定位股价元素
price = soup.find('span', {'data-testid': 'qsp-price'})
if price:
    # 提取股价文本
    print(price.text.strip())
else:
    print("未获取到股价数据,可检查页面结构是否更新")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 02:27:04