Python3读取网站CSV文件遇HTTPError报错,求解决方法
解决思路及方案
出现HTTPError的核心原因是目标网站的反爬机制拦截了pandas默认的请求——pd.read_csv()发送的HTTP请求未携带符合浏览器标准的请求头,被服务器判定为非合法请求。以下是具体解决方法:
方法一:模拟浏览器请求头获取数据
使用requests库手动添加浏览器请求头,先获取CSV内容再传给pandas处理:import pandas as pd import requests url = "https://www.w3resource.com/python-exercises/pandas/plotting/alphabet_stock_data.csv" # 模拟主流浏览器的请求头,可根据自身浏览器版本调整 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" } # 发送请求并验证状态 response = requests.get(url, headers=headers) response.raise_for_status() # 请求失败时直接抛出异常 # 将响应内容转为pandas可读取的对象 data = pd.read_csv(pd.io.common.StringIO(response.text))方法二:本地下载后读取
若不想处理请求头逻辑,直接在浏览器中打开目标URL,将CSV文件下载到本地,再读取本地文件:import pandas as pd # 替换为你本地文件的实际路径 data = pd.read_csv("./alphabet_stock_data.csv")前置检查:确认URL有效性
先在浏览器中访问该URL,确认是否能正常加载并下载CSV文件。如果浏览器也无法访问,说明该URL已失效,需要更换为有效的数据源地址。
内容的提问来源于stack exchange,提问作者Sophia
相关产品推荐
相关产品推荐

