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

kcugc4gi  于 2023-09-29  发布在  其他
关注(0)|答案(1)|浏览(112)

下面是复制它的代码:

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)>

这里是一个link to check的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
lymnna71

lymnna711#

如果您需要自动化该过程,并且不想先下载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=';')

应该注意的是,在OS级别将默认密码更改为SECLEVEL=1可能不安全。不过这种暂时的改变应该是可以的。

相关问题