html title, description y keywords en TCL

Estuve buscando en la web algun codigo en TCL para poder obtener el titulo y los meta description y keywords de una lista de sitios, pero no encontre nada concreto, asi que me puse a escribir yo mismo.

Para comenzar necesitaba obtener el codigo html de la pagina, asi que hice una funcion getPage que toma como parametro la URL y devuelve un string con el codigo HTML.

Luego necesitaba parsear ese codigo HTML para obtener el titulo y los metas. Podia simplemente parsear el string, buscando los simbolos y textos, o hacer algo mejor utilizando la libreria TCLDOM. Me decidi por esto ultimo, que si bien no conocia, una vez aprendido es mas sencillo y con menos probabilidades de fallos.

No esperen prolijidad ni comentarios, el codigo es el siguiente:

 

#Script para Obtener Title, Description y Keywords
#By JCA
package require http
package require tdom

 

proc getPage { url } {

::http::config -useragent “Mozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1″

if {[catch {set token [::http::geturl $url]} msg]} {
set data “fallado”
} else {
set data [::http::data $token]
::http::cleanup $token
}

return $data
}

 

proc getInfo { url } {

puts “– —————————————-”

set codigo [getPage $url]
set doc [dom parse -html $codigo]
set root [$doc documentElement]

set nodo [$root selectNodes /html/head/title/text()]
set titulo [$nodo data]

set description “”
set keywords “”

foreach meta [$root getElementsByTagName meta] {
set type [$meta nodeType]
set name [$meta nodeName]

set nombre “”

foreach atributo [$meta attributes] {
set dato [$meta getAttribute $atributo]

if {$atributo == “name”} {
set nombre $dato
}
}

if {$nombre!=”"} {
if {$nombre==”description”} { set description [$meta getAttribute content] }
if {$nombre==”keywords”} { set keywords [$meta getAttribute content] }
}
}

puts ” URL: $url”
puts “TITLE: $titulo”
puts “DESCR: $description”
puts “KEYWD: $keywords”

puts “——————————————”
}

getInfo “http://www.kristinspencer.com/”

Esta entrada fue publicada en Informatica. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>