Перейти к содержимому

Какой модуль стандартной библиотеки python позволяет работать с www на более низком уровне

  • автор:

urllib — URL handling modules¶

urllib is a package that collects several modules for working with URLs:

urllib.request for opening and reading URLs

urllib.error containing the exceptions raised by urllib.request

urllib.robotparser for parsing robots.txt files

Previous topic
Next topic

This Page

Navigation

  • index
  • modules |
  • next |
  • previous | »

© Copyright 2001-2023, Python Software Foundation.
This page is licensed under the Python Software Foundation License Version 2.
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
See History and License for more information.

The Python Software Foundation is a non-profit corporation. Please donate.

Last updated on Sep 08, 2023. Found a bug?
Created using Sphinx 4.5.0.

КАКОЙ МОДУЛЬ СТАНДАРТНОЙ БИБЛИОТЕКИ PYTHON ПОЗВОЛЯЕТ РАБОТАТЬ С WWW НА БОЛЕЕ НИЗКОМ УРОВНЕ

Стандартная библиотека Python содержит модуль socket , который предоставляет возможность работать с сетью на низком уровне. Этот модуль позволяет осуществлять прямой доступ к сокетам, используемым для передачи данных по сети.

Чтобы выполнить HTTP-запрос, необходимо установить соединение с сервером, сформировать HTTP-запрос и отправить его. В следующем примере показано, как выполнить GET-запрос к серверу Google:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((‘www.google.com’, 80))
s.sendall(b’GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n’)
data = s.recv(1024)
s.close()
print(repr(data))

В этом примере мы создаем сокет и устанавливаем соединение с сервером Google на порту 80. Затем мы отправляем GET-запрос, запросив содержимое корневой страницы. Наконец, мы получаем ответ от сервера и закрываем соединение с сокетом.

Хотя модуль socket предоставляет возможность осуществлять прямой доступ к сокетам, использование этого модуля может быть достаточно сложным для большинства задач, связанных с работой в сети. В таких случаях рекомендуется использовать более высокоуровневые библиотеки, такие как http.client или urllib.request .

Python ТОП 10 крутейших библиотек!

Python requests http, https запросы, requests методы get и post, подключаемся к api через python

Работа с сетью в Python: Socket и HTTP. Python Advanced. Урок 1

Основы NumPy Python — Массивы, Матрицы И Операции Над Ними

Работа с HTTP в Python. Библиотека requests. Модули в Python

Python с нуля. Урок 8 — Модули

Язык программирования Python — что на нем пишут, сколько за него платят

5 Лучших Библиотек Для Программирования На Python — Библиотеки Которые Должен Знать Каждый

#5. Математические функции и работа с модулем math — Python для начинающих

Тест с ответами: “Python”

1. Как используется строка Main Heading в следующем примере:

а) в качестве заглушки, чтобы в средствах визуального форматирования было видно, что форматируется +
б) в качестве имени переменной для макроподстановки
в) содержит значение, на которое можно сослаться в другом месте документа

2. Что делает метод normalize() DOM-объекта:
а) готовит XML для красивого вывода
б) сводит воедино все идущие подряд текстовые узлы +
в) исправляет XML, добавляя пропущенные теги

5. Дан массив >>> c = array([[1,2], [2,3], [4,5]])
Чему равен срез c[:,1]:
а) array([1, 2, 4])
б) array([2, 3])
в) array([2, 3, 5]) +

6. Какие новые имена появятся в текущем модуле после выполнения следующего кода:
import sre as re
from re import compile
а) имена sre, re и compile
б) только имена re и compile +
в) только имена sre и compile

7. Чему будет равен результат выполнения:
urlparse.urlsplit(“http://google.com/search?q=Python#1″):
а) (‘http’, ‘google.com’, ‘/search’, ”, ‘q=Python’, ‘1’)
б) (‘http://’, ‘google.com/’, ‘search?’, ‘q=Python#’, ‘1’)
в) (‘http’, ‘google.com’, ‘/search’, ‘q=Python’, ‘1’) +

8. Для чего применяется метод nextset() объекта-курсора:
а) для перехода к следующему набору записей результата запроса +
б) для перехода к следующей записи результата запроса
в) для получения следующего набора записей результата запроса

9. В каком модуле нужно искать функции, помогающие тестировать программу:
а) dictutils
б) profile
в) unittest +

