我无法使用这段代码下载文件:
import requests
response = requests.get('https://download.inep.gov.br/informacoes_estatisticas/indicadores_educacionais/taxa_transicao/tx_transicao_municipios_2019_2020.zip', stream=True, verify=False)
with open('tx_transicao_municipios_2019_2020.zip', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
即使设置了 verify=False,我仍然收到此错误:
urllib3.exceptions.SSLError:[SSL:UNEXPECTED_EOF_WHILE_READING] EOF 发生违反协议(_ssl.c:1006)
使用 Chrome 时,我可以下载该文件。
使用 verify=certifi.where() 也不起作用。
还在 MacOS Catalina (10.15) 和 MacOS Big Sur (11.x) 中尝试过,但没有成功。
我在这里做错了什么?
尝试:
import ssl
import warnings
import requests
import requests.packages.urllib3.exceptions as urllib3_exceptions
warnings.simplefilter("ignore", urllib3_exceptions.InsecureRequestWarning)
class TLSAdapter(requests.adapters.HTTPAdapter):
def init_poolmanager(self, *args, **kwargs):
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.set_ciphers("DEFAULT@SECLEVEL=1")
ctx.options |= 0x4
kwargs["ssl_context"] = ctx
return super(TLSAdapter, self).init_poolmanager(*args, **kwargs)
url = "https://download.inep.gov.br/informacoes_estatisticas/indicadores_educacionais/taxa_transicao/tx_transicao_municipios_2019_2020.zip"
with requests.session() as s:
s.mount("https://", TLSAdapter())
response = s.get(url, verify=False, stream=True)
with open("tx_transicao_municipios_2019_2020.zip", "wb") as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
下载
tx_transicao_municipios_2019_2020.zip
:
-rw-r--r-- 1 root root 17298416 okt 16 20:04 tx_transicao_municipios_2019_2020.zip