tutorial soup find_next_sibling python html dom parsing

soup - Python: ¿Hay un paquete integrado para analizar html en dom



python soup find (4)

BeautifulSoup y lxml son geniales, pero no son respuestas adecuadas aquí, ya que la pregunta es acerca de los builtins. Aquí hay un ejemplo del uso del módulo minidom para analizar una cadena HTML. Probado con cPython 3.5.2:

from xml.dom.minidom import parseString html_string = """ <!DOCTYPE html> <html><head><title>title</title></head><body><p>test</p></body></html> """ # extract the text value of the document''s <p> tag: doc = parseString(html_string) paragraph = doc.getElementsByTagName("p")[0] content = paragraph.firstChild.data print(content)

Sin embargo, como se indica en el comment Jesse Hogan, esto fallará en las entidades HTML no reconocidas por mindom. Aquí hay una solución actualizada que utiliza el módulo html.parser de Python3:

from html.parser import HTMLParser html_string = """ <!DOCTYPE html> <html><head><title>title</title></head><body><p>&nbsp;test</p><div>not in p</div></body></html> """ class Parser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.in_p = [] def handle_starttag(self, tag, attrs): if (tag == ''p''): self.in_p.append(tag) def handle_endtag(self, tag): if (tag == ''p''): self.in_p.pop() def handle_data(self, data): if self.in_p: print("<p> data :", data) parser = Parser() parser.feed(html_string)

Encontré HTMLParser para sax y xml.minidom para xml. Tengo un html bastante bien formado, así que no necesito un analizador demasiado fuerte, ¿alguna sugerencia?


Para manejar objetos DOM, puede usar HTMLDOM para python.


Yo recomendaría lxml . Me gusta BeautifulSoup, pero en general hay problemas de mantenimiento y problemas de compatibilidad con las versiones posteriores. He estado feliz usando lxml.

Más tarde: las mejores recomendaciones son usar lxml, html5lib o BeautifulSoup 3.0.8. BeautifulSoup 3.1.x está diseñado para python 3.xy se sabe que tiene problemas con las versiones anteriores de Python, como se indica en el sitio web de BeautifulSoup .

Ian Bicking tiene un buen artículo sobre el uso de lxml.

ElementTree es otra recomendación, pero nunca la he usado.

2012-01-18: alguien ha venido y decidió rechazarnos a Bartosz y a mí porque recomendamos paquetes de Python que se obtienen fácilmente pero que no forman parte de la distribución de Python. Entonces, para los altamente literarios ers: "Puedes usar xml.dom.minidom, pero nadie recomendará esto sobre las alternativas".


Eche un vistazo a BeautifulSoup . Es popular y excelente para analizar HTML.