2009-10-31 8 views
4

J'essaie d'explorer environ un millier de sites Web, à partir desquels je m'intéresse uniquement au contenu html.Quel robot Web pour extraire et analyser les données d'environ un millier de sites Web?

Puis je transforme le code HTML en XML pour être analysé avec XPath pour extraire le contenu spécifique Je suis intéressé.

J'utilise crawler Heritrix 2.0 pour quelques mois, mais je suis tombé performance énorme problèmes de mémoire, de stabilité et de stabilité (Heritrix se bloque tous les jours, et aucune tentative avec les paramètres JVM pour limiter l'utilisation de la mémoire n'a réussi). D'après vos expériences sur le terrain, quel crawler utiliseriez-vous pour extraire et analyser le contenu de milliers de sources?

Répondre

3

Je pas utiliser la branche 2.x (qui a été arrêté) ou 3.x (développement actuel) pour tout « sérieux » ramper à moins que vous voulez aider à améliorer Heritrix ou tout simplement comme être sur le saignement bord. Heritrix 1.14.3 est la version stable la plus récente et il est vraiment est stable, utilisé par de nombreux établissements pour l'exploration à petite et grande échelle. J'utilise pour lancer des analyses sur des dizaines de milliers de domaines, en collectant des dizaines de millions d'URL en moins d'une semaine. La branche 3.x se rapproche d'une version stable, mais même alors j'attendrais un peu pour une utilisation générale à Internet Archive et d'autres pour améliorer ses performances et sa stabilité.

Mise à jour: Depuis que quelqu'un a voté récemment, je pense qu'il est intéressant de noter que Heritrix 3.x est maintenant stable et est la version recommandée pour ceux qui commencent avec Heritrix.

+0

Merci, je me doutais de la version 2.0, mais depuis que nous avons fait du développement personnalisé j'avais un peu peur de le convertir en 1.14 juste pour découvrir que 1.14 ne fonctionne pas aussi. Maintenant, je suis plus confiant de faire la rétrogradation à 1,14. –

+0

H2 est à peu près le pire choix possible. H3 est maintenant en version bêta et s'améliore alors que H1 est stable depuis des années. – Kris

+2

J'ai détecté un motif ici, avec Heritrix 1.14 => 2.0 => 3.0. Nous pourrions le nommer "Le Xp => Vista => 7" motif d'un célèbre exemple contemporain :-) –

3

Je suggère d'écrire votre propre en utilisant Python avec les paquets Scrapy et lxml ou BeautifulSoup. Vous devriez trouver quelques bons tutoriels dans Google pour ceux. J'utilise Scrapy + lxml au travail pour spider ~ 600 sites Web vérifiant les liens brisés.

+0

Avez-vous construit votre propre système de contrôle au-dessus de Scapy, ou Scapy fournit-il des méthodes à cette fin? (Par exemple, je veux que chaque analyse s'exécute au maximum 6 heures puis redémarre, et j'ai développé un programme java spécifique qui contrôle l'exploration et redémarre l'analyse lorsque Heritrix est accroché) –

+0

Vous ne savez pas exactement ce que vous demandez; Scrapy est un cadre pour gratter, donc vous construisez dessus. Semble étrange que vous voudriez gratter pour un "temps"; Ne serait-il pas préférable de définir un «niveau» maximum, puis de le terminer simplement quand c'est fait? –

0

Wow. Des robots d'avant-garde comme les moteurs de recherche utilisent crawl et indexent 1 million d'URLs sur une boîte sinlge par jour. Bien sûr, l'étape de rendu HTML vers XML prend un peu, mais je suis d'accord avec vous sur la performance. Je n'ai utilisé que des robots d'exploration privés. Je ne peux donc pas en recommander un que vous pourrez utiliser, mais j'espère que ces chiffres vous aideront dans votre évaluation.

+0

Nous avons été en mesure d'écrire un crawler personnalisé qui peut extraire ~ 2mm pages/jour. La chose la plus difficile à propos de la mise à l'échelle était de s'assurer que la recherche de Frontier (les pages étaient déjà visitées) était rapide au fur et à mesure que le nombre de pages récoltées augmentait. – Joel

Questions connexes