El día 3 de febrero de 2011 01:17, Kike Cabrera <kikeca...@gmail.com> 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
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Reply via email to