recuperar contenido html

Luis Miguel Morillas morillas en gmail.com
Mar Oct 20 22:43:58 CEST 2009


El día 20 de octubre de 2009 21:56, Antonio Reyes
<areyespgil en gmail.com> escribió:
> Hola de nuevo,
> Gracias a los que han contestado a mi pregunta pero creo que estaba un poco
> vaga porque apenas estoy empezando con esto de la programación y con python.
>
> En fin, he estado intentado resolver mi problema pero sigo teniendo
> dificultades; las planteo ahora de forma más ordenada.
>
> Dado un conjunto de archivos html, quiero recuperar una parte de su
> contenido sólo si una de sus etiquetas contiene cierta condición.
>
> Un ejemplo de los archivos html que estoy trabajando es 'article_i.html' en:
> http://nlel.areyesp77.operaunite.com/file_sharing/
>
> ó desde la página donde se obtuvieron:
>
> http://linux.slashdot.org/story/09/10/20/137241/Deadline-Scheduling-Proposed-For-the-Linux-Kernel?art_pos=2
>
> Como se darán cuenta, son comentarios de un tema específico, de los cuales
> algunos tienen una etiqueta "score:número" = string
>
> Yo estoy interesado en recuperar el comentario sólo si su score es igual a
> "Funny" ó "Insightful", por ejemplo.
>
> He estado tratando con BeautifulSoup pero no logro aún relacionar el score
> con el comentario, y en consecuencia no lo logro extraer. Aedmás, para
> obtener el string de score estoy usando un código como el de abajo pero es
> un problema porque el 'comment_score_' no es igual en todos los comentarios.
> Bueno, si alguno de ustedes me puede orientar se lo agradecería.
>
>
> doc = open("/001/article_3.html")
>
> soup = BeautifulSoup(doc)
> soup.prettify()
>
> content = soup.findAll("div",{"class":"commentBody"})
> #print content
>
> score = soup.findAll("span",{"id": "comment_score_14467215"})  ##
> if 'Insightful' in str(score):
>        print content
> else:
>        print '%%%%%'
>
>

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/article_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?

Saludos,

-- lm



> --
> Usando el novísimo cliente de correo de Opera: http://www.opera.com/mail/
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
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