10. Каким образом в модуле poplib представлен сеанс работы с POP3-сервером:
а) набор функций
б) экземпляр класса РОРЗ +
в) список кортежей

11. Какой из перечисленных обработчиков mod_python выполняется раньше других:
а) PythonPostReadRequestHandler +
б) PythonHandler
в) PythonFixupHandler

12. Что будет получено в результате вычисления следующего выражения:
(0 а) True (или 1)
б) False (или 0) +
в) синтаксическая ошибка

13. Какое из приведенных ниже регулярных выражений некорректно:
а) a+b++ +
б) (?P (ac))
в) (a+b+)+

14. Зачем в XML пространства имен:
а) пространства имен позволяют указывать опции для приложения, обрабатывающего XML
б) пространства имен позволяют включать однотипные XML-документы друг в друга
в) для сочетания в одном документе XML с различными DTD +

15. Что такое регулярное выражение:
а) шаблон, описывающий множество строк +
б) синтаксически правильное выражение на языке Python
в) шаблон для поиска файлов в каталоге

16. Для чего нужны функции модуля gettext:
а) для получения текста от пользователя
б) для обеспечения интернационализации программы +
в) для чтения строки со стандартного ввода

17. Какое значение threadsafety соответствует ситуации, когда потоки могут одновременно использовать как DB-API 2.0 совместимый модуль, так и соединения, получаемые на основе этого модуля:
а) 1
б) 0
в) 2 +

18. Можно ли в XML использовать собственные теги:
а) нельзя
б) можно +
в) можно, если указаны пространства имен

19. Экземпляры какого класса сочетают замок и средство коммуникации между потоками:
а) Event
б) Lock
в) Condition +

20. Как средствами самого Python определить имена формальных аргументов функции func(), если известно, что функция написана на Python:
а) func.func_globals
б) inspect.getargspec(func) +
в) func.func_locals

21. Какие кодировки исходного текста программы поддерживает интерпретатор Python:
а) большинство кодировок, распространенных сегодня +
б) ASCII, Latin-1, UTF-8
в) ASCII

22. Какой метод позволяет узнать, имеет ли данное сообщение несколько частей:
а) items()
б) get_main_type() +
в) get_payload()

23. Какой метод позволяет узнать, имеет ли данное сообщение несколько частей:
а) items()
б) get_payload()
в) is_multipart() +

24. Что включает в себя Zope:
а) поддержку CGI-сценариев
б) поддержку сценариев DTML +
в) СУБД общего назначения

25. Что включает в себя Zope:
а) СУБД общего назначения
б) поддержку CGI-сценариев
в) собственный web-сервер +

26. Как перевести Unicode-строку u в кодировку koi8-r:
а) u.decode(‘koi8-r’)
б) u.encode(‘koi8-r’) +
в) string.decode(u, ‘koi8-r’)

27. К какому уровню модели взаимодействия открытых систем относится протокол FTP:
а) приложений +
б) представления
в) сетевому

28. Какая встроенная функция Python лучше всего подходит для цепочечных вычислений (в частности, вычислений значения многочлена по схеме Горнера):
а) chain()
б) map()
в) reduce() +

29. Какой модуль стандартной библиотеки Python позволяет работать с WWW на более низком уровне:
а) httplib +
б) urlparse
в) urllib2

30. Сокрытие информации о внутреннем устройстве объекта, при котором вся работа с объектом ведется только через общедоступный интерфейс называется:
а) абстракцией
б) инкапсуляцией +
в) агрегацией

Тест с ответами: “Python”

Похожие записи

Тест по информатике Управление компьютером с помощью мыши для 5 класса

Тест по информатике Управление компьютером с помощью мыши для 5 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 8 заданий с выбором ответа. 1 вариант— Читать далее

Тест по информатике Разнообразие систем. Состав и структура системы для 6 класса

Тест по информатике Разнообразие систем. Состав и структура системы для 6 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 10 заданий с выбором ответа. 1— Читать далее

Тест по информатике Главное меню. Запуск программ для 5 класса

Тест по информатике Главное меню. Запуск программ для 5 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 9 заданий с выбором ответа. 1 вариант 1.— Читать далее

Тест по информатике Что можно выбрать в компьютерном меню для 5 класса

