Я пытаюсь загрузить файл PDF с веб-сайта и сохранить его на диск. Мои попытки или перестали работать с кодированием ошибок или результата в пустом PDFs.
In [1]: import requests
In [2]: url = 'http://www.hrecos.org//images/Data/forweb/HRTVBSH.Metadata.pdf'
In [3]: response = requests.get(url)
In [4]: with open('/tmp/metadata.pdf', 'wb') as f:
...: f.write(response.text)
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-4-4be915a4f032> in <module>()
1 with open('/tmp/metadata.pdf', 'wb') as f:
----> 2 f.write(response.text)
3
UnicodeEncodeError: 'ascii' codec can't encode characters in position 11-14: ordinal not in range(128)
In [5]: import codecs
In [6]: with codecs.open('/tmp/metadata.pdf', 'wb', encoding='utf8') as f:
...: f.write(response.text)
...:
Я знаю, что это - проблема кодека некоторого вида, но я, может казаться, не заставляю это работать.
Обратите внимание, что я - новичок. Если Мое решение неверно, не стесняйтесь исправлять и/или сообщать мне. Я могу изучить что-то новое также.
Мое решение:
Изменение downloadPath соответственно туда, где Вы хотите, чтобы Ваш файл был сохранен. Не стесняйтесь использовать полный путь также для Вашего использования.
Сохраняют ниже как downloadFile.py.
Использование: python downloadFile.py url-of-the-file-to-download new-file-name.extension
Не забывают добавлять расширение!
использование В качестве примера: python downloadFile.py http://www.google.co.uk google.html
import requests
import sys
import os
def downloadFile(url, fileName):
with open(fileName, "wb") as file:
response = requests.get(url)
file.write(response.content)
scriptPath = sys.path[0]
downloadPath = os.path.join(scriptPath, '../Downloads/')
url = sys.argv[1]
fileName = sys.argv[2]
print('path of the script: ' + scriptPath)
print('downloading file to: ' + downloadPath)
downloadFile(url, downloadPath + fileName)
print('file downloaded...')
print('exiting program...')