2009-12-18 7 views
7

Quel est le moyen le plus simple d'extraire par programmation des données structurées à partir d'un ensemble de pages Web?Quel est le moyen le plus simple d'extraire par programmation des données structurées à partir d'un ensemble de pages Web?

J'utilise actuellement un programme Adobe AIR que j'ai écrit pour suivre les liens sur une page et récupérer une partie des données des pages suivantes. Cela fonctionne très bien, et pour les programmeurs, je pense que cela (ou d'autres langages) fournit une approche raisonnable, à écrire au cas par cas. Peut-être qu'il existe un langage ou une bibliothèque spécifique qui permet à un programmeur de le faire très rapidement, et si oui, je serais intéressé de savoir ce qu'ils sont.

Existe-t-il des outils permettant à un non-programmeur, comme un représentant du support client ou un responsable de l'acquisition de données, d'extraire des données structurées de pages Web sans copier-coller?

Répondre

11

Si vous effectuez une recherche sur Stackoverflow pour WWW::Mechanize & pQuery vous verrez de nombreux exemples en utilisant ces modules Perl CPAN.

Cependant, parce que vous avez mentionné "non-programmeur" alors peut-être Web::Scraper module CPAN peut-être plus approprié? Son plus similaire et donc peut-être plus facile pour "non-programmeur" de ramasser.

Voici un exemple de la documentation pour récupérer les tweets de Twitter:

use URI; 
use Web::Scraper; 

my $tweets = scraper { 
    process "li.status", "tweets[]" => scraper { 
     process ".entry-content", body => 'TEXT'; 
     process ".entry-date",  when => 'TEXT'; 
     process 'a[rel="bookmark"]', link => '@href'; 
    }; 
}; 

my $res = $tweets->scrape(URI->new("http://twitter.com/miyagawa")); 

for my $tweet (@{$res->{tweets}}) { 
    print "$tweet->{body} $tweet->{when} (link: $tweet->{link})\n"; 
} 
0

J'utilise une combinaison de Ruby avec hpricot et watir fait le travail très efficace

2

Je trouve YQL être très puissant et utile pour ce genre de chose. Vous pouvez sélectionner n'importe quelle page Web sur Internet et la rendre valide, puis vous permettre d'utiliser XPATH pour en interroger certaines sections. Vous pouvez le générer au format XML ou JSON pour le chargement dans un autre script/application.

j'ai écrit ma première expérience avec ici:

http://www.kelvinluck.com/2009/02/data-scraping-with-yql-and-jquery/

Depuis YQL est devenu plus puissant avec l'ajout du mot-clé EXECUTE qui vous permet d'écrire votre propre logique en javascript et d'exécuter cette sur les serveurs de Yahoo! s avant de vous renvoyer les données.

Une description plus détaillée de YQL est here.

Vous pouvez créer une datatable pour YQL pour obtenir les bases de l'information que vous essayez de saisir et ensuite le responsable de l'acquisition de données pourrait écrire des requêtes très simples (dans un DSL qui est prettymuch anglais) contre cette table . Il serait plus facile pour eux que « la programmation appropriée » au moins ...

0

Si vous ne me dérange pas de prendre sur votre ordinateur, et vous arrive d'avoir besoin d'aide Javasript, WatiN est une sacrément bonne outil de navigation. Écrit en C#, il a été très fiable pour moi dans le passé, fournissant un wrapper indépendant du navigateur pour parcourir et obtenir du texte à partir de pages.

2

Il existe Sprog, qui vous permet de créer graphiquement des processus à partir de parties (Obtenir URL -> Table HTML process -> Écrire fichier), et vous pouvez mettre du code Perl à n'importe quelle étape du processus, ou écrire vos propres parties utilisation non-programmeur. Il semble un peu abandonné, mais fonctionne toujours bien.

0

Les outils commerciaux sont-ils des réponses viables? Si oui, vérifiez http://screen-scraper.com/ il est très facile à configurer et à utiliser pour gratter les sites Web. Ils ont une version gratuite qui est en fait assez complète. Et non, je ne suis pas affilié à l'entreprise :)

Questions connexes