Módulo Python requests

Python requests es una biblioteca de solicitudes HTTP de uso común que permite enviar fácilmente solicitudes HTTP a sitios web y obtener los resultados de respuesta.

El módulo requests es másurllibel módulo es más conciso.

Para enviar solicitudes HTTP con requests, primero debe importar el módulo requests:

import requests

Después de la importación, puede enviar solicitudes HTTP utilizando los métodos proporcionados por requests para enviar solicitudes HTTP a la URL especificada, por ejemplo:

Ejemplo

# Importar el paquete requests
import requests

# Enviar solicitud
x = requests.get('https://www.example.com/')

# Devolver el contenido de la página web
print(x.text)

Después de cada llamada a una solicitud de requests, se devuelve un objeto response, que contiene información de respuesta específica, como código de estado, encabezados de respuesta, contenido de respuesta, etc.:

print(response.status_code)  # 获取响应状态码
print(response.headers)  # 获取响应头
print(response.content)  # 获取响应内容

Más información de respuesta a continuación:

Atributo o método Descripción
apparent_encoding Formato de codificación
close() Cierra la conexión con el servidor
content Devuelve el contenido de la respuesta, en bytes
cookies Devuelve un objeto CookieJar que contiene las cookies enviadas por el servidor
elapsed Devuelve un objeto timedelta que contiene la cantidad de tiempo transcurrido entre el envío de la solicitud y la llegada de la respuesta; puede usarse para probar la velocidad de respuesta. Por ejemplo, r.elapsed.microseconds indica cuántos microsegundos tarda en llegar la respuesta.
encoding Codificación utilizada para decodificar r.text
headers Devuelve los encabezados de respuesta, en formato de diccionario
history Devuelve una lista de objetos de respuesta que contienen el historial de solicitudes (url)
is_permanent_redirect Devuelve True si la respuesta es una URL con redirección permanente; de lo contrario, devuelve False
is_redirect Devuelve True si la respuesta fue redirigida; de lo contrario, devuelve False
iter_content() Iterar sobre la respuesta
iter_lines() Iterar sobre las líneas de la respuesta
json() Devuelve el objeto JSON del resultado (el resultado debe estar escrito en formato JSON, de lo contrario se producirá un error)
links Devuelve los enlaces de cabecera analizados de la respuesta
next Devuelve el objeto PreparedRequest de la siguiente solicitud en la cadena de redireccionamiento
ok Comprueba el valor de "status_code"; devuelve True si es menor que 400 y False si no es menor que 400
raise_for_status() Si ocurre un error, el método devuelve un objeto HTTPError
reason Descripción del estado de la respuesta, por ejemplo "Not Found" u "OK"
request Devuelve el objeto de solicitud que generó esta respuesta
status_code Devuelve el código de estado HTTP, por ejemplo 404 y 200 (200 es OK, 404 es Not Found)
text Devuelve el contenido de la respuesta, datos de tipo unicode
url Devuelve la URL de la respuesta

Ejemplo

# Importar el paquete requests
import requests

# Enviar solicitud
x = requests.get('https://www.example.com/')

# Devolver el código de estado HTTP
print(x.status_code)

# Descripción del estado de la respuesta
print(x.reason)

# Devolver la codificación
print(x.apparent_encoding)

El resultado de salida es el siguiente:

200
OK
utf-8

Solicitar un archivo de datos JSON y devolver el contenido JSON:

Ejemplo

# Importar el paquete requests
import requests

# Enviar solicitud
x = requests.get('https://www.example.com/try/ajax/json_demo.json')

# Devolver datos JSON
print(x.json())

El resultado de salida es el siguiente:

{'name': '网站', 'num': 3, 'sites': [{'name': 'Google', 'info': ['Android', 'Google 搜索', 'Google 翻译']}, {'name': 'Ejemplo', 'info': ['Ejemplo', 'Ejemplo工具', 'Ejemplo微信']}, {'name': 'Taobao', 'info': ['淘宝', '网购']}]}

