Resolução de problemas: rastreamento de URL de retorno de informações do produto Jingdong sem exibir conteúdo

1. Rastreie a página original

  A página original a ser rastreada aqui é a seguinte:
Insira a descrição da imagem aqui

2. Código de erro

  Não sei se vocês estão usando o código mostrado na figura abaixo assim como eu?

import requests
url = "http://item.jd.com/2967929.html"
try:
    r = requests.get(url)
    r.raise_for_status()
    print(r.status_code)
    r.encoding = r.apparent_encoding
    print(r.text[:1001])
except:
    print("爬取异常")

  O resultado que obtive com o código acima é assim

Insira a descrição da imagem aqui
  Há apenas um URL e o conteúdo não é exibido conforme o esperado. Qual é o motivo? Vamos analisá-lo.

3. Análise de erro

  Análise de erros usando o ambiente interativo IDLE

(1) Visualize o código de status e o método de codificação

Insira a descrição da imagem aqui
  Ao verificar o código de status e o método de codificação, descobrimos que não parece haver nenhum problema. Neste momento, devemos considerar se Jingdong impôs restrições de agente do usuário aos rastreadores.

(2) Saída das informações do cabeçalho enviadas para Jingdong

Insira a descrição da imagem aqui
  Ao enviar as informações do cabeçalho, descobrimos que, nas informações enviadas ao JD.com, informamos honestamente ao rastreador usado pelo JD.com para obter informações. Como o JD.com fez uma revisão da fonte do rastreador, não podemos visualizar o conteúdo rastreado.

(3) Solução

  Agora que a causa do erro foi encontrada, a solução correspondente é óbvia. Precisamos apenas usar um dicionário para construir um par de valores-chave e alterar as informações do cabeçalho. Altere o conteúdo do user-agent acima para qualquer navegador.

headers = {
    
    "User-Agent": "Mozilla/5.0"}

  Mozilla / 5.0 significa que a visita de envio pode ser qualquer navegador, como Firefox, Google, etc. É o campo de identificação do navegador padrão.

4. Código completo

import requests
url = "http://item.jd.com/2967929.html"
headers = {
    
    "User-Agent": "Mozilla/5.0"}
try:
    r = requests.get(url, headers=headers)  #因为京东有user-agent限制所以要加入头部信息
    r.raise_for_status()
    print(r.status_code)
    r.encoding = r.apparent_encoding
    print(r.text[:1001])
except:
    print("爬取异常")

O conteúdo de saída é o seguinte, podemos ver que o conteúdo foi rastreado normalmente

Insira a descrição da imagem aqui
  No final deste artigo, indique quaisquer erros ~

Acho que você gosta

Origin blog.csdn.net/weixin_44578172/article/details/109302571
Recomendado
Clasificación