Requests

requests — это библиотека, с помощью которой можно делать запросы в интернет. Само слово "requests" переводится как запросы. Вот как сделать запрос на сайт google.com:

import requests


url = 'https://google.com'
response = requests.get(url)
response.raise_for_status()

Функция requests.get() делает запрос к сайту google.com, а в переменной response теперь ответ от сайта. Ответ — это не строка и не число. Это сложный объект, в котором есть много всего. Подробнее об этом можно посмотреть в слайдах.

Строчка response.raise_for_status() нужна для того, чтобы проверить, понял вас сервер или нет. Если сервер вернёт 404 «Ресурс не найден», то в response не будет странички сайта google.com, а будет только "Ошибка 404". Если не вызвать raise_for_status, программа подумает, что всё в порядке, что вы так и хотели: отправить запрос на страницу, которой нет. Обязательно вызывайте .raise_for_status() после каждого запроса в интернет, иначе вы рискуете потратить кучу времени на поиск ошибки, которую замалчивает библиотека requests.

Всегда вызывайте .raise_for_status()

Вот как получить текст ответа от сервера:

print(response.text)

В ответ вы получите огромный HTML-документ одной строкой. Начинаться будет так:

'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ru"><head>...'

Именно это получает ваш браузер, когда вы заходите на сайт google.com, и из этого он уже отрисовывает красивую страничку.

Но стоит понимать, что requests может скачивать не только HTML-документы, а буквально всё, что есть в интернете.

Вот как скачать картинку:

import requests


url = "https://dvmn.org/filer/canonical/1542890876/16/"

response = requests.get(url)
response.raise_for_status() 

filename = 'dvmn.svg'
with open(filename, 'wb') as file:
    file.write(response.content)

То же самое: делаем запрос по ссылке, получаем ответ, потом сохраняем его в файл. Единственное отличие в том, что вместо response.text для картинок используется response.content, потому что картинка — это не текст.

.text — для текста, .content — для картинки

Узнать больше


Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Хочу код-ревью