Как скачать файлы в Python

Как скачать файлы в Python

От автора: Python предоставляет несколько способов загрузки файлов из Интернета. Это можно сделать через HTTP, используя пакет urllib или библиотеку requests. В этом руководстве мы рассмотрим, как использовать эти библиотеки для загрузки файлов с URL-адресов с помощью Python.

requests

Библиотека requests является одной из самых популярных библиотек в Python. Она позволяет отправлять HTTP / 1.1 запросы без необходимости вручную добавлять строки запросов к URL-адресам или кодировать данные в форме POST. С помощью библиотеки requests вы можете выполнять множество вещей, в том числе:

добавление данных формы,

добавление составных файлов,

и доступ к данным ответа Python

Выполнение запросов

Первое, что вам нужно сделать, это установить библиотеку:

pip install requests

Чтобы проверить, была ли установка успешной, вы можете выполнить очень простой тест в интерпретаторе python, просто набрав:

import requests

Если установка прошла успешно, ошибок не будет.

HTTP-запросы включают в себя:

GET

POST

PUT

DELETE

OPTIONS

HEAD

Создание запроса GET

Вы можете выполнять запросы очень просто.

import requests
req = requests.get("http://www.google.com")

Приведенная выше команда получит веб-страницу Google и сохранит информацию в переменной req. Затем мы можем получить другие атрибуты. Например, чтобы узнать, была ли загрузка веб-страницы Google успешной, мы запросим код status_code.

import requests
req = requests.get(“http://www.google.com")
req.status_code
200 # 200 means a successful request

Что, если мы хотим выяснить тип кодировки веб-страницы Google?

req.encoding
ISO-8859–1

Вы также можете узнать содержание ответа.

req.text

Это только усеченное содержание ответа.

'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en
"><head><meta content="Search the world\'s information, including webpages, imag
es, videos and more. Google has many special features to help you find exactly w
hat you\'re looking for." name="description"><meta content="noodp" name="robots"
><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta conten
t="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image
"><title>Google</title><script>(function(){window.google={kEI:\'_Oq7WZT-LIf28QWv

Создание запроса POST

В общем, запрос POST используется для создания или обновления данных. Особенно при отправке данных форм.

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

data = {"email":"info@tutsplus.com", "password":"12345")
req = requests.post(“http://www.google.com, params = data)

Создание запроса PUT

Запрос PUT похож на POST. Он используется для обновления данных. Например, API ниже демонстрирует, как выполнить PUT-запрос.

data= {"name":"tutsplus", "telephone":"12345")
r.put("http://www.contact.com, params= data")

Создание запроса DELETE

Запрос DELETE, как следует из названия, используется для удаления данных. Ниже приведен пример DELETE-запроса.

data= {'name':'Tutsplus'}
url = "https://www.contact.com/api/")
response = requests.delete(url, params= data)

Пакет urllib

urllib это пакет, который собирает несколько модулей для работы с URL-адресами, а именно:

urllib.request для открытия и чтения URL.

urllib.error содержит исключения, поднятые urllib.request

urllib.parse для разбора URL-адресов.

urllib.robotparser для разбора файлов robots.txt.

urllib.request предлагает очень простой интерфейс в виде функции urlopen, способной извлекать URL-адреса с использованием различных протоколов. Она также предлагает немного более сложный интерфейс для обработки базовой аутентификации, файлов cookie, прокси и т. д.

Как получить URL с помощью urllib

Простейший способ использовать urllib.request заключается в следующем:

import urllib.request
with urllib.request.urlopen('http://python.org/') as response: html = response.read()

Если вы хотите получить интернет-ресурс и сохранить его, вы можете сделать это с помощью функции urlretrieve().

import urllib.request
filename, headers = urllib.request.urlretrieve('http://python.org/')
html = open(filename)

Загрузка изображений с помощью Python

В этом примере мы хотим загрузить изображение, доступное по этой ссылке, используя как библиотеку запроса, так и модуль urllib.

url = 'https://www.python.org/static/opengraph-icon-200x200.png' # downloading with urllib # imported the urllib library
import urllib # Copy a network object to a local file
urllib.urlretrieve(url, "python.png") # downloading with requests # import the requests library
import requests # download the url contents in binary format
r = requests.get(url) # open method to open a file on your system and write the contents
with open("python1.png", "wb") as code: code.write(r.content)

Скачивание PDF файлы с помощью Python

В этом примере мы скачиваем PDF-файл о трендах Google по этой ссылке.

url = 'https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf' # downloading with urllib # import the urllib package
import urllib # Copy a network object to a local file
urllib.urlretrieve(url, "tutorial.pdf") # downloading with requests # import the requests library
import requests # download the file contents in binary format
r = requests.get(url) # open method to open a file on your system and write the contents
with open("tutorial1.pdf", "wb") as code: code.write(r.content)

Скачивание Zip файлов с помощью Python

В этом примере мы собираемся скачать содержимое репозитория GitHub, расположенного по этой ссылке, и сохранить файл локально.

url = 'https://codeload.github.com/fogleman/Minecraft/zip/master' # downloading with requests # import the requests library
import requests # download the file contents in binary format
r = requests.get(url) # open method to open a file on your system and write the contents
with open("minemaster1.zip", "wb") as code: code.write(r.content) # downloading with urllib # import the urllib library
import urllib # Copy a network object to a local file
urllib.urlretrieve(url, "minemaster.zip")

Скачивание видео с помощью Python

В этом примере мы хотим скачать видео-лекцию, доступную на этой странице.

url = 'https://www.youtube.com/watch?v=aDwCCUfNFug'
video_name = url.split('/')[-1] # using requests # imported the requests library
import requests print "Downloading file:%s" % video_name # download the url contents in binary format
r = requests.get(url) # open method to open a file on your system and write the contents
with open('tutorial.mp4', 'wb') as f: f.write(r.content) # using urllib # imported the urllib library
import urllib
print "Downloading file:%s" % video_name # Copy a network object to a local file
urllib.urlretrieve(url, "tutorial2.mp4")

Заключение

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

Поддерживаемый поллинг

Международные домены и URL-адреса

Сессии с сохранением Cookie

Верификация SSL как в браузере

Автоматическое декодирование контента

Базовая / дайджест-аутентификация

Элегантные куки ключ / значение

Автоматическая декомпрессия

Тела ответа Unicode

Поддержка HTTP(S) Proxy

Загрузка нескольких файлов

Потоковые загрузки

Время ожидания подключения

Чанкированные запросы

Поддержки .netrc

Автор: Esther Vaati

Источник: https://code.tutsplus.com

Редакция: Команда webformyself.