2010-02-28 17 views
5

Me gustaría extraer algo de información de una página web contenida en una tabla HTML <>. ¿Cómo puedo extraer toda la información de la tabla en un buen | archivo separado?raspando una tabla HTML en Common Lisp?

 
Author|Book|Year|Comments 
Bill Bryson|Short History of Nearly Everything|2004 
Stephen Hawking|A Brief History of Time|1998|Still haven't read. 

Idealmente, me gustaría tener una función que toma un archivo URL y salida como parámetros a continuación, da la salida anterior.

 
(defun extract-table (url filename) 
     (extract-from-html-table (fetch-web-page url))) 

(extract-table "http://www.mypage.com" "output.txt") 

de entrada HTML de ejemplo para la salida anterior:

 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> 
<html> 
<head> 
<title>Lisp</title> 
</head> 
<body> 
<h1>Welcome to Lisp</h1> 
<table class="any" style="font-size: 14px;"> 
    <TR class="header"> 
    <td>Author</td> 
    <TD>Book</TD> 
    <td>Year</td> 
    <td>Comments</td> 
    </TR> 
    <tr class="odd"> 
    <td>Bill Bryson</td> 
    <td>Short History of Nearly Everything</td> 
    <td>2004</td> 
    </tr> 
    <tr> 
    <td>Stephen Hawking</td> 
    <td>A Brief History of Time</td> 
    <td>1998</td> 
    <td>Still haven't read.</td> 
    </tr> 
</table> 
</body> 
</html> 

Respuesta

7

de inicio con Drakma para ir a buscar los datos. Para analizar la cosa, puede encontrar cxml útil. O mejor aún: puede usar closure-html, que debe analizar HTML arbitrario 4. La página Common-Lisp.net del paquete closure-html tiene un screen scraping example.