Подтвердить что ты не робот

Python: есть встроенный пакет для анализа html в dom

Я нашел HTMLParser для sax и xml.minidom для xml. У меня довольно хорошо сформированный html, поэтому мне не нужен слишком сильный парсер - любые предложения?

4b9b3361

Ответ 1

Посмотрите BeautifulSoup. Это популярно и отлично при анализе HTML.

Ответ 2

Я бы порекомендовал lxml. Мне нравится BeautifulSoup, но есть проблемы с обслуживанием и проблемы совместимости с более поздними версиями. Я был счастлив с помощью lxml.


Позже: лучшие рекомендации - использовать lxml, html5lib или BeautifulSoup 3.0.8. BeautifulSoup 3.1.x предназначен для python 3.x и, как известно, имеет проблемы с более ранними версиями python, как отмечено на веб-сайте BeautifulSoup.

Ian Bicking имеет хорошую статью об использовании lxml.

ElementTree является дополнительной рекомендацией, но я никогда не использовал ее.


2012-01-18: кто-то пришел и решил понизить меня и Bartosz, потому что мы рекомендовали пакеты python, которые легко получить, но не являются частью дистрибутива python. Итак, для очень буквальных StackOverflowers: "Вы можете использовать xml.dom.minidom, но никто не будет рекомендовать это по альтернативам".

Ответ 3

BeautifulSoup и lxml отличные, но не соответствующие ответы здесь, так как вопрос о встроенных. Ниже приведен пример использования встроенного модуля minidom для синтаксического анализа строки HTML. Протестировано 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 <p> tag:
doc = parseString(html_string)
paragraph = doc.getElementsByTagName("p")[0]
content = paragraph.firstChild.data

print(content)

Ответ 4

Чтобы обрабатывать объекты DOM, вы можете использовать HTMLDOM для python.