簡體   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