recuperar contenido html

Antonio Reyes areyespgil en gmail.com
Mie Oct 21 19:05:12 CEST 2009


El Martes, 20 de Octubre de 2009 22:43:58 Luis Miguel Morillas escribió:


> La solución más rápida es la siguiente. Usa amara2 (easy_install amara)
>from amara.bindery import html
>doc =
>  html.parse(r'http://nlel.areyesp77.operaunite.com/file_sharing/content/art
> icle_1.html') comentarios = doc.xml_select(u"//span[@class='score']")
> for c in comentarios:
>     texto_comentario = unicode(c)
>     if 'Funny' in texto_comentario or 'Insightful' in texto_comentario:
>         print texto_comentario  # haz aquí lo que consideres con el
>  comentario.
>Es esto lo que necesitas?

>> Por lo que se ve, hay que relacionar la puntuación con los comentarios.  
>> Heprobado un poco y lo he conseguido con el '..' de XPath para subir un  
>> nivel:


>> from amara.bindery import html

>> doc=html.parse(r'http://nlel.areyesp77.operaunite.com/file_sharing/content/article_1.html')
>> comentarios=doc.xml_select(u"//div[@class='commentBody']/..")
>> for c in comentarios:
>>    score=unicode(c.xml_select(u"//span[@class='score']")[0]))
>>    if u'Funny' in score or u'Insightful' in score:
>>        comment=unicode(c.div[1])
>>        print score, comment

He estado haciendo pruebas con este código pero hay un error en él.
Explico, recupera el comentario etiquetado como 'Funny' pero además  
recupera los hijos de ese comentario y los considera como si también  
tuvieran esa etiqueta.
Por ejemplo, en el archivo de prueba, el score "Funny" aparece sólo en 8  
comentarios pero al ejecutar el script recupera 415 comentarios que no  
tienen ese score pero que dependen de estos 8.
Cómo se podría solucionar esto?


-- 
Usando el novísimo cliente de correo de Opera: http://www.opera.com/mail/
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es