módulo de solicitações - a diferença entre o texto e o conteúdo do objeto de resposta

Envie uma solicitação GET

  1. Requisito: Envie uma solicitação à página inicial do Baidu por meio de solicitações para obter o código-fonte da página
  2. Execute o código a seguir e observe os resultados da impressão

Utilizar Requests para enviar uma solicitação GET é muito simples, basta chamar requests.get()o método. Por exemplo:

# 导入requests库
import requests

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

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

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

O código acima enviará uma solicitação GET http://www.baidu.come imprimirá a resposta.

Durante a observação, verifica-se que os dados retornados terão乱码

insira a descrição da imagem aqui

Observando o resultado da execução do código acima, descobrimos que há muitos caracteres ilegíveis; isso é causado pelos diferentes conjuntos de caracteres usados ​​pela codificação e decodificação; tentamos usar o seguinte método para resolver o problema dos caracteres ilegíveis chineses

# 导入requests库
import requests 

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

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

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

insira a descrição da imagem aqui

desenvolvimento de conhecimento

Qual é a diferença entre response.text e response.content na solicitação

Ao enviar uma solicitação usando a biblioteca de solicitações do Python, podemos usar response.text()o método ou response.content()para obter o conteúdo da resposta. A diferença entre esses dois métodos é o tipo de dados retornado.

response.text()
  • tipo:str
  • Tipo de decodificação: faça uma estimativa fundamentada sobre a codificação da resposta com base nos cabeçalhos HTTP, codificação de texto adivinhada
  • Como modificar o método de codificação:response.encoding="gbk"

response.text()O método retorna uma string no formato Unicode, que geralmente é usada para processar informações de texto. Se o conteúdo da resposta estiver em um formato de texto, como XML ou HTML, o uso de response.text()métodos poderá analisar e processar facilmente os dados.

Ao usar response.text()o método, se o cabeçalho da resposta não especificar um método de codificação, a biblioteca de solicitações inferirá automaticamente o método de codificação da resposta e, em seguida, retornará o conteúdo da resposta no formato Unicode. No entanto, deve-se notar que, como a biblioteca de solicitações é baseada no módulo chardet para codificação de especulação, existe uma certa possibilidade de erro de julgamento.

Além disso, atenção especial deve ser dada ao fato de que se o conteúdo da resposta for dados binários em vez de dados de texto, o método response.text()gerará caracteres ilegíveis ou lançará uma exceção.

response.content()
  • tipo:bytes
  • Tipo de decodificação: não especificado
  • Como modificar o método de codificação:response.content.decode("utf-8")

response.content()O método retorna dados em formato binário, adequado para processar arquivos multimídia como imagens, áudio e vídeo. Use response.content()o método para salvar diretamente o conteúdo da resposta localmente e manter os dados binários originais.

Deve-se observar que response.content()o método retorna a string de bytes original e o método de codificação não será analisado e convertido. Se precisar decodificá-lo em uma string, você precisará usar o método decode() do objeto bytes para especificar o método de codificação correto. Por exemplo, você também pode usá-lo diretamente response.content.decode("utf-8")porque response.content.decode()o padrão de response.content.decode é utf-8 .

Além disso, response.content()os dados retornados pelo método podem ser salvos diretamente localmente ou transmitidos para outros sistemas em formato binário, sem operações adicionais de codificação e decodificação.

Em resumo, o response.text()método de utilização é adequado para processar informações de texto e o response.content()método de utilização é adequado para processar dados binários. Ao usar esses dois métodos, você precisa prestar atenção à correspondência entre tipos de dados e métodos de codificação.

Acho que você gosta

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