Python requests请求雅虎财经部分股票页面返回404错误问题排查
网页请求返回404错误的原因
- 反爬策略的UA校验拦截:requests库默认发送的请求头中
User-Agent字段为python-requests/[版本号],会被Yahoo Finance的反爬机制识别为爬虫请求。不同股票代码对应页面的拦截规则粒度不同,ALB对应页面未触发拦截规则可正常访问,AEE对应页面触发拦截后返回伪装的404 Not Found响应。 - 缺少必要的请求上下文:浏览器访问页面时会自动携带站点生成的Cookies、Accept、Accept-Language等标准请求头字段,你的Python请求未携带这类浏览器特征字段,被反爬策略判定为异常请求,返回404错误。
修复方案
修改请求逻辑,添加模拟浏览器的请求头即可解决问题,参考代码如下:
import requests def yahoo_summary_stats(stock): # 模拟Firefox浏览器的User-Agent字段 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" } response = requests.get(f"https://finance.yahoo.com/quote/{stock}", headers=headers) print(response.reason)
如果添加User-Agent后仍无法访问,可以补充其他浏览器标准请求头字段,或使用requests.Session()对象维持访问过程中生成的Cookies,进一步模拟正常用户的访问行为。
内容的提问来源于stack exchange,提问作者Martin Kunze
相关产品推荐
相关产品推荐

