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

使用BeautifulSoup爬取Yahoo Finance股票数据,唯RR.L无法获取

解决Yahoo Finance爬取RR.L股票价格失败的问题

你遇到的问题大概率不是股票代码里的"."导致的,而是Yahoo Finance针对不同市场的股票页面,数据渲染或加载逻辑存在细微差异,或者你的请求头仍不足以完全模拟真实浏览器请求。

排查步骤与解决方案

1. 先确认请求是否返回正确页面

先打印response.status_code和response.text[:500],检查是否拿到了200状态码,以及页面内容是否为目标股票的正常页面。有时候即使UA正确,也可能因为地区、Cookie等因素返回非目标内容。

2. 补充完整请求头

除了User-Agent,添加几个关键请求头,模拟更真实的浏览器请求:

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',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Referer': 'https://finance.yahoo.com/'
}

url = 'https://finance.yahoo.com/quote/RR.L'
response = requests.get(url, headers=headers)
# 先检查请求状态码
print(response.status_code)
soup = BeautifulSoup(response.text, 'html.parser')

# 尝试用更宽泛的定位方式找价格标签
price_tag = soup.find('fin-streamer', {'class': 'livePrice'})
# 或者先找价格父容器再定位
price_container = soup.find('div', {'data-test': 'qsp-price'})
if price_container:
    price_tag = price_container.find('fin-streamer')
print(price_tag)

3. 从页面脚本提取数据(更可靠的方式)

Yahoo Finance多数核心数据是通过页面内的JSON脚本加载的,直接解析这些脚本比定位HTML标签更稳定,不受页面结构变动影响:

import requests
import json

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'
}

url = 'https://finance.yahoo.com/quote/RR.L'
response = requests.get(url, headers=headers)

# 定位包含核心数据的脚本块
for script in response.text.split('<script>'):
    if 'root.App.main' in script:
        # 提取JSON格式的数据部分
        json_str = script.split('root.App.main = ')[1].split(';')[0]
        data = json.loads(json_str)
        # 提取常规市场价格
        price = data['context']['dispatcher']['stores']['QuoteSummaryStore']['price']['regularMarketPrice']['raw']
        print(f"RR.L 当前价格: {price}")
        break

4. 验证编码问题(低概率)

虽然可能性很小,但可以尝试将URL中的"."编码为%2E,使用https://finance.yahoo.com/quote/RR%2E.L发起请求,看是否有变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:52:13