Как эффективно скачивать файлы с помощью Python? - PullRequest
1 голос
/ 06 мая 2019

Я хочу скачать файлы.

Я использовал asyncio, но он долго не отвечал при загрузке файлов. Кроме того, возникают проблемы, когда сертификат сервера недействителен.

Вот мой код:

socket.setdefaulttimeout(30)
async def get_file(url, folder, session):
    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 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.example.com/abc.pdf', 'https://www.example2.com/def.pdf']
directory = r'C:\data'
asyncio.run(download_pdf(urls, directory))

Как до загрузить файлы эффективно ?

1 Ответ

0 голосов
/ 06 мая 2019

Используя библиотеку requests, вы можете передать свой ответ в файл:

with open(r"/path/to/file", 'w+b') as f:
    for chunk in requests.get(yourURL, stream=True).iter_content(chunk_size=1024):
        f.write(chunk)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...