Python requests or urllib2

Русские Блоги

[Сканер Python] Разница между запросами и библиотекой urllib

Когда мы используем сканер python, нам необходимо имитировать инициирование сетевых запросов. Основные используемые библиотеки — это библиотека запросов и встроенная библиотека urllib Python. Обычно рекомендуется использовать запросы. Это повторная инкапсуляция urllib. Основные различия между ними:
запросы могут напрямую создавать и инициировать общие запросы получения и публикации. urllib обычно сначала создает запросы на получение или отправку, а затем инициирует запрос.

import requests Response_get = requests.get(url, params=None, **kwargs) Response_post = requests.post(url, data=None, json=None, **kwargs)

Что я получаю после вышеуказанного запроса,requests.models.ResponseОбъект, который нужно обработать, чтобы получить нужную нам информацию
Response_get.text получает тип str
Response_get.content получает тип байтов и требует декодирования Response_get.content.decode (), что эквивалентно Response_get.text.
Response_get.json () получает тип данных JSON.

Обычно наш самый простой запрос на получение — это requests.get (url), но мы можем настроить запрос, например, requests.get (url, headers = headers)
Заголовки могут настраивать User-Agent и cookie
Простой почтовый запрос — requests.post (url), мы также можем request.post (url, data), где данные могут быть списком, словарем, JSON и т. д.

import urllib.request req = urllib.request.Request(self, url, data=None, headers=<>,origin_req_host=None,unverifiable=False,method=None) Response_request = urllib.request.urlopen(req) Response = urllib.request.urlopen(url, data=None, timeout=1, cafile=None, capath=None, cadefault=False, context=None)

Модуль urllib.request предоставляет самый простой метод построения HTTP-запросов, который можно использовать для имитации процесса инициирования запроса в браузере.
# В то же время он также обрабатывает аутентификацию (проверка авторизации), перенаправления (перенаправление), файлы cookie (файлы cookie браузера) и другой контент.
# параметр контекста, он должен иметь тип ssl.SSLContext, используемый для указания настроек SSL. Два параметра cafile и capath указывают сертификат CA и путь к нему. Это полезно при запросе ссылок HTTPS.
# Параметр cadefault устарел, по умолчанию установлено значение False.
# Это объект типа HTTPResposne, который в основном содержит такие функции, как read (), readinto (), getheader (name), getheaders (), fileno () и т. д.
# и сообщение, версия, статус, причина, уровень отладки, закрыто и другие атрибуты. Получив этот объект, назначьте его ответу,
# Затем вы можете использовать response для вызова этих методов и атрибутов, чтобы получить серию информации о возвращенном результате.
# Например, response.read () может получить содержимое возвращенной веб-страницы, а response.status может получить код состояния возвращенного результата. Например, 200 означает, что запрос выполнен успешно, 404 означает, что веб-страница не найдена и т. д.

Читайте также:  Элемент перед элементом css

Простой запрос на получение — urllib.request.urlopen (url), где url может быть ссылкой или запросом.
Итак, нам нужно настроить заголовок запроса через urllib.request.Request (url, headers = headers), а затем передать его как url ​​в request.urlopen ()

Вот простые способы использования двух библиотек:

import requests import urllib.request url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' api ='http://open.iciba.com/dsapi/' headers = < 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0' >form_data = < "i": "word", "from": "AUTO", "to": "AUTO", "smartresult": "dict", "doctype": "json", "version": "2.1", "keyfrom": "fanyi.web", "action": "FY_BY_REALTIME", "typoResult": "false" >req1 = requests.get(url,headers=headers) req_api = requests.get(api,headers=headers) print (type (req1), type (req1.text), req1.text) # requests.get (). text имеет тип str print ("строка", type (req1.content), req1.content) # requests.get (). content is bytes type print ("В соответствии с прямым req1.text", req1.content.decode ()) print ("Интерфейс возвращает формат json", req_api.json ()) # Для формата возврата интерфейса требуется requests.get (). json () # Данные, отправленные POST, должны быть итерируемым объектом байтов или байтов, а не строкой form_data = urllib.parse.urlencode(form_data).encode() # urllib.request.Request () - это просто запрос: req2 = urllib.request.Request(url,data=form_data,headers=headers) print(type(req2)) req3 = urllib.request.urlopen (url) # Вы не можете замаскировать своего User Agent, вы можете замаскировать его с помощью urllib.request.Request () print(type(req3),req3.status) # http.client.HTTPResponse print (req3.getheaders ()) # Сбор информации об ответе print (req3.read (). decode ("utf-8")) # urllib.request.urlopen (). read (). decode ("utf-8") эквивалентно request.get (). text req4 = urllib.request.urlopen (req2) # Параметр может быть напрямую запросом print ("Направить запрос:", req4.read (). decode ("utf-8"))

