浏览器与Python查询Yahoo Finance GE财报日历的结果差异问题
问题原因及解决方法
原因
Yahoo Finance的服务器会校验请求的User-Agent字段,pandas.read_html()默认发送的请求头没有模拟浏览器标识,服务器会返回默认的当日所有公司财报数据,而非针对GE过滤后的内容。
解决步骤
- 用
requests库手动添加浏览器风格的User-Agent请求头,先获取页面内容 - 将获取到的页面内容传给
pandas.read_html()处理
代码示例
import requests import pandas as pd # 模拟Firefox浏览器的User-Agent,可根据自己浏览器实际UA调整 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0' } url = 'https://finance.yahoo.com/calendar/earnings?symbol=GE' # 发送带请求头的请求 response = requests.get(url, headers=headers) # 解析HTML表格 dfs = pd.read_html(response.text) # 第一个表格就是GE的财报数据 ge_earnings = dfs[0] print(ge_earnings)
内容的提问来源于stack exchange,提问作者theakson
相关产品推荐
相关产品推荐

