От автора: 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.