Quelles sont les principales considérations lors de la création d'un web crawler?

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

  •  09-06-2019
  •  | 
  •  

Question

Je viens de commencer la réflexion sur la création/personnalisation d'un crawler web aujourd'hui, et savent très peu de choses sur le web crawler/robot de l'étiquette.La majorité des écrits sur l'étiquette que j'ai trouvé semble vieux et mal à l'aise, donc je voudrais avoir un peu de courant (et pratique) des idées à partir de la communauté des développeurs web.

Je veux utiliser un robot pour qu'il marche sur "le web" pour un super objectif simple - "ne le balisage du site XYZ répondre à la condition ABC?".

Cela soulève beaucoup de questions pour moi, mais je pense que les deux principales questions que j'ai besoin de sortir de la voie d'abord sont:

  • Il se sent un peu "douteuses" de l'aller -- est ce genre de chose acceptable?
  • Quelles considérations doivent le robot prendre pour ne pas bouleverser les gens?
Était-ce utile?

La solution

Obéir robots.txt (et pas trop agressif comme ça a été déjà dit).

Vous voudrez peut-être penser à votre chaîne de l'agent utilisateur, elles sont un bon endroit pour être à l'avance de ce que vous faites et comment vous pouvez être contacté.

Autres conseils

En outre WillDean et Einar bonnes réponses, je voudrais vraiment vous recommander de prendre un temps de lire à propos de la signification des codes de réponse HTTP, et ce que votre robot doit faire lors de la rencontre de chacun, car il va faire une grande différence sur votre performance, et sur si ou non vous êtes banni de certains sites.

Quelques liens utiles:

HTTP/1.1:Code D'État Définitions

L'agrégateur de client HTTP tests

Wikipédia

Assurez-vous d'inclure une URL dans votre chaîne de l'agent utilisateur qui explique qui/quoi/pourquoi votre robot est en rampant.

Tous les bons points, celles faites ici.Vous aurez également à traiter avec générées dynamiquement Java et JavaScript liens, les paramètres et les Id de session, s'échapper les guillemets simples et doubles, des tentatives ont échoué à des liens relatifs (à l'aide d' ../../ pour aller à la racine du répertoire), de la casse, les cadres, les redirections, les cookies....

Je pourrais continuer pendant des jours, et un peu avoir.J'ai un Les Robots Liste De Contrôle que couvre la plupart de cette, et je suis heureux de répondre à ce que je peux.

Vous devez également penser à l'aide de open-source robot crawler code, car il vous donne un énorme avantage par rapport à toutes ces questions.J'ai une page sur ce bien: open source robot code.Espérons que ça aide!

Aussi, n'oubliez pas d'obéir à la bot meta tags: http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

Une autre chose à penser - quand spider pages, ne soyez pas trop pressés de décider les choses n'existent pas ou ont des erreurs.Certaines pages sont en mode hors connexion en raison de travaux de maintenance ou des erreurs qui sont corrigées dans un délai court.

Je dirais qu'il est très important de tenir compte de la quantité de charge vous en êtes la cause.Par exemple, si votre robot demandes de chaque objet d'un seul et même site, plus ou moins à la fois, il peut causer des problèmes de charge pour ce site particulier.

En d'autres termes, assurez-vous que votre robot n'est pas trop agressif.

Il est parfaitement accetable à faire: il vous suffit seulement de visites chaque page une fois pour chaque session.Comme vous êtes techniquement la création d'un searchbot vous devez obéir robots.txt et no-cache des règles.Les gens peuvent toujours bloquer votre bot spécifiquement si nécessaire par le blocage des IPs.

Vous êtes seulement à la recherche de code source pour autant que je peux dire de sorte que vous aurez envie de construire quelque chose à suivre <link>s pour les feuilles de style et <script src="..."></script> pour les JavaScripts.

La charge est une considération importante.Placer des limites sur combien de fois vous analysez un site particulier et qu'est-ce que la plupart des informations de base que vous devez accomplir votre but.Si vous êtes à la recherche pour le texte de ne pas télécharger toutes les images, des trucs comme ça.

Bien sûr obéir robots.txt mais aussi, assurez-vous que votre chaîne de l'agent utilisateur comprend précis de contact info et peut-être un lien vers une page web décrivant ce que vous faites et comment vous le faites.Si un admin web, c'est de voir beaucoup de demandes de vous et est curieux, vous pourriez être en mesure de répondre à beaucoup de questions avec une information de la page web.

Vous aurez besoin d'ajouter une certaine capacité à la liste noire des sites / domaines ou d'autres choses (les plages d'adresses IP, de l'ASN, etc) afin d'éviter que votre araignée s'enliser avec des sites de spam.

Vous aurez besoin d'avoir un HTTP mise en œuvre avec beaucoup de contrôle sur le délai d'attente et le comportement.S'attendre à beaucoup de sites pour envoyer les réponses non valides, énorme réponses, des ordures en-têtes, ou tout simplement laisser la connexion ouverte indéfiniment en l'absence de réponse etc.

Aussi, ne pas faire confiance à un état 200 à dire "l'existence de la page".Une assez grande proportion de sites de renvoyer 200 pour les "Non trouvé" ou d'autres erreurs, dans mon expérience (avec un grand document HTML).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top