Гайд Как скачать файлы

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

добавление данных формы,
добавление составных файлов,
и доступ к данным ответа Python


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




1pip install requests


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




1import requests


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

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

GET
POST
PUT
DELETE
OPTIONS
HEAD

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




1
2
import requests
req = requests.get("Google")


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




1
2
3
4
5
6
import requests
req = requests.get(“Google")
req.status_code
200

# 200 means a successful request


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




1
2
req.encoding
ISO-8859–1


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




1req.text


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




1
2
3
4
5
6
7
'<!doctype html><html itemscope="" itemtype="WebPage - Schema.org Type" 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 используется для создания или обновления данных. Особенно при отправке данных форм.

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




1
2
3
data = {"email":"info@tutsplus.com",
"password":"12345")
req = requests.post(“Google, params = data)


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




1
2
3
data= {"name":"tutsplus",
"telephone":"12345")
r.put("Unlock Success with Premium Domain Names, params= data")


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


1
2
3
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 заключается в следующем:




1
2
3
import urllib.request
with urllib.request.urlopen('Welcome to Python.org') as response:
html = response.read()


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




1
2
3
import urllib.request
filename, headers = urllib.request.urlretrieve('Welcome to Python.org')
html = open(filename)


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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
url = 'https://static.googleusercontent.co...eblogs/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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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")

Скачивание видео

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
url = '
'
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
 
Сверху Снизу