грамматика
requests.nameofmethod(parameters)
Предыстория и начало работы
Библиотека _requests_ имеет несколько методов GET.первая частьиВторая частьвключает в себя множествоrequests.get()
. Основное внимание в этом посте уделяется остальным методам GET и обработке ошибок.
Если библиотека запросов не существует на вашем компьютере, просмотритепервая частьинструкция о.
"получить" запрос "заголовок"
По умолчанию это значение равноNone
. еслиTrue
, HTTPS-заголовокСловарьбудут переданы на указанный URL.
Когда создается HTTP_REQUEST_, вместе с запросом передается строка User-Agent, эта строка содержит следующие сведения о вашей системе.
- Тип приложения
- Операционная система
- поставщик программного обеспечения
- Версия программного обеспечения запрошенного пользовательского агента
Сервер использует эти сведения для определения возможностей вашего компьютера.
В этом примере этот код отправит свои заголовки на сервер:
- Строка [1] импорт
request
библиотека - Строка [2] сохраняет корректную строку User-Agent в переменной _hdrs_.
- Строка [3] пытается подключиться к _URL_ с заголовком, установленным на _hdrs_
- Строка [4] выводит заголовок ответа на терминал
- Строка [5] закрывает открытое соединение
код
import requests
hdrs = {
"Connection": "keep-alive",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/72.0.3626.121 Safari/537.36"}
response = requests.get('https://app.finxter.com', headers=hdrs)
print(response.headers)
response.close()
вывод
{'Server': 'nginx/1.14.0 (Ubuntu)', 'Date': 'Fri, 05 Nov 2021 16:59:19 GMT', 'Content-Type': 'text/html; charset=utf-8',
'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'X-Frame-Options': 'DENY', 'Vary': 'Cookie', 'X-Content-Type-Options': 'nosniff', 'Set-Cookie': 'sessionid=0fb6y6y5d8xoxacstf74ppvacpmt2tin; expires=Fri, 19 Nov 2021 16:59:19 GMT; HttpOnly; Max-Age=19600; Path=/; SameSite=Lax', 'Content-Encoding': 'gzip'}
Уведомление: это отличная функция Python. Если вы заинтересованы в парсинге веб-страниц, вы можете углубиться в эту тему.
"получить" запрос "Агентство"
Если вы заядлый веб-скрейпер или вам нужно сохранить свою конфиденциальность в Интернете, используйте прокси-сервер. Прокси скрывает ваш IP-адрес от внешнего мира.
В этом примере мы получаем новый IP-адрес от бесплатного прокси-сервиса и добавляем его в словарь.
- Строка [1] импорт
request
библиотека - Строка [2] устанавливает URL в переменную _the_url_
- Строка [3] добавляет новый прокси в качестве словаря, на данный момент
- Строка [4] пытается подключиться к этому _URL_ и устанавливает прокси на _my_proxy_
- Строка [5] выводит ответ кода состояния на терминал.
- Строка [6] закрывает открытое соединение
код
import requests
the_url = 'https://somewebsite.com'
my_proxy = {"https": "https:157.245.222.225:3128"}
response = requests.get(the_url, proxies=my_proxy)
print(response.status_code)
response.close()
вывод
200
"получить" запрос. "поток"
Этот метод не является обязательным. По умолчанию это значение равноFalse
. еслиFalse
, передача ответа указывает на то, что файл должен быть загружен немедленно. еслиTrue
, файл передается
- Строка [1] импорт
request
библиотека - Строка [2] устанавливает _URL_ в местоположение логотипа, а поток — в _True_.
- Строка [3] выводит ответ кода состояния на терминал.
- Строка [4] закрывает открытое соединение
код
import requests
response = requests.get('https://app.finxter.com/static/favicon_coffee.png', stream=True)
print(response.status_code)
response.close()
вывод
200
Обработка исключений
Есть много исключений сrequest
'_s_ связанная с библиотекой
Есть два способа справиться с этой ситуацией
заниматься отдельно
В этом примере мы будемтайм-аутприбытьrequests.get()
. Если время ожидания соединения или сервера истекло, произойдет исключение:
- Строка [1] импорт
request
библиотека - Строка [2] инициализирует оператор _try_. Код здесь будет запускаться первым
- Строка [3] пытается подключиться к URL-адресу и устанавливает тайм-аут
- Строка [4] выводит код состояния на терминал
- Строка [5] закрывает открытое соединение
- Строка [6] — это оператор _except_. Если происходит _timeout_, код падает сюда
- Строка [7] выводит на терминал сообщение _Timed Out!_ и скрипт завершает работу.
код
import requests
try:
response = requests.get('https://app.finxter.com', timeout=(2,4))
print(response.status_code)
response.close()
except requests.ConnectTimeout():
print('Timed Out!')
вывод
200
все исключения
Все исключения в библиотеке запросов наследуются от request.exceptions.RequestException. В этом примере этот код перехватывает все исключения
- Строка [1] импорт
request
библиотека - Строка [2] инициализирует оператор _try_. Код здесь будет запускаться первым
- Строка [3] пытается подключиться к URL-адресу и устанавливает тайм-аут
- Строка [4] выводит код состояния на терминал
- Строка [5] закрывает открытое соединение
- Строка [6] — это оператор _except_, если возникнет какое-либо исключение, код попадет сюда
- Строка [7] выводит информацию об исключении (e) на терминал, и скрипт завершает работу.
код
import requests
try:
response = requests.get('https://app.finxter.com', timeout=(2,4))
print(response.status_code)
response.close()
except requests.exceptions.RequestException as e:
print(e)
вывод
200
Кроме того
Вы также можете преобразовать приведенное выше в повторно используемую функцию, изменив этот код в соответствии с различными потребностями.
код
def error_code(url):
try:
response = requests.get('https://app.finxter.c', timeout=(2,4))
except requests.exceptions.RequestException as e:
return e
nok = error_code('https://app.finxter.com')
print(nok)
Суммировать
В этой статье мы узнали как.
- использовать заголовочные файлы
- Воспользуйтесь агентством
- использовать поток
- Реализовать обработку исключений