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

使用Requests+BeautifulSoup无第三方API抓取雅虎财经成交量数据问题排查

错误原因及修复方案

核心问题点

  • 反爬拦截:雅虎财经对未携带浏览器标识的请求会直接返回拦截页面,你使用requests默认UA发起请求,拿到的并非正常的个股数据页,自然无法匹配到对应元素。
  • URL参数错误:代码中请求的URL参数为p=EDTK,和你预期抓取的AMZN个股目标页面不符,请求路径本身就存在错误。
  • 可选优化:依赖完整动态class名匹配稳定性极低,雅虎财经前端样式类名会随版本迭代调整,用文本特征定位目标字段容错性更高。

修复后可运行代码

import requests
from bs4 import BeautifulSoup

# 配置请求头,模拟浏览器访问绕过基础反爬
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"
}
# 修正为AMZN个股的正确URL
url = 'https://finance.yahoo.com/quote/AMZN?p=AMZN&.tsrc=fin-srch'
r = requests.get(url, headers=headers)

web_content = BeautifulSoup(r.text, 'lxml')
# 先定位Summary表格所有行
table_rows = web_content.select('div[data-test="quote-summary"] tr')

result = {}
for row in table_rows:
    # 提取每行的标签和数值
    label = row.select_one('td:first-child').get_text(strip=True)
    value = row.select_one('td:last-child').get_text(strip=True)
    # 只保留需要的两个字段
    if label in ("Volume", "Avg. Volume"):
        result[label] = value

print(result)

运行说明

代码运行后会输出类似结构的结果:{'Volume': '40,993,569', 'Avg. Volume': '48,837,879'},数值会随市场动态更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:48:03