módulo de solicitudes: la diferencia entre el texto y el contenido del objeto de respuesta

Enviar una solicitud GET

  1. Requisito: enviar una solicitud a la página de inicio de Baidu a través de solicitudes para obtener el código fuente de la página
  2. Ejecute el siguiente código y observe los resultados de la impresión.

Usar Solicitudes para enviar una solicitud GET es muy simple, simplemente llame requests.get()al método. Por ejemplo:

# 导入requests库
import requests

# 目标url
url = 'https://www.baidu.com' 

# 向百度发送GET请求,并获取响应对象
response = requests.get(url)

# 打印响应对象的文本内容,即百度网站的HTML源码
print(response.text)

El código anterior enviará una solicitud GET http://www.baidu.come imprimirá la respuesta.

Durante la observación, se descubre que los datos devueltos tendrán乱码

inserte la descripción de la imagen aquí

Al observar el resultado de ejecutar el código anterior, encontramos que hay muchos caracteres confusos; esto se debe a los diferentes conjuntos de caracteres utilizados por la codificación y decodificación; intentamos utilizar el siguiente método para resolver el problema de los caracteres confusos chinos

# 导入requests库
import requests 

# 目标url
url = 'https://www.baidu.com' 

# 向目标url发送get请求
response = requests.get(url)

# 打印响应内容
# print(response.text)
print(response.content.decode()) # 注意这里!

inserte la descripción de la imagen aquí

desarrollo del conocimiento

¿Cuál es la diferencia entre respuesta.texto y respuesta.contenido en solicitud?

Al enviar una solicitud usando la biblioteca de solicitudes de Python, podemos usar response.text()el método o response.content()para obtener el contenido de la respuesta. La diferencia entre estos dos métodos es el tipo de datos devuelto.

response.text()
  • tipo:str
  • Tipo de decodificación: haga una conjetura fundamentada sobre la codificación de la respuesta en función de los encabezados HTTP, codificación de texto adivinada.
  • Cómo modificar el método de codificación:response.encoding="gbk"

response.text()El método devuelve una cadena en formato Unicode, que normalmente se utiliza para procesar información de texto. Si el contenido de la respuesta está en un formato de texto como XML o HTML, el uso de response.text()métodos puede analizar y procesar los datos fácilmente.

Al utilizar response.text()el método, si el encabezado de la respuesta no especifica un método de codificación, la biblioteca de solicitudes inferirá automáticamente el método de codificación de la respuesta y luego devolverá el contenido de la respuesta en formato Unicode. Sin embargo, cabe señalar que, dado que la biblioteca de solicitudes se basa en el módulo chardet para codificar especulaciones, existe una cierta posibilidad de error de juicio.

Además, se debe prestar especial atención al hecho de que si el contenido de la respuesta son datos binarios en lugar de datos de texto, el método response.text()generará caracteres confusos o generará una excepción.

response.content()
  • tipo:bytes
  • Tipo de decodificación: no especificado
  • Cómo modificar el método de codificación:response.content.decode("utf-8")

response.content()El método devuelve datos en formato binario, que es adecuado para procesar archivos multimedia como imágenes, audio y vídeo. Utilice response.content()el método para guardar directamente el contenido de la respuesta localmente y conservar los datos binarios originales.

Cabe señalar que response.content()el método devuelve la cadena de bytes original y el método de codificación no se analizará ni convertirá. Si necesita decodificarlo en una cadena, debe usar el método decode() del objeto bytes para especificar el método de codificación correcto. Por ejemplo, también puede usarlo directamente response.content.decode("utf-8")porque response.content.decode()el valor predeterminado de Response.content.decode es utf-8. .

Además, response.content()los datos devueltos por el método pueden guardarse directamente localmente o transmitirse a otros sistemas en formato binario sin operaciones adicionales de codificación y decodificación.

En resumen, el response.text()método de uso es adecuado para procesar información de texto y el response.content()método de uso es adecuado para procesar datos binarios. Al utilizar estos dos métodos, debe prestar atención a la coincidencia de tipos de datos y métodos de codificación.

Supongo que te gusta

Origin blog.csdn.net/m0_67268191/article/details/131754269
Recomendado
Clasificación