Envie uma solicitação GET
- Requisito: Envie uma solicitação à página inicial do Baidu por meio de solicitações para obter o código-fonte da página
- 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.com
e imprimirá a resposta.
Durante a observação, verifica-se que os dados retornados terão乱码
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()) # 注意这里!
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.