Re: recuperar contenido html

Luis Miguel Morillas <[email protected]>
Newsgroups gmane.comp.python.general.castellano
Message-ID <[email protected]>
El día 20 de octubre de 2009 21:56, Antonio Reyes
<[email protected]> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.