在python中下载文件时如何解决SSL错误?

时间:2019-05-06 02:21:02

标签: python ssl-certificate

我要使用以下内容下载pdf文件:

异步定义get_file(URL,文件夹,会话):

filename = folder.strip('\\') + '\\' + str(datetime.datetime.now()).replace(':', '_') + '.pdf'

async with session.get(url, headers = headers) as resp:
    if resp.status == 200:
        f = await aiofiles.open(filename, mode='wb')
        await f.write(await resp.read())
        await f.close()

async def download_pdf(urls, folder):
    connector = aiohttp.TCPConnector(limit=60)
    semaphore = asyncio.Semaphore(10)
    async with aiohttp.ClientSession() as session:
        async with semaphore:
            async with ClientSession(connector=connector, headers=headers) as session:
                tasks = [get_file(url, folder, session) for url in urls]
                result = await asyncio.gather(*tasks)

urls = ['https://www.ttzqnews.com/uploads/soft/1712/2-1G219152559.pdf']
directory = r'C:\data'
asyncio.run(download_pdf(urls, directory))

我收到以下错误。

SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x00000280B59C1CC0>
transport: <_SelectorSocketTransport closing fd=4304 read=idle write=<idle, bufsize=0>>
Traceback (most recent call last):
  File "C:\Program Files\Python37\lib\asyncio\sslproto.py", line 526, in data_received
    ssldata, appdata = self._sslpipe.feed_ssldata(data)
  File "C:\Program Files\Python37\lib\asyncio\sslproto.py", line 189, in feed_ssldata
    self._sslobj.do_handshake()
  File "C:\Program Files\Python37\lib\ssl.py", line 763, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

我添加了pip.ini文件,但是它不能解决问题。

我该怎么办?

谢谢。

0 个答案:

没有答案