Я нашел HTMLParser для sax и xml.minidom для xml. У меня довольно хорошо сформированный html, поэтому мне не нужен слишком сильный парсер - любые предложения?
Python: есть встроенный пакет для анализа html в dom
Ответ 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.