Источник

urllib/urllib2 vs requests package in python

· It accomplish tasks such as basic authentication, getting cookies, serving GET/POST requests, error handling, viewing headers.

· In spite of having additional features, urllib cannot be completely replaced by urllib2 since the former provides important methods ( e.g., urlencode() , used for generating GET query strings) that are absent in urllib2.

· Connection pooling : There is a pool of connections, and a connection is released only once all its data has been read.

· Sessions with cookie persistence : You can make a session object and set certain parameters and cookie values. This allows you to persist these parameters and cookies across all requests made from the session instance.

· Python Requests encodes the parameters automatically so you just pass them as simple arguments, unlike in the case of urllib, where you need to use the method urllib.encode() to encode the parameters before passing them.

· In Python, Requests .get() is a method, auth is an optional parameter (since we may or may not require authentication).

· Unlike the urllib/urllib2 module, there is no confusion caused by Requests, as there is only a single module that can do the entire task.

Example 1: A simple HTTP GET request and authentication

Using urllib2 : In this example, to make a simple HTTP GET request we need to call a lot of methods.

import urllib2

url = ‘ https://www.example.com ‘
username= ‘user’
password = ‘pass’

request = urllib2.Request(url)

password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, url, username, password)

auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)

urllib2.install_opener(opener)

handler = urllib2.urlopen(request)

print handler.getcode()
print handler.headers.getheader(‘content-type’)

Using Requests : The task of making a simple HTTP GET request can be accomplished in a single line when compared to the large code written using urllib2.

Using urllib2/urllib : Note that in this example we had to make use of both the urllib and urllib2 modules in order to write a script for a simple POST request:

Using Requests : Here we do not require import multiple modules and a single requests module can accomplish the entire task:

Источник

Различия между модулями urllib, urllib2, urllib3 и requests в Python

Существует несколько модулей в Python для работы с URL. Они служат для обращения к веб-сервисам и загрузки данных из Интернета. Эти модули включают urllib, urllib2, urllib3 и requests. Но чем же они отличаются друг от друга и для чего конкретно предназначены?

urllib и urllib2

Модули urllib и urllib2 являются встроенными модулями в Python 2. Они предоставляют функциональность для работы с URL, включая извлечение, парсинг и модификацию URL. Однако, эти модули имеют некоторые отличия.

urllib предоставляет простые функции для работы с URL, включая функции для кодирования параметров запроса и обработки cookies.

urllib2 является более мощным и гибким инструментом, предоставляющим функции для работы с HTTP-заголовками, аутентификацией, перенаправлениями, cookies и многим другим.

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

urllib3

Модуль urllib3 представляет собой стороннюю библиотеку, которая предлагает более простой и удобный интерфейс для выполнения HTTP-запросов. Он также предоставляет дополнительные функции, такие как поддержка пула соединений и автоматическое следование перенаправлениям.

requests

Модуль requests является еще одной сторонней библиотекой, которая предназначена для упрощения работы с HTTP-запросами. Он предоставляет простой и удобный интерфейс, который делает его идеальным выбором для большинства задач, связанных с HTTP.

requests включает в себя все функции, предоставляемые urllib , urllib2 и urllib3 , а также добавляет ряд удобных функций, таких как автоматическая обработка cookies и сессий, поддержка JSON и удобная обработка ошибок.

В Python 3 urllib и urllib2 были объединены в один модуль под названием urllib , но даже в этом случае, для большинства задач рекомендуется использовать модуль requests из-за его простоты и удобства.

Источник

Оцените статью