使用Pandas读取实时CSV文件遇404/403错误求助
解决读取实时CSV时的403/404及请求错误问题
核心原因
服务器返回403/404通常是因为请求未携带合法的请求头,服务器会拦截无标识或不符合规范的请求,判断为非浏览器发起的访问而拒绝。
解决方案:模拟浏览器请求头
通过requests库携带完整的浏览器请求头获取CSV内容,再传入Pandas解析,避免直接用pd.read_csv()的默认请求(无请求头)被拦截。
步骤1:构造合法请求头
至少需要添加User-Agent(模拟浏览器标识),可选添加Referer(来源页)提升请求合法性:
import requests import pandas as pd from io import StringIO # 构造请求头 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', 'Referer': 'https://www.highcharts.com/' } # 发送请求并解析CSV url = 'https://demo-live-data.highcharts.com/time-data.csv' response = requests.get(url, headers=headers) response.raise_for_status() # 触发请求错误便于排查 df = pd.read_csv(StringIO(response.text))
步骤2:排查BeautifulSoup使用错误
CSV是纯文本格式,不需要用BeautifulSoup处理——如果用它操作CSV出现错误,本质是用错了工具,直接通过requests获取文本后交给Pandas即可。
额外注意事项
- 若仍返回404,确认目标URL是否已变更(部分实时数据接口会定期更新地址);
- 频繁请求被拦截时,可添加请求间隔(
time.sleep(1)),避免被判定为爬虫; - 部分服务器会校验
Cookie,若上述方法无效,可从浏览器开发者工具中复制真实请求的Cookie添加到请求头中。
内容的提问来源于stack exchange,提问作者Mohit Narwani
相关产品推荐
相关产品推荐

