Primero, copié la dirección URL en la caja de texto destinada para ello.
Tuve que también "descomentar' las lineas siguientes en Lemon Tree Branch:
htmlparse::removeVisualFluff t htmlparse::removeFormDefs tComo se puede observar, la "ruta" a la lista de ejemplos de Richard es:
1-15-0, desde la raíz, hasta el primer tag

Ahora si, este es el programa ejemplo donde se pueden apreciar los beneficios de poder usar la funcionalidad de la estructura "tree", tal como por ejemplo:
t next $bulletIx
con lo cual se puede hacer iteraciones en elementos del mismo "nivel"
Nótese que:
- Solo estoy "tomando" un solo link por "bullet", de modo que, por ejemplo, no estoy capturando el link para "A pocket Wiki", el cual es el segundo link en uno de los "bullets"

- Hay un mensaje de error: (node "" does not exist in tree "t") cuando no hay link en el "bullet", como en "simplicite"
Obtener todos los links que haya por "bullet" puede ser un buen ejercicio para el lector.
console show package require struct package require htmlparse package require http proc parse {} { ::struct::tree t set url "http://wiki.tcl.tk/1683" set http [::http::geturl $url] set html [::http::data $http] htmlparse::2tree $html t htmlparse::removeVisualFluff t htmlparse::removeFormDefs t set base [walk {1 15 0}] puts "data: [t get $base data]" puts "type(tag): [t get $base type]\n" set bulletIx [walkf $base {0}] while {$bulletIx != {}} { set link [t get [walkf $bulletIx {0}] data] #set title [t get [walkf $bulletIx {0 0}] data] catch {t get [walkf $bulletIx {0 0}] data} title puts "$link: $title" update set bulletIx [t next $bulletIx] } t destroy return } proc walkf {n p} { foreach idx $p { if {$n == ""} {break} set n [lindex [t children $n] $idx] } return $n } proc walk {p} { return [walkf root $p] } parse
No comments:
Post a Comment