2011-05-05 4 views
3

Nous allons gratter des milliers de sites chaque nuit pour mettre à jour les données des clients, et nous sommes en train de décider quelle langue nous voudrions utiliser pour faire le racler.écran Grattage Efficacité

Nous ne sommes pas enfermés dans une plate-forme ou la langue, et je suis simplement à la recherche d'efficacité. Si je dois apprendre une nouvelle langue pour que mes serveurs fonctionnent bien, c'est bien.

Quelle langue/plate-forme fournira l'efficacité de grattage le plus élevé par dollar pour nous? Vraiment, je cherche une expérience du monde réel avec un raclage à haut volume. Il s'agira de maximiser le CPU/Mémoire/Bande passante.

+0

Tout langage moderne sur une machine spec modérée ferait l'affaire. – Oded

+0

Eh bien, si la seule chose qui vous tient à cœur est l'efficacité, vous devriez aller aussi bas que possible, mais il ya évidemment un compromis à faire ici sur le coût du matériel par rapport au coût des heures programmeur. – hammar

+0

C'est un bon point, pas d'assemblage bien sûr. :) – Mikecito

Répondre

4

Vous serez IO lié de toute façon, les performances de votre code ne sera pas question du tout (sauf si vous êtes un programmeur vraiment mauvais ..)

+0

C'est un bon point. Cela étant dit, quelle langue se penche vers le développement rapide de raclage d'écran? Peut-être que nous devrions considérer le temps de développement au lieu du temps de serveur dans ce scénario, quelque chose que je n'avais pas considéré auparavant. – Mikecito

+0

@Mike, c'est plus sur les bibliothèques que sur la langue actuelle. Chaque langue a des bibliothèques DOM. Je me penche vers C# parce que c'est ma langue principale, mais chaque langue en a au moins une bonne! Un point cependant est que C# 4 a quelques opérations parallèles très faciles à utiliser, vous permettant de traiter facilement plusieurs fichiers à la fois ('Parallel.For'). – Blindy

+0

Eh bien, nous sommes principalement un magasin C#/Objective C, donc j'apprécie votre opinion à ce sujet. Nous allons l'essayer! – Mikecito

0

En utilisant une combinaison de python et belle soupe, il est incroyablement facile à écrire du code scree-scraping très rapidement. Il y a une courbe d'apprentissage pour une belle soupe, mais ça vaut le coup.

efficacité-sage, je dirais que c'est tout aussi rapide que toute autre méthode là-bas. Je n'ai jamais fait des milliers de sites à la fois, mais je parierais que c'est définitivement à la hauteur de la tâche.

+1

Ce qui pourrait être dit à propos de n'importe quel autre langage/plate-forme et l'analyseur HTML associé. – Oded

0

Si vous connaissez C, un lien synchrone à flux unique (appelé méthode "facile") est un travail de courte journée avec libcURL. Les flux asynchrones multiples (appelés la méthode "multi") sont quelques heures de plus.

HTH

-1

Avec le volume que des milliers de sites, il faudrait, vous pouvez être mieux sur le plan économique en regardant des emballages commerciaux. Ils éliminent le problème des E/S et disposent d'outils spécialement conçus pour gérer les nuances entre chaque site, ainsi que d'outils de post-grattage pour normaliser les données et de planification pour maintenir les données à jour.

+0

Quelle preuve pouvez-vous présenter pour cela? – SamB

+0

Nous utilisons actuellement un service qui fait cela pour nous, et notre facture mensuelle atteindra bientôt environ 500 000 $. Ainsi, la raison pour laquelle nous voulons commencer à le faire en interne. – Mikecito

0

Pour grattage web J'utilise Python avec lxml et quelques autres bibliothèques: http://webscraping.com/blog

E/S est le principal goulot d'étranglement lors de l'exploration - pour télécharger des données à un bon rythme, vous devez utiliser plusieurs threads.

Je cache tout le HTML téléchargé, si l'utilisation de la mémoire est faible.

Souvent, après avoir rampé je besoin de rescrape caractéristiques différentes et CPU devient importante.