Jupyter Notebook中pandas读取CSV报HTTP错误如何解决?
问题说明
在Jupyter Notebook环境中调用pandas库的read_csv方法读取在线CSV文件时触发HTTP错误,调整URL写法、增减路径原始字符串标记r等操作均无法解决问题,已尝试的无效代码如下:
df_census=pd.read_csv(r"https://drive.google.com/file/d/1u8xnd9uz7wdya4r8j0tYoV0LHAQ1x-4H/view?usp=sharing.csv") df_census=pd.read_csv("https://drive.google.com/file/d/1u8xnd9uz7wdya4r8j0tYoV0LHAQ1x-4H/view?usp=sharing.csv") df_census=pd.read_csv("https://d17h27t6h515a5.cloudfront.net/topher/2017/November/5a0a554c_u.s.-census-data/u.s.-census-data.csv.")
错误原因
- 谷歌Drive带
/view后缀的地址是网页预览页,不是CSV文件的直链地址。pd.read_csv请求该地址时获取到的是HTML格式的预览页面,不是结构化CSV数据,必然触发HTTP相关解析错误。原始字符串标记r仅用于处理本地路径的转义字符,对HTTP链接读取无任何作用,增减该标记无法解决问题。 - 第三个Cloudfront链接末尾多了一个多余的
.,对应服务器路径不存在,会返回404状态码,无法获取文件。
可行解决方案
方案1:使用谷歌Drive文件直连格式读取
谷歌Drive公开文件可直接下载的固定路径格式为https://drive.google.com/uc?export=download&id=文件ID,从原分享链接中提取文件ID为1u8xnd9uz7wdya4r8j0tYoV0LHAQ1x-4H,替换后即可正常读取,代码如下:
import pandas as pd df_census = pd.read_csv("https://drive.google.com/uc?export=download&id=1u8xnd9uz7wdya4r8j0tYoV0LHAQ1x-4H")
注意:该方法仅适用于100M以下的公开分享文件,超过100M的文件谷歌Drive会触发安全拦截,无法直接通过该链接读取。
方案2:修正Cloudfront链接路径错误
删除原Cloudfront链接末尾多余的点号,即可访问到正确的CSV源文件,代码如下:
import pandas as pd df_census = pd.read_csv("https://d17h27t6h515a5.cloudfront.net/topher/2017/November/5a0a554c_u.s.-census-data/u.s.-census-data.csv")
通用排错技巧
- 读取在线CSV前,先将URL复制到浏览器地址栏访问,确认可以直接看到CSV原始文本或触发文件下载,而非跳转到网页预览页、错误提示页,再将URL传入
read_csv调用。 - 原始字符串标记
r仅在读取Windows本地路径(路径中含\转义字符)时需要,读取HTTP在线链接时不需要特意添加或删除该标记,该操作不影响请求结果。 - 读取完成后可执行
df_census.head()查看前5行数据,确认数据加载正常。
内容的提问来源于stack exchange,提问作者Nasir Elwatn
相关产品推荐
相关产品推荐

