Я использую lxml.html для разбора различных html-страниц. Теперь я понял, что, по крайней мере, для некоторых страниц он не находит тег body, несмотря на то, что он присутствует, и красивый суп находит его (даже если он использует lxml в качестве парсера).
пример страницы: https://plus.google.com/ (что от нее осталось)
import lxml.html
import bs4
html_string = """
... source code of https://plus.google.com/ (manually copied) ...
"""
# lxml fails (body is None)
body = lxml.html.fromstring(html_string).find('body')
# Beautiful soup using lxml parser succeeds
body = bs4.BeautifulSoup(html_string, 'lxml').find('body')
Любые предположения о том, что здесь происходит, приветствуются:)
Обновление:
Проблема, похоже, связана с кодировкой.
# working version
body = lxml.html.document_fromstring(html_string.encode('unicode-escape')).find('body')