Скачать файлы с Python

Загрузка файлов с различных сетевых ресурсов - одна из наиболее важных и распространенных задач программирования, выполняемых в Интернете. Важность загрузки файлов может быть подчеркнута тем фактом, что огромное количество успешных приложений позволяет пользователям загружать файлы. Вот лишь несколько функций веб-приложений, требующих загрузки файлов: * Совместное использование файлов * Анализ данных * Получение кода веб-сайта (CSS, JS и т. Д.) * Социальные сети. Это лишь некоторые из приложений, которые

Загрузка файлов с различных сетевых ресурсов - одна из наиболее важных и распространенных задач программирования, выполняемых в Интернете. Важность загрузки файлов может быть подчеркнута тем фактом, что огромное количество успешных приложений позволяет пользователям загружать файлы. Вот лишь несколько функций веб-приложений, требующих загрузки файлов:

  • Обмен файлами
  • Сбор данных
  • Получение кода веб-сайта (CSS, JS и т. Д.)
  • Социальные медиа

Это лишь некоторые из приложений, которые приходят на ум, но я уверен, что вы можете придумать гораздо больше. В этой статье мы рассмотрим некоторые из самых популярных способов загрузки файлов с помощью Python.

Использование модуля urllib.request

Модуль urllib.request используется для открытия или загрузки файла через HTTP. В частности, urlretrieve этого модуля - это то, что мы будем использовать для фактического получения файла.

Чтобы использовать этот метод, вам необходимо передать два аргумента urlretrieve : первый аргумент - это URL-адрес ресурса, который вы хотите получить, а второй аргумент - это путь к локальному файлу, в котором вы хотите сохранить загруженный файл.

Давайте посмотрим на следующий пример:

 import urllib.request 
 
 print('Beginning file download with urllib2...') 
 
 url = 'http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg' 
 urllib.request.urlretrieve(url, '/Users/scott/Downloads/cat.jpg') 

В приведенном выше коде мы сначала импортируем модуль urllib.request Затем мы создаем url переменной, который содержит путь к загружаемому файлу. Наконец, мы вызываем urlretrieve и передаем ему url в качестве первого аргумента, «/Users/scott/Downloads/cat.jpg» в качестве второго параметра для места назначения файла. Имейте в виду, что вы можете передать любое имя файла в качестве второго параметра, и это местоположение и имя, которое будет иметь ваш файл, при условии, что у вас есть правильные разрешения.

Запустите указанный выше сценарий и перейдите в каталог «Загрузки». Вы должны увидеть загруженный файл с именем «cat.jpg».

Примечание . Этот urllib.request.urlretrieve считается «устаревшим интерфейсом» в Python 3, и в какой-то момент в будущем он может стать устаревшим. Из-за этого я бы не рекомендовал использовать его в пользу одного из методов ниже. Мы включили его сюда из-за его популярности в Python 2.

Использование модуля urllib2

Другой способ загрузки файлов в Python - через модуль urllib2. urlopen метод модуля urllib2 возвращает объект, содержащий данные файла. Чтобы прочитать содержание

Обратите внимание, что в Python 3 urllib2 был объединен с urllib как urllib.request и urllib.error . Поэтому этот скрипт работает только в Python 2.

 import urllib2 
 
 filedata = urllib2.urlopen('http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg') 
 datatowrite = filedata.read() 
 
 with open('/Users/scott/Downloads/cat2.jpg', 'wb') as f: 
 f.write(datatowrite) 

open метод принимает два параметра: путь к локальному файлу и режим, в котором будут записаны данные. Здесь «wb» указывает, что open метод должен иметь разрешение на запись двоичных данных в данный файл.

Выполните приведенный выше сценарий и перейдите в каталог «Загрузки». Вы должны увидеть загруженный PDF-документ как «cat2.jpg».

Использование модуля запроса

Вы также можете скачивать файлы с помощью модуля запросов. Метод get requests используется для загрузки содержимого файла в двоичном формате. Затем вы можете использовать open чтобы открыть файл в вашей системе, как и в предыдущем методе urllib2.urlopen .

Взгляните на следующий сценарий:

 import requests 
 
 print('Beginning file download with requests') 
 
 url = 'http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg' 
 r = requests.get(url) 
 
 with open('/Users/scott/Downloads/cat3.jpg', 'wb') as f: 
 f.write(r.content) 
 
 # Retrieve HTTP meta-data 
 print(r.status_code) 
 print(r.headers['content-type']) 
 print(r.encoding) 

В приведенном выше сценарии open снова используется для записи двоичных данных в локальный файл. Если вы выполните приведенный выше сценарий и перейдете в каталог «Загрузки», вы должны увидеть только что загруженный файл JPG с именем «cat3.jpg».

С помощью requests вы также можете легко получить соответствующие метаданные о своем запросе, включая код состояния, заголовки и многое другое. В приведенном выше сценарии вы можете увидеть, как мы получаем доступ к некоторым из этих метаданных.

То же самое касается дополнительных параметров, которые требуются для HTTP-запроса GET. Например, если вам нужно добавить заголовки клиентов, все, что вам нужно сделать, это создать dict со своими заголовками и передать его в запрос на get

 headers = {'user-agent': 'test-app/0.0.1'} 
 r = requests.get(url, headers=headers) 

Есть тонны больше возможностей и функции этой библиотеки, поэтому проверить их большое руководство пользователя для получения дополнительной информации о том , как использовать его.

Использование модуля wget

Один из самых простых способов загрузки файлов в Python - через модуль wget , который не требует открытия файла назначения. Метод download wget загружает файлы всего в одну строку. Метод принимает два параметра: URL-путь к файлу для загрузки и локальный путь, по которому файл должен быть сохранен.

 import wget 
 
 print('Beginning file download with wget module') 
 
 url = 'http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg' 
 wget.download(url, '/Users/scott/Downloads/cat4.jpg') 

Выполните приведенный выше сценарий и перейдите в каталог «Загрузки». Здесь вы должны увидеть недавно загруженный файл «cat4.jpg».

Заключение

В этой статье мы представили четыре наиболее часто используемых метода загрузки файлов на Python. Лично я предпочитаю использовать request для загрузки файлов из-за его простоты и мощности. Однако у вашего проекта могут быть ограничения, мешающие вам использовать сторонние библиотеки, и в этом случае я бы использовал urllib2 (для Python 2) или urllib.request (для Python 3).

Какую библиотеку вы предпочитаете и почему? Дайте нам знать об этом в комментариях!

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus