[英]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.