paquete de Common Lisp no válido para el análisis de HTML? [cerrado]
-
15-10-2019 - |
Pregunta
Como un ejercicio de aprendizaje, estoy escribiendo un raspador web en Common Lisp. El plan (en bruto) es:
acabo de correr en un punto de estancamiento: la página web que estoy raspando no siempre produce XHTML. Esto significa que el paso 3 (PARSE las páginas con XMLs) no funciona. Y estoy tan reacios a utilizar expresiones regulares como este tipo : -)
Por lo tanto, cualquier persona puede recomendar un paquete Common Lisp para analizar XHTML válido? Me estoy imaginando algo similar a la HTML agilidad Paquete para .NET ...
Solución
El proyecto "cierre-html" (disponible en Quicklisp) va a recuperarse de falsa HTML y producir algo con el que se puede trabajar. Yo uso el cierre-html junto con CXML para procesar las páginas web arbitrarias, y funciona muy bien. http://common-lisp.net/project/closure/closure-html/
Otros consejos
Para próximos visitantes: hoy tenemos Plump: https://shinmera.github.io/plump
Plump es un analizador de HTML / XML como documentos, centrándose en ser indulgente con marcas inválidas. Se puede manejar cosas como atributos no válidos, mal fin etiqueta de cierre, entidades sin codificar, los tipos de etiquetas inexistentes, las etiquetas de cierre automático y así sucesivamente. Analiza los documentos a una representación de la clase y ofrece un pequeño conjunto de funciones DOM para manipularlo. Usted es libre de cambiarlo a analizar a sus propias clases embargo.
y los que tienen otras bibliotecas para consultar el documento, como lquery (jquery-like) o CLSS (selectores CSS simples) por el mismo autor.
Ahora también tiene un pequeño tutorial sobre el Common Lisp Cookbook: https: //lispcookbook.github.io/cl-cookbook/web-scraping.html
Véase también Common Lisp wiki: http://www.cliki.net/Web
Duncan, hasta ahora he tenido éxito usando Clozure Common Lisp tanto bajo Ubuntu Linux y Windows (XP y 7), por lo que si usted está buscando una aplicación que funcionará en cualquier lugar usted puede tratar de éste.