Тест по информатике Что можно выбрать в компьютерном меню для 5 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 10 заданий с выбором ответа. 1— Читать далее

Тест по информатике Система и окружающая среда. Система как «чёрный ящик» для 6 класса

Тест по информатике Система и окружающая среда. Система как «чёрный ящик» для 6 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 8 заданий с выбором— Читать далее

Тест по информатике Компьютер как надсистема и подсистема для 6 класса

Тест по информатике Компьютер как надсистема и подсистема для 6 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 5 заданий с выбором ответа. 1 вариант— Читать далее

Тест по информатике Пользовательский интерфейс для 6 класса

Тест по информатике Пользовательский интерфейс для 6 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 6 заданий с выбором ответа. 1 вариант 1. Что такое— Читать далее

Тест по информатике Информация и знания для 6 класса

Тест по информатике Информация и знания для 6 класса с ответами. Тест включает в себя 2 варианта, в каждом варианте 7 заданий с выбором ответа. 1 вариант 1. Верно— Читать далее

Библиотека Requests для Python: код и практика

Разбираемся в методах работы с HTTP-запросами в Python на практике.

Иллюстрация: Катя Павловская для Skillbox Media

Антон Яценко

Библиотека Requests для Python позволяет работать с HTTP-запросами любого уровня сложности, используя простой синтаксис. Это помогает не тратить время на написание кода, а быстро взаимодействовать с серверами.

Почему стоит выбрать Requests?

Python Requests — это библиотека, которая создана для быстрой и простой работы с запросами. Стандартные HTTP-библиотеки Python, например та же Urllib3, часто требуют значительно больше кода для выполнения одного и того же действия, а это затрудняет работу. Давайте сравним код для простой задачи, написанный с помощью Urllib3 и Requests.

Количество строк различается в два раза: на Urllib3 — восемь строк, а на Requests — четыре. И это только один небольшой запрос.

Устанавливаем библиотеку

Писать код на Python лучше всего в специальной IDE, например в PyCharm или Visual Studio Code. Они подсвечивают синтаксис и предлагают автодополнение кода — это сильно упрощает работу программиста. Весь код из этой статьи мы писали в Visual Studio Code.

Для начала работы с библиотекой Requests её необходимо установить в IDE. Для этого откройте IDE и введите команду в терминале:

Библиотека готова к работе. Остаётся только импортировать её:

Используем метод GET

Из всех HTTP-запросов наиболее часто используется GET. Он позволяет получить данные из указанного источника — обычно с какого-то веб-сайта. Чтобы отправить GET-запрос, используется метод requests.get(), в который в качестве параметра добавляется URL-адрес назначения:

Этот код совершает одно действие — связывается с указанным адресом и получает от сервера информацию о нём. Когда вы вводите домен в адресную строку браузера и переходите на сайт, под капотом выполняются те же самые операции. Единственное различие в том, что Requests позволяет получить чистый HTML-код страницы без рендеринга, то есть мы не видим вёрстку и разные визуальные компоненты — только код и техническую информацию.

Для проверки ответа на запрос существуют специальные НТТР-коды состояния. Чтобы воспользоваться ими, необходимо присвоить запрос переменной и «распечатать» её значение:

Если запустить этот код, то в терминале выведется <Response [200]>. Это хороший результат — значит, запрос прошёл успешно. Но бывают и другие HTTP-коды состояний.

HTTP-коды состояний

Коды состояний имеют вид трёхзначных чисел от 100 до 500. Чаще всего встречаются следующие:

  • 200 — «OK». Запрос прошёл успешно, и мы получили ответ.
  • 400 — «Плохой запрос». Его получаем тогда, когда сервер не может понять запрос, отправленный клиентом. Как правило, это указывает на неправильный синтаксис запроса, неправильное оформление сообщения запроса и так далее.
  • 401 — «Unauthorized». Для выполнения запроса необходимы актуальные учётные данные.
  • 403 — «Forbidden». Сервер понял запрос, но не может его выполнить. Например, у используемой учётной записи нет достаточных прав для просмотра содержимого.
  • 404 — «Не найдено». Сервер не нашёл содержимого, соответствующего запросу.

Кодов состояния намного больше. С полным списком можно ознакомиться здесь.

Получаем содержимое страницы

Для получения содержимого страницы используется метод content. Он позволяет получить информацию в виде байтов, то есть в итоге у нас будет вся информация, не только строковая. Запустим его и посмотрим на результат:

