Je pense à essayer Beautiful Soup , un package Python pour le scraping HTML. Existe-t-il d'autres packages de scraping HTML que je devrais consulter? Python n'est pas une exigence, je suis également intéressé à entendre parler d'autres langues.
L'histoire jusqu'ici:
- Python
- Rubis
- .NET
- Perl
- Java
- Javascript
- PHP
- La plupart d'entre eux
XPathExpression
peut être utilisé (qui existe depuis Java 1.5)Réponses:
L'équivalent du monde de Ruby à Beautiful Soup est la raison pour laquelle l' hpricot de_lucky_stiff's .
la source
Dans le monde .NET, je recommande le pack d'agilité HTML. Pas aussi simple que certaines des options ci-dessus (comme HTMLSQL), mais c'est très flexible. Il vous permet de manipuler du HTML mal formé comme s'il s'agissait d'un XML bien formé, vous pouvez donc utiliser XPATH ou simplement répéter sur des nœuds.
http://www.codeplex.com/htmlagilitypack
la source
BeautifulSoup est un excellent moyen d'aller pour le grattage HTML. Mon travail précédent m'avait fait faire beaucoup de grattage et j'aurais aimé connaître BeautifulSoup quand j'ai commencé. C'est comme le DOM avec beaucoup d'options plus utiles et beaucoup plus pythonique. Si vous voulez essayer Ruby, ils ont porté BeautifulSoup en l'appelant RubyfulSoup mais il n'a pas été mis à jour depuis longtemps.
D'autres outils utiles sont HTMLParser ou sgmllib.SGMLParser qui font partie de la bibliothèque Python standard. Ceux-ci fonctionnent en appelant des méthodes chaque fois que vous entrez / quittez une balise et rencontrez du texte html. Ils sont comme des expatriés si vous connaissez cela. Ces bibliothèques sont particulièrement utiles si vous allez analyser de très gros fichiers et que la création d'une arborescence DOM serait longue et coûteuse.
Les expressions régulières ne sont pas très nécessaires. BeautifulSoup gère les expressions régulières, donc si vous avez besoin de leur puissance, vous pouvez l'utiliser là-bas. Je dis aller avec BeautifulSoup, sauf si vous avez besoin de vitesse et d'une plus petite empreinte mémoire. Si vous trouvez un meilleur analyseur HTML sur Python, faites le moi savoir.
la source
J'ai trouvé que HTMLSQL était un moyen ridiculement simple de faire des captures d'écran. Cela prend littéralement quelques minutes pour obtenir des résultats avec.
Les requêtes sont super intuitives - comme:
Il existe maintenant d'autres alternatives qui adoptent la même approche.
la source
La bibliothèque Python lxml agit comme une liaison Pythonic pour les bibliothèques libxml2 et libxslt. J'aime particulièrement son support XPath et la jolie impression de la structure XML en mémoire. Il prend également en charge l'analyse du code HTML cassé. Et je ne pense pas que vous puissiez trouver d'autres bibliothèques / liaisons Python qui analysent XML plus rapidement que lxml.
la source
Pour Perl, il y a WWW :: Mechanize.
la source
Python a plusieurs options pour le grattage HTML en plus de Beatiful Soup. En voici d'autres:
WWW:Mechanize
. Vous donne un objet semblable à un navigateur pour interagir avec les pages Weblibwww
. Prend en charge diverses options pour parcourir et sélectionner des éléments (par exemple , sélection XPath et CSS)la source
'Simple HTML DOM Parser' est une bonne option pour PHP, si vous êtes familier avec les sélecteurs jQuery ou JavaScript, vous vous retrouverez chez vous.
Trouvez-le ici
Il y a aussi un article de blog à ce sujet ici.
la source
Pourquoi personne n'a encore mentionné JSOUP pour Java? http://jsoup.org/
la source
L' utilitaire templatemaker d'Adrian Holovaty (de la renommée Django ) utilise une approche très intéressante: vous lui donnez des variations de la même page et il "apprend" où se trouvent les "trous" pour les données variables. Ce n'est pas spécifique au HTML, donc ce serait bien pour gratter tout autre contenu en texte brut également. Je l'ai également utilisé pour les fichiers PDF et HTML convertis en texte brut (avec pdftotext et lynx, respectivement).
la source
Je connais et j'aime Screen-Scraper .
Screen-Scraper est un outil pour extraire des données de sites Web. Screen-Scraper automatise:
Utilisations courantes:
Technique:
Trois éditions de grattoir d'écran:
la source
Je voudrais d'abord savoir si le ou les sites en question fournissent un serveur API ou des flux RSS pour accéder aux données dont vous avez besoin.
la source
Le débordement de la pile de grattage est particulièrement facile avec les chaussures et Hpricot .
la source
Une autre option pour Perl serait Web :: Scraper qui est basé sur Ruby's Scrapi . En bref, avec une syntaxe agréable et concise, vous pouvez obtenir un grattoir robuste directement dans les structures de données.
la source
J'ai eu un certain succès avec HtmlUnit , en Java. C'est un cadre simple pour écrire des tests unitaires sur les interfaces utilisateur Web, mais également utile pour le scraping HTML.
la source
Yahoo! Le langage de requête ou YQL peut être utilisé avec jQuery, AJAX, JSONP pour filtrer les pages Web de scrape
la source
Un autre outil pour .NET est MhtBuilder
la source
Il y a aussi cette solution: netty HttpClient
la source
J'utilise Hpricot sur Ruby. À titre d'exemple, il s'agit d'un extrait de code que j'utilise pour récupérer tous les titres de livres des six pages de mon compte HireThings (car ils ne semblent pas fournir une seule page avec ces informations):
C'est à peu près complet. Tout ce qui précède les importations de bibliothèque et les paramètres de mon proxy.
la source
J'ai beaucoup utilisé Beautiful Soup avec Python. C'est beaucoup mieux que la vérification des expressions régulières, car cela fonctionne comme l'utilisation du DOM , même si le HTML est mal formaté. Vous pouvez trouver rapidement des balises HTML et du texte avec une syntaxe plus simple que les expressions régulières. Une fois que vous avez trouvé un élément, vous pouvez effectuer une itération sur lui et ses enfants, ce qui est plus utile pour comprendre le contenu du code que pour les expressions régulières. Je souhaite que Beautiful Soup existe il y a des années quand je devais faire beaucoup de captures d'écran - cela m'aurait fait gagner beaucoup de temps et de maux de tête car la structure HTML était si pauvre avant que les gens ne commencent à la valider.
la source
Bien qu'il ait été conçu pour les tests Web .NET , j'ai utilisé le framework WatiN à cette fin. Comme il est basé sur DOM, il est assez facile de capturer du HTML, du texte ou des images. Récemment, je l'ai utilisé pour transférer une liste de liens d'une requête d'espace de noms MediaWiki Toutes les pages dans une feuille de calcul Excel. La gestion du code VB.NET suivante est assez grossière, mais cela fonctionne.
la source
Implémentations de l' algorithme d'analyse HTML5 : html5lib (Python, Ruby), Analyseur HTML Validator.nu (Java, JavaScript; C ++ en développement), Hubbub (C), Twintsam (C #; à venir).
la source
Vous seriez fou de ne pas utiliser Perl .. Voici venir les flammes ..
Oser sur les modules suivants et ginsu toute égratignure autour.
la source
J'ai utilisé LWP et HTML :: TreeBuilder avec Perl et les ai trouvés très utiles.
LWP (abréviation de libwww-perl) vous permet de vous connecter à des sites Web et de gratter le HTML, vous pouvez obtenir le module ici et le livre O'Reilly semble être en ligne ici .
TreeBuilder vous permet de construire une arborescence à partir du HTML, et la documentation et la source sont disponibles dans HTML :: TreeBuilder - Analyseur qui construit une arborescence de syntaxe HTML .
Cependant, il pourrait y avoir trop de travail lourd à faire avec quelque chose comme cette approche. Je n'ai pas regardé le module Mechanize suggéré par une autre réponse, donc je peux très bien le faire.
la source
En Java, vous pouvez utiliser TagSoup .
la source
Eh bien, si vous voulez le faire du côté client en utilisant uniquement un navigateur, vous avez jcrawl.com . Après avoir conçu votre service de mise au rebut à partir de l'application Web ( http://www.jcrawl.com/app.html ), il vous suffit d'ajouter le script généré à une page HTML pour commencer à utiliser / présenter vos données.
Toute la logique de mise au rebut se produit sur le navigateur via JavaScript. J'espère que tu trouves cela utile. Cliquez sur ce lien pour un exemple en direct qui extrait les dernières nouvelles de Yahoo tennis .
la source
Vous en avez probablement déjà autant, mais je pense que c'est ce que vous essayez de faire:
la source
J'ai eu des résultats mitigés dans .NET en utilisant SgmlReader qui a été initialement démarré par Chris Lovett et semble avoir été mis à jour par MindTouch .
la source
J'aime la fonction ImportXML (URL, XPath) de Google Spreadsheets.
Il répétera les cellules dans la colonne si votre expression XPath renvoie plus d'une valeur.
Vous pouvez avoir jusqu'à 50
importxml()
fonctions sur une seule feuille de calcul.Le plugin Web de RapidMiner est également assez facile à utiliser. Il peut publier des messages, accepter les cookies et définir l' agent utilisateur .
la source
J'ai également eu beaucoup de succès en utilisant Jaxer + jQuery d'Aptana pour analyser des pages. Ce n'est pas aussi rapide ou de type script, mais les sélecteurs jQuery + JavaScript / DOM réel sont une bouée de sauvetage sur des pages plus compliquées (ou mal formées).
la source