Domanda

Come un esercizio di apprendimento, sto scrivendo un raschietto web in Common Lisp. L'(approssimativa) piano è:

  1. Quicklisp per gestire le dipendenze
  2. Drakma per caricare le pagine
  3. Analizza le pagine con XMLs

Ho appena eseguito in un punto critico: il sito che sto raschiando non produce sempre XHTML valido. Ciò significa che il punto 3 (analizzare le pagine con XMLs) non funziona. E io sono come riluttante a usare le espressioni regolari come questo ragazzo : -)

Quindi, qualcuno può raccomandare un pacchetto Common Lisp per l'analisi XHTML valido? Sto immaginando qualcosa di simile al HTML Agility pacchetto for .NET ...

È stato utile?

Soluzione

Il progetto "chiusura-html" (disponibile in Quicklisp) si riprenderà dal fasullo HTML e produrre qualcosa con cui si può lavorare. Io uso la chiusura-html insieme CXML per elaborare le pagine Web arbitrarie, e funziona bene. http://common-lisp.net/project/closure/closure-html/

Altri suggerimenti

per i prossimi visitatori: oggi abbiamo Plump: https://shinmera.github.io/plump

Plump è un parser per HTML / XML, come documenti, concentrandosi su essere indulgente nei confronti di markup non valido. E 'in grado di gestire le cose come attributi non validi, cattiva chiusura l'ordine dei contrassegni, le entità non codificati, tipi di tag inesistenti, etichette auto-chiusura e così via. Esso analizza i documenti ad una rappresentazione di classe e offre un piccolo insieme di funzioni DOM per manipolarlo. Siete liberi di cambiarlo per analizzare per le proprie classi però.

e li abbiamo altre librerie per interrogare il documento, come lquery (jquery-like) o CLSS (semplici selettori CSS) dello stesso autore.

Ora abbiamo anche un piccolo tutorial on the Common Lisp Cookbook: https: //lispcookbook.github.io/cl-cookbook/web-scraping.html

Si veda anche Common Lisp wiki: http://www.cliki.net/Web

Duncan, finora ho avuto successo utilizzando Clozure Common Lisp sia sotto Ubuntu Linux e Windows (7 e XP), quindi se siete alla ricerca di un'implementazione che funzionerà ovunque si potrebbe provare questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top