Информацию из байтового вида в строковый можно декодировать с помощью метода text:

В обоих случаях мы получаем классический JSON-текст, который можно использовать как словарь, получая доступ к нужным значениям по известному ключу.

HTTP-заголовки в ответе

Заголовки ответа — важная часть запроса. Хотя в них и нет содержимого исходного сообщения, зато там можно обнаружить множество важных деталей ответа: информация о сервере, дата, кодировка и так далее. Для работы с ними используется метод headers:

Зачем это надо? Например, таким образом мы можем узнать дату и время на сервере в момент получения запроса. В нашем случае ответ пришёл 9 марта в 05:45:28 GMT. Это помогает логировать действия для их последующей оценки, например, при поиске ошибок выполнения.

HTTP-методы в Python

Метод Описание
GET GET-метод используется для обычного запроса к серверу и получения информации по URL.
POST Метод запроса POST запрашивает веб-сервис для приёма данных, например для хранения информации.
PUT Метод PUT просит, чтобы вложенный в него объект был сохранён под определённым URI . Если URI ссылается на уже существующий ресурс, он модифицируется, а если URI указывает на несуществующий ресурс, сервер может создать новый ресурс с этим URI.
DELETE Метод DELETE удаляет объект с сервера.
HEAD Метод HEAD запрашивает ответ, идентичный запросу GET, но без тела ответа.
PATCH Метод используется для модификации информации на сервере.

Python Requests: параметры запроса

Запрос GET можно настроить с помощью передачи параметров в методе params. Посмотрим, как это работает на простом примере — попробуем найти изображение на фотостоке Pixabay.

Для начала создадим переменную, которая будет содержать необходимые нам параметры:

Наш запрос для поиска изображений на стоке Pixabay представлен словарём, где:

  • q — передаём ключевые слова для поиска;
  • order — порядок фильтрации поиска, в нашем случае — по популярности;
  • min_width и min_height — минимальная ширина и высота соответственно.

Напишем запрос и посмотрим на результат выполнения:

В ответе мы получим ссылку с нужными параметрами запроса:

Откроём её в браузере:

Всё получилось. У нас правильно настроена сортировка и размеры изображений.

Requests и аутентификация HTTP

Аутентификацию используют в тех случаях, когда сервис должен понять, кто вы. Например, это часто необходимо при работе с API. Аутентификация в библиотеке Requests очень простая — для этого достаточно использовать параметр с именем auth. Попробуем написать код для доступа к API GitHub. Для него вам потребуются данные учётной записи на сервисе — логин и пароль. Поставьте их в нужные места кода:

При запуске кода вам будет необходимо ввести пароль от своего профиля. Если пароль правильный, вернётся ответ 200, если нет — 401.

Работа с SSL-сертификатами в Requests

SSL-сертификат указывает на то, что установленное через HTTP соединение безопасно и зашифровано. Важно, что библиотека Requests не только умеет работать с SSL-сертификатами «из коробки», но и позволяет настраивать взаимодействие с ними. Для примера отключим проверку SSL-сертификата, передав параметру функции запроса verify значение False:

Мы видим, что ответ на запрос содержит предупреждение о неверифицированном сертификате. Всё дело в том, что мы отключили его получение вручную в коде выше с помощью функции verify.

Контролируем выполнение запросов с помощью класса Session

Метод GET позволяет работать с запросами на высоком уровне абстракции, не разбираясь в деталях их выполнения, при этом надо настроить лишь базовые параметры.

Однако возможности библиотеки Requests на этом не заканчиваются: с помощью класса Session мы можем контролировать выполнение запросов и увеличивать скорость их выполнения.

Класс Session позволяет создавать сеансы — базовые запросы с сохранёнными параметрами (то есть без повторного указания параметров).

Напишем код для простой сессии, позволяющей получить доступ к GitHub:

Запустим его и введём пароль. Как видим, всё сработало:

Запрос возвращает информацию с сервера при этом работает с помощью session. То есть теперь нам не придётся вводить повторные параметры авторизации при следующих запросах.

Что дальше?

Библиотека Requests — простой инструмент для работы с HTTP-запросами разного уровня сложности. Рекомендуем подробно изучить возможности библиотеки, методы и примеры их использования в официальной документации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *