Pouvez-vous donner des exemples de l'analyse de l'HTML?
Comment parser du HTML avec une variété de langues et de bibliothèques d'analyse?
Lorsque vous répondez:
Commentaires individuels sera lié dans les réponses à des questions sur la façon d'analyser HTML avec regexes comme une façon de montrer la bonne façon de faire les choses.
Par souci de cohérence, je demande que l'exemple de l'analyse d'un fichier HTML pour la href
dans les balises d'ancrage. Pour faciliter la recherche à cette question, je vous demande de suivre ce format
Langue: [nom de la langue]
Bibliothèque: [nom de la bibliothèque]
[example code]
Merci de faire de la bibliothèque un lien vers la documentation pour la bibliothèque. Si vous voulez donner un exemple autre que l'extraction de liens, veuillez également inclure:
Objet: [ce que l'analyse n']
- répétez l'opération pour chaque exemple, le HTML générateur de code est inutile
- et pourquoi vous êtes clutting code perl avec inutile/inutile d'utiliser les directives? (mises en garde et stricte)
- Autonome, exemples de travail sont meilleures. Tous les code Perl devrait inclure stricte et des avertissements, ils ne sont pas inutiles; ils sont une partie Moderne de Perl. Je frémis à penser que votre code ressemble à si vous pensez qu'ils sont "inutiles" et "inutile".
- dans mon code j'utilise toujours les mises en garde et stricte; dans CE contexte, ils sont inutiles. Les plus de cette les échantillons ne sont pas "autonome" (par exemple, jquery, ruby et les autres réponses), alors pourquoi s'embêter avec perl solutions?
- Parce que vous le pouvez, et les exemples de JavaScript sont autonomes dans leur environnement. Je n'ai pas changé le nokogiri exemple parce que je ne peux pas obtenir nokogiri pour l'installer sur ma machine. Je ne veux pas modifier le code, je ne comprends pas. Mais je vais le changer; pour une chose qu'il ne regarde pas comme il est de la résolution de l'exemple. Comme pour l'utilisation stricte, la modélisation code unsafe pour les gens qui sont l'apprentissage est un crime. Ils ont besoin de tous les armatures qu'ils peuvent obtenir.
- vous ajoutez de distraire les choses; use strict et des ressources de traitement n'est pas le point central de la question
- Baxter Quelle partie de "Cette question est une manière paresseuse de collecte d'exemples de parsing HTML avec une variété de langues et de bibliothèques d'analyse." n'avez-vous pas comprendre?
- Le C et le C++ sont marqués, mais n'ont pas un exemple ici. 🙁
- Oui, ils sont marqués de sorte que quelqu'un va donner un exemple.
Vous devez vous connecter pour publier un commentaire.
Langue: JavaScript
Bibliothèque: jQuery
(à l'aide de la console de firebug.débogage pour la sortie...)
Et de chargement d'une page html:
Utilisé une autre fonction pour celui-ci, je pense que c'est plus propre quand le chaînage de méthodes.
Langage: C#
Bibliothèque: HtmlAgilityPack
langage: Python
bibliothèque: BeautifulSoup
de sortie:
également possible:
de sortie:
Langage: Perl
Bibliothèque: pQuery
langue: shell
bibliothèque: lynx (bon, c'est pas de la bibliothèque, mais dans le shell, chaque programme est une sorte de bibliothèque)
langue: Ruby
bibliothèque: Hpricot
langage: Python
bibliothèque: HTMLParser
langage: Perl
bibliothèque: HTML::Parser
Langage Perl
Bibliothèque: HTML::LinkExtor
Beauté de Perl, c'est que vous avez des modules pour des tâches très spécifiques. Comme l'extraction de lien.
Ensemble du programme:
Explication:
facilite le potentiel de débogage, pas entièrement
pertinents pour l'exemple
C'est tout.
Langue: Ruby
Bibliothèque: Nokogiri
Langue: Common Lisp
Bibliothèque: Fermeture Html, Fermeture Xml, CL-QUI
(indiqué à l'aide d'API DOM, sans l'aide de XPATH ou STP API)
Langue: Clojure
Bibliothèque: Enlive (un sélecteur de fonction (à la CSS de templates et de la transformation du système de Clojure)
Sélecteur d'expression:
Maintenant, nous pouvons faire ce qui suit à l'REPL (j'ai rajouté des sauts de ligne dans
test-select
):Vous aurez besoin des éléments suivants pour l'essayer:
Préambule:
Test HTML:
langage: Perl
bibliothèque: XML::Twig
mise en garde: Pouvez-vous obtenir à l'échelle-les erreurs de caractères avec des pages comme celle-ci (modification de l'url d'une commenté obtiendrez cette erreur), mais le code HTML::Parser solution ci-dessus ne partage pas ce problème.
Langage: Perl
Bibliothèque: HTML::Parser
Objectif: Comment puis-je supprimer les éléments inutilisés, imbriqués HTML balises span avec une expression rationnelle Perl?
Langage: Java
Bibliothèques: XOM, TagSoup
J'ai inclus intentionnellement mal formé et incohérent XML dans cet échantillon.
TagSoup ajoute un espace de noms XML de référencement XHTML du document par défaut. J'ai choisi de les supprimer que, dans cet échantillon. En utilisant le comportement par défaut nécessiterait l'appel à
root.query
pour inclure un espace de noms comme:Langage: C#
Bibliothèque: System.XML (norme .NET)
Langue: JavaScript
Bibliothèque: DOM
(à l'aide de la console de firebug.débogage pour la sortie...)
Langue: Raquette
Bibliothèque: (planète ashinn/html-analyseur:1) et (planète clements/sxml2:1)
Exemple ci-dessus en utilisant les paquets à partir du nouveau système de paquets: html-analyse et sxml
Remarque: Installez les paquets nécessaires avec "raco" à partir d'une ligne de commande avec:
et:
langage: Python
bibliothèque: lxml.html
lxml dispose également d'un sélecteur CSS de la classe pour traverser le DOM, ce qui peut le rendre très similaire à l'utilisation de JQuery:
Langage: PHP
Bibliothèque: SimpleXML (et DOM)
Langue: Objective-C
Bibliothèque: libxml2 + Matt Gallagher libxml2 wrappers + Ben Copsey de ASIHTTPRequest
Langage: Perl
Bibliothèque : HTML:: "TreeBuilder"
Langue: Python
Bibliothèque: HTQL
Simple et intuitive.
langue: Ruby
bibliothèque: Nokogiri
Sorties:
C'est un mineur de spin sur le dessus, ce qui entraîne une sortie qui est utilisable pour un rapport. Je ne renvoyer que le premier et le dernier élément dans la liste des hrefs:
Langage: Java
Bibliothèque: jsoup
Langage: PHP
Bibliothèque: DOM
Il est parfois utile de mettre
@
symbole avant de$doc->loadHTMLFile
à supprimer du code html non valide l'analyse des avertissementsÀ l'aide de phantomjs, enregistrez ce fichier en tant que extract-links.js:
exécuter:
Langue: Coldfusion 9.0.1+
Bibliothèque: jSoup
Retourne un tableau de structures, chaque structure contient un HREF et les objets TEXTE.
Langue: JavaScript/Node.js
Bibliothèque: Demande et Cheerio
Demande de la bibliothèque télécharge le document html et Cheerio vous permet d'utiliser jquery sélecteurs css pour cibler le document html.