package Common Lisp pour l'analyse syntaxique HTML invalide? [fermé]
-
15-10-2019 - |
Question
Comme un exercice d'apprentissage, j'écris un grattoir web en Common Lisp. Le plan (brut) est:
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 ...
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.