使用Pandas查询加密货币对遇到的分页及地域范围问题
问题解决:pandas.read_html获取雅虎财经加密货币数据分页失效及区域确认
一、分页参数不生效的解决方法
雅虎财经加密货币列表的服务器会验证请求来源,直接修改URL的offset和count参数时,pandas.read_html默认的请求头可能不被认可,导致返回固定的25条数据。可以按以下方式处理:
添加模拟浏览器的请求头
先用requests库发送带浏览器标识的请求,再将响应内容传给pandas.read_html,示例代码:import pandas as pd import requests # 带分页参数的目标URL url = "https://finance.yahoo.com/cryptocurrencies?offset=25&count=50" # 模拟Chrome浏览器的请求头 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" } response = requests.get(url, headers=headers) # 解析响应中的表格数据 df_list = pd.read_html(response.text) crypto_df = df_list[0] print(crypto_df.shape) # 正常情况下会返回(50, 列数)核心是通过
User-Agent让服务器识别为浏览器请求,这样分页参数才会生效。核对参数名称的正确性
打开浏览器开发者工具(F12),切换到「网络」面板刷新页面,查看实际请求的URL参数。部分场景下网站会调整参数名,比如用start替代offset,需以实际请求的参数为准。
二、确认是否仅返回美国区加密货币
可以通过两种方式验证:
- 检查URL的区域参数:如果URL中包含
region=US,说明默认返回美国区数据。若需切换区域,可修改该参数(如region=CN),但雅虎财经部分区域的数据访问可能存在限制。 - 对比不同区域的返回结果:修改
region参数后,观察返回的币种列表是否变化。如果列表差异明显,即可确认原URL返回的是美国区专属数据。
内容的提问来源于stack exchange,提问作者w0051977
相关产品推荐
相关产品推荐

