繁体   English   中英

Pandas read_csv 无法下载 CSV 并出现 SSL 错误

[英]Pandas read_csv fails to download CSV with SSL Error

这是重现它的代码:

import pandas as pd
url = 'https://info.gesundheitsministerium.gv.at/data/timeline-faelle-bundeslaender.csv'
df = pd.read_csv(url)

它失败并出现以下回溯:

URLError: <urlopen error [SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1129)>

这是检查 url 的链接 如果您将链接嵌入到 Jupyter 中的 markdown 单元中,则可以从同一浏览器下载。

有什么想法可以让这个“正常工作”吗?

更新:

根据 Florin C 提出的问题。 以下,

此解决方案解决了通过请求下载时的问题:

import requests
import urllib3
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL:@SECLEVEL=1'

requests.get(url)

这只是以某种方式强制 Pandas 相同的问题。

我的环境:

Python implementation: CPython
Python version       : 3.9.7
IPython version      : 7.28.0

requests  : 2.25.1
seaborn   : 0.11.2
json      : 2.0.9
numpy     : 1.20.3
plotly    : 5.4.0
matplotlib: 3.5.0
lightgbm  : 3.3.1
pandas    : 1.3.4

Watermark: 2.2.0

如果您需要自动化该过程并且不想先下载 csv 然后从文件中读取,这是一个解决方案。

import requests
import urllib3
import io
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL:@SECLEVEL=1'

res = requests.get(url)
pd.read_csv(io.BytesIO(res.content), sep=';')

应该注意的是,在操作系统级别将默认密码更改为SECLEVEL=1可能不安全。 但是这个临时的改变应该没问题。

您的代码没有任何问题。 我确实认为 URL 存在问题,我尝试使用其他 URL 使用相同的代码并且它有效,我还注意到,如果您下载 csv 文件,然后使用 Z3A43B4F88325D94022C2FA2Z 读取文件,它应该也可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM