El día 3 de febrero de 2011 01:17, Kike Cabrera <[email protected]> escribió:
> Hola a todos.
> Estoy intentando recoger datos de una web con html.parser.HTMLParser (Python
> 3.1), encuentro las etiquetas html que hay pero no soy capaz de acceder al
> contenido.
> Probablemente esté pasando por alto algún método de la clase para hacer
> esto, o tal vez simplemente no sé hacerlo.
> La clase heredada que uso:
> class Parser(HTMLParser):
> def __init__(self, datos):
> HTMLParser.__init__(self)
> self.feed(datos)
> self.close()
> def handle_data(self,data):
> return data
> def handle_comment(self, data):
> return data
> def handle_starttag(self, tag, attrs):
> script = []
> if tag == 'script':
> for i in range(len(attrs)):
> if attrs[i][0]== 'type' and attrs[i][1] ==
> 'text/javascript':
> print('Javascript encontrado')
> script.append(self.get_starttag_text())
> return script
> Acceso en linea de comandos:
> data = Parser(html).handle_starttag('script',
> ('type','text/javascript'))
> Donde 'html' es una cadena utf-8 con el código fuente de la página.
> Con esto último recorre la cadena y encuentra los tags que coinciden, pero
> no consigo el contenido.
> Creo que ando perdido en como heredo la clase, me parece que no está
> completa, pero necesito más información para seguir.
> También me he dado cuenta de que no me aclaro muy bien con los objetos, pero
> eso creo que es caso perdido.
No conozco htmlparser. Para analizar webs uso amara (que no funciona
todavía con python3.x) Un ejemplo:
>>> from amara.bindery import html
>>> doc = html.parse('http://python.org.ar/pyar/')
>>> js = doc.xml_select(u'//script[@type="text/javascript"]')
>>> for script in js:
print script
<!--
var search_hint = "Búsqueda";
//-->
<!--// Initialize search form
var f = document.getElementById('searchform');
f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
searchChange(e);
searchBlur(e);
//-->
$(document).ready(function(){
$(".tweet").tweet({
username: "planetapyar",
avatar_size: 32,
count: 10,
loading_text: "Cargando tweets..."
});
});
<!--// Init menu
actionsMenuInit('Más Acciones');
//-->
Más doc en http://wiki.xml3k.org/Amara
-- luismiguel
> Gracias a todos.
>
> _______________________________________________
> Python-es mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/