Quais são as principais considerações ao criar um rastreador da web?

StackOverflow https://stackoverflow.com/questions/32366

  •  09-06-2019
  •  | 
  •  

Pergunta

Comecei a pensar em criar/personalizar um rastreador da web hoje e sei muito pouco sobre etiqueta do rastreador da web/robô.A maioria dos escritos sobre etiqueta que encontrei parecem antigos e estranhos, então gostaria de obter alguns insights atuais (e práticos) da comunidade de desenvolvedores web.

Quero usar um rastreador para percorrer "a web" com um propósito super simples - "a marcação do site XYZ atende à condição ABC?".

Isso levanta muitas questões para mim, mas acho que as duas questões principais que preciso resolver primeiro são:

  • Parece um pouco "duvidoso" desde o início - esse tipo de coisa é aceitável?
  • Que considerações específicas o rastreador deve tomar para não incomodar as pessoas?
Foi útil?

Solução

Obedeça ao robots.txt (e não muito agressivo como já foi dito).

Você pode querer pensar na string do agente do usuário - eles são um bom lugar para ser franco sobre o que você está fazendo e como pode ser contatado.

Outras dicas

Além das boas respostas de WillDean e Einar, eu realmente recomendo que você reserve um tempo para ler sobre o significado dos códigos de resposta HTTP e o que seu rastreador deve fazer ao encontrar cada um deles, pois isso fará uma grande diferença no seu desempenho e se você foi banido ou não de alguns sites.

Alguns links úteis:

HTTP/1.1:Definições de código de status

Testes HTTP do cliente agregador

Wikipédia

Certifique-se de incluir um URL na string do agente do usuário que explique quem/o que/por que seu robô está rastreando.

Todos os pontos positivos, os feitos aqui.Você também terá que lidar com links Java e JavaScript gerados dinamicamente, parâmetros e IDs de sessão, escapando de aspas simples e duplas, tentativas fracassadas de links relativos (usando ../../ para passar do diretório raiz), distinção entre maiúsculas e minúsculas, frames, redirecionamentos, cookies....

Eu poderia continuar por dias, e meio que continuei.eu tenho um Lista de verificação de robôs isso cobre a maior parte disso, e fico feliz em responder o que puder.

Você também deve pensar em usar código rastreador de robô de código aberto, porque ele oferece uma grande vantagem em todas essas questões.Também tenho uma página sobre isso: código de robô de código aberto.Espero que ajude!

Também não se esqueça de obedecer às meta tags do bot: http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

Outra coisa a se pensar é: quando fizer páginas spider, não se precipite ao decidir que as coisas não existem ou contêm erros.Algumas páginas ficam offline devido a trabalhos de manutenção ou erros que são corrigidos em um curto período.

Eu diria que é muito importante considerar quanta carga você está causando.Por exemplo, se o seu rastreador solicitar todos os objetos de um único site, mais ou menos de uma vez, isso poderá causar problemas de carregamento para esse site específico.

Em outras palavras, certifique-se de que seu rastreador não seja muito agressivo.

É perfeitamente aceitável fazer isso - apenas certifique-se de visitar cada página apenas uma vez em cada sessão.Como você está criando tecnicamente um searchbot, você deve obedecer ao robots.txt e no-cache regras.As pessoas ainda podem bloquear seu bot especificamente, se necessário, bloqueando IPs.

Até onde eu sei, você está procurando apenas o código-fonte, então vai querer construir algo para seguir <link>s para folhas de estilo e <script src="..."></script> para JavaScript.

A carga é uma grande consideração.Coloque limites na frequência com que você rastreia um determinado site e quais são as informações mais básicas necessárias para atingir seu objetivo.Se você está procurando texto, não baixe todas as imagens, coisas assim.

É claro que obedeça ao robots.txt, mas também certifique-se de que a string do agente do usuário inclua informações de contato precisas e talvez um link para uma página da web descrevendo o que você está fazendo e como faz.Se um administrador da web estiver recebendo muitas solicitações suas e estiver curioso, você poderá responder a muitas perguntas com uma página da web informativa.

Você precisará adicionar algum recurso à lista negra de sites/domínios ou outras coisas (intervalos de IP, ASN, etc.) para evitar que seu spider fique atolado em sites de spam.

Você precisará ter uma implementação HTTP com muito controle sobre o tempo limite e o comportamento.Espere que muitos sites enviem respostas inválidas, respostas enormes, cabeçalhos inúteis ou simplesmente deixem a conexão aberta indefinidamente sem resposta, etc.

Também não confie no status 200 para significar "a página existe".Uma grande proporção de sites envia de volta 200 por "Não encontrado" ou outros erros, na minha experiência (junto com um grande documento HTML).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top