如何解决Python中使用pandas read_html出现404(未找到)错误的问题
解决pandas read_html访问Yahoo Finance部分股票404的问题
问题核心是Yahoo Finance的反爬机制会识别无浏览器标识的请求,read_html()默认的请求头没有携带User-Agent,导致部分股票页面被拦截返回404,而浏览器访问时自动带上了合法的User-Agent,所以能正常打开。
解决方法是先通过requests库模拟浏览器请求获取页面内容,再传给pd.read_html()处理:
import pandas as pd import requests # 模拟浏览器的请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } # 获取AVY页面内容 url = 'https://finance.yahoo.com/quote/AVY' response = requests.get(url, headers=headers) response.raise_for_status() # 确保请求成功 # 用read_html解析内容 df_list = pd.read_html(response.text) cap = df_list[1][1].iloc[0] print(cap)
额外注意事项:
- 可替换为自己浏览器实际的User-Agent(在浏览器开发者工具的Network面板中可查看)
- 避免频繁批量请求,防止触发更严格的反爬限制
- Yahoo Finance页面结构可能随时间变化,需根据实际页面调整
df_list的索引位置
内容的提问来源于stack exchange,提问作者Martingale
相关产品推荐
相关产品推荐

