Quel est le moyen le plus simple d'extraire de manière programmable les données structurées à partir d'un tas de pages Web? P>
J'utilise actuellement un programme Adobe Air, j'ai écrit pour suivre les liens sur une page et accroître une section de données sur les pages suivantes. Cela fonctionne réellement bien et pour les programmeurs, je pense que cela (ou d'autres langues) fournit une approche raisonnable, à écrire au cas par cas. Peut-être qu'il y a une langue ou une bibliothèque spécifique qui permet à un programmeur de le faire très rapidement, et si oui, je serais intéressé à savoir ce qu'ils sont. p>
Il existe également des outils qui permettraient un non-programmeur, comme un représentant de support client ou une personne responsable de l'acquisition de données, d'extraire des données structurées à partir de pages Web sans qu'il soit nécessaire de faire une tasse de copie et de coller? p>
6 Réponses :
J'ai trouvé que YQL soit très puissant et utile pour ce genre de chose. Vous pouvez sélectionner n'importe quelle page Web sur Internet et le rendra valide, puis vous permettra d'utiliser des sections XPath pour interroger. Vous pouvez le produire sous forme de XML ou JSON prêt à être chargé dans un autre script / application. P>
J'ai écrit ma première expérience avec elle ici: p>
http: //www.kelvinuck. COM / 2009/02 / Data-raclage-with-yql-and-jQuery / p>
Depuis lors, YQL est devenu plus puissant avec l'ajout du mot clé Exécuteur qui vous permet d'écrire votre propre logique en JavaScript et de l'exécuter sur Yahoo! S Servers avant de vous renvoyer les données. P>
Une écriture plus détaillée de YQL est ici . p>
Vous pouvez créer un jeu de données pour que YQL pour obtenir aux bases des informations que vous essayez de saisir, puis que le responsable de l'acquisition de données pourrait écrire des requêtes très simples (dans une DSL qui est jolie anglais) contre cette table. Ce serait plus facile pour eux que «une programmation appropriée» au moins ... P>
Si vous faites une recherche sur Stackoverflow pour www :: mécaniser code >
& PQUERY code>
Vous verrez de nombreux exemples Utilisation de ces perl modules CPAN .
Cependant, parce que vous avez mentionné "non programmeur" puis peut-être Voici un exemple de la documentation pour la récupération des tweets à partir de Twitter: P> Web :: grattoir code> le module CPAN peut-être plus approprié? C'est plus DSL comme et peut-être aussi plus facile pour "non programmeur" à ramasser. p>
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";
}
Si cela ne vous dérange pas de reprendre votre ordinateur et que vous avez besoin de prise en charge JavasRipT, WATIN A > Est-ce qu'un bon outil de navigation est joli. Écrit en C #, cela a été très fiable pour moi dans le passé, fournissant une belle emballeuse indépendante du navigateur pour avoir traversé et obtenir du texte des pages. P>
Il y a SPROG , qui vous permet de créer graphiquement des processus hors des pièces (Obtenir l'URL -> Process Process HTML Tableau -> Dossier d'écriture), et vous pouvez mettre un code PERL dans n'importe quelle étape du processus ou écrire vos propres pièces pour une utilisation non programmeuse. Il semble un peu abandonné, mais fonctionne toujours bien. P>
Les outils commerciaux sont-ils des réponses viables? Si oui, consultez http://screen-scraper.com/ Il est super 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é à la société :) p>