Question

Comme un exercice d'apprentissage, j'écris un grattoir web en Common Lisp. Le plan (brut) est:

  1. Quicklisp pour gérer les dépendances
  2. Drakma pour charger les pages
  3. Parse les pages avec xmls

Je viens de courir dans un point de coller: le site web de grattage je ne produit pas toujours valide XHTML. Cela signifie que l'étape 3 (Parse les pages avec xmls) ne fonctionne pas. Et je suis aussi peu disposé à utiliser des expressions régulières comme ce type : -)

Alors, peut-on recommander un package Common Lisp pour l'analyse syntaxique XHTML valide? J'imagine quelque chose de similaire à la HTML Agility pack pour .NET ...

Était-ce utile?

La solution

Le projet « fermeture html » (disponible en Quicklisp) va se remettre de faux HTML et quelque chose de produits avec lesquels vous pouvez travailler. J'utilise pour traiter les pages web arbitraires fermeture html avec CXML, et il fonctionne bien. http://common-lisp.net/project/closure/closure-html/

Autres conseils

Pour les prochains visiteurs: aujourd'hui, nous avons Plump: https://shinmera.github.io/plump

  

Plump est un analyseur syntaxique pour HTML / XML comme des documents, en se concentrant d'être indulgents envers le balisage non valide. Il peut gérer les choses comme attributs non valides, mauvais ordre de balise de fermeture, des entités non codées, les types d'étiquettes, étiquettes inexistantes auto-fermeture et ainsi de suite. Il analyse des documents à une représentation de classe et offre un petit ensemble de fonctions DOM pour manipuler. Vous êtes libre de le changer pour analyser vos propres classes bien.

et les autres nous avons libs pour interroger le document, comme lquery (jquery-like) ou SATC (simples sélecteurs CSS) du même auteur.

Nous avons maintenant aussi un petit tutoriel sur le Common Lisp livre de recettes: https: //lispcookbook.github.io/cl-cookbook/web-scraping.html

Voir aussi commune wiki Lisp: http://www.cliki.net/Web

Duncan, jusqu'à présent, j'ai réussi en utilisant Clozure Common Lisp sous les deux Ubuntu Linux et Windows (7 et XP), donc si vous êtes à la recherche d'une mise en œuvre qui fonctionne, vous pouvez essayer de ne importe où celui-ci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top