Frage

Als Lernübung schreibe ich einen Web -Schaber in Common Lisp. Der (raue) Plan ist:

  1. Verwenden QuickLisp Abhängigkeiten verwalten
  2. Verwenden Drakma So laden die Seiten
  3. 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 ...

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top