Métodos de requests

Los métodos de requests son los siguientes:

Método Descripción
delete(url, args) Envía una solicitud DELETE a la URL especificada
get(url, params, args) Envía una solicitud GET a la URL especificada
head(url, args) Envía una solicitud HEAD a la URL especificada
patch(url, data, args) Envía una solicitud PATCH a la URL especificada
post(url, data, json, args) Envía una solicitud POST a la URL especificada
put(url, data, args) Envía una solicitud PUT a la URL especificada
request(method, url, args) Envía el método de solicitud especificado a la URL especificada

Usar requests.request() para enviar una solicitud GET:

Ejemplo

# Importar el paquete requests
import requests

# Enviar solicitud
x = requests.request('get', 'https://www.example.com/')

# Devolver el contenido de la página web
print(x.status_code)

El resultado de salida es el siguiente:

200

Configurar encabezados de solicitud:

Ejemplo

# Importar el paquete requests
import requests

 
kw = {'s':'tutorial de python'}

# Configurar encabezados de solicitud
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
 
# params recibe un diccionario o una cadena de parámetros de consulta; los diccionarios se convierten automáticamente a codificación URL, no se necesita urlencode()
response = requests.get("https://www.example.com/", params = kw, headers = headers)

# Ver el código de estado de la respuesta
print (response.status_code)

# Ver la codificación de caracteres del encabezado de respuesta
print (response.encoding)

# Ver la URL completa
print (response.url)

# Ver el contenido de la respuesta; response.text devuelve datos en formato Unicode
print(response.text)

El resultado de salida es el siguiente:

200
UTF-8
https://www.example.com/?s=python+%E6%95%99%E7%A8%8B

... 其他内容...

El método post() puede enviar una solicitud POST a la URL especificada; su formato general es el siguiente:

requests.post(url, data={key: value}, json={key: value}, args)
  • urlURL de la solicitud.

  • dataEl parámetro es un diccionario, lista de tuplas, bytes o archivo que se enviará a la URL especificada.

  • jsonEl parámetro es un objeto JSON que se enviará a la URL especificada.

  • argsSon otros parámetros, como cookies, headers, verify, etc.

Ejemplo

# Importar el paquete requests
import requests

# Enviar solicitud
x = requests.post('https://www.example.com/try/ajax/demo_post.php')

# Devolver el contenido de la página web
print(x.text)

El resultado de salida es el siguiente:

<p style='color:red;'>本内容是使用 POST 方法请求的。</p><p style='color:red;'>请求时间:
2022-05-26 17:30:47</p>

Solicitud POST con parámetros:

Ejemplo

# Importar el paquete requests
import requests

# Parámetros de formulario, nombres de parámetros fname y lname
myobj = {'fname': 'EJEMPLO','lname': 'Boy'}

# Enviar solicitud
x = requests.post('https://www.example.com/try/ajax/demo_post2.php', data = myobj)

# Devolver el contenido de la página web
print(x.text)

El resultado de salida es el siguiente:

<p style='color:red;'>你好,EJEMPLO Boy,今天过得怎么样?</p>

Parámetros de solicitud adicionales

Al enviar solicitudes, podemos agregar parámetros adicionales en la solicitud, como encabezados de solicitud, parámetros de consulta, cuerpo de la solicitud, etc., por ejemplo:

headers = {'User-Agent': 'Mozilla/5.0'}  # 设置请求头
params = {'key1': 'value1', 'key2': 'value2'}  # 设置查询参数
data = {'username': 'example', 'password': '123456'}  # 设置请求体
response = requests.post('https://www.example.com', headers=headers, params=params, data=data)

El código anterior envía una solicitud POST e incluye encabezados de solicitud, parámetros de consulta y cuerpo de la solicitud.

Además de las solicitudes básicas GET y POST, requests también admite otros métodos HTTP, como PUT, DELETE, HEAD, OPTIONS, etc.

Otras extensiones