Gemeinsames Lisp -Paket zum Analysieren von ungültigem HTML? [abgeschlossen
-
15-10-2019 - |
Frage
Als Lernübung schreibe ich einen Web -Schaber in Common Lisp. Der (raue) Plan ist:
- Verwenden QuickLisp Abhängigkeiten verwalten
- Verwenden Drakma So laden die Seiten
- Die Seiten analysieren mit xmls
Ich bin gerade auf einen Sticking -Punkt gestoßen: Die Website, die ich kratze, produziert nicht immer gültige XHTML. Dies bedeutet, dass Schritt 3 (die Seiten mit XMLs analysieren) nicht funktioniert. Und ich bin so abgenutzt, reguläre Ausdrücke als zu verwenden dieser Typ :-)
Kann jemand ein gemeinsames Lisp -Paket für das Parsen für ungültige XHTML empfehlen? Ich stelle mir etwas ähnlich wie das vor HTML Agility Pack für .net ...
Lösung
Das Projekt "Closeure-HTML" (erhältlich in QuickLisp) wird sich von Fehlern HTML erholen und etwas produzieren, mit dem Sie arbeiten können. Ich benutze Clossure-HTML zusammen mit CXML, um beliebige Webseiten zu verarbeiten, und es funktioniert gut. http://common-lisp.net/project/cLosure/clouscosure-html/
Andere Tipps
Für die nächsten Besucher: Heute haben wir plump: https://shinmera.github.io/plump
Plump ist ein Parser für HTML/XML -ähnliche Dokumente, der sich darauf konzentriert, sich auf ungültiges Markup zu befassen. Es kann Dinge wie ungültige Attribute, schlechte Schließ-Tag-Reihenfolge, uneingeschränkte Entitäten, nicht kennzeichnende Tag-Typen, Selbstklassen-Tags usw. behandeln. Es analysiert Dokumente an eine Klassendarstellung und bietet eine kleine Reihe von DOM -Funktionen, um sie zu manipulieren. Sie können es jedoch frei ändern, um es in Ihre eigenen Klassen zu analysieren.
und sie haben andere Bibliotheken, um das Dokument abzufragen, wie Lquery (jQuery-ähnlich) oder CLSS (einfache CSS -Selektoren) vom selben Autor.
Wir haben jetzt auch ein kleines Tutorial zum gemeinsamen Lisp -Kochbuch: https://lispcookbook.github.io/cl-cookbook/web-scraping.html
Siehe auch Common Lisp Wiki: http://www.cliki.net/web
Duncan, bisher habe ich es erfolgreich verwendet, Clozure Common Lisp unter Ubuntu Linux und Windows (7 & XP) zu verwenden. Wenn Sie also nach einer Implementierung suchen, die überall, wo Sie diese möglicherweise ausprobieren, funktionieren.