关于beautifulsoup:python:“ lxml”与“ html.parser”和“ html5lib”与美丽汤之间的区别?

python: difference between 'lxml' and “html.parser” and “html5lib” with beautiful soup?

使用漂亮的汤时," lxml"与" html.parser"与" html5lib"有什么区别? 您什么时候可以使用另一种方法以及每种方法的优点? 从我每次使用的时间来看,它们似乎是可互换的,但我确实得到纠正,我应该使用与此处的人员不同的方法。 想加深我对这些的理解。 我在这里已经阅读了几篇关于此的文章,但它们根本没有涉及太多用途。

范例-

1
soup = BeautifulSoup(response.text, 'lxml')


从文档的优缺点汇总表中:

  • html.parser-BeautifulSoup(markup,"html.parser")

    • 优势:包括电池,不错的速度,宽大(从Python 2.7.3和3.2开始)。

    • 缺点:不太宽大(在Python 2.7.3或3.2.2之前)

  • lxml-BeautifulSoup(markup,"lxml")

    • 优点:非常快,宽大

    • 缺点:外部C依赖

  • html5lib-BeautifulSoup(markup,"html5lib")

    • 优点:极为宽松,以与网络浏览器相同的方式解析页面,创建有效的HTML5

    • 缺点:非常慢,外部Python依赖


  • 主要区别在BeautifulSoup文档中突出显示:

    • 解析器之间的差异

    为什么您更喜欢一个解析器而不是其他解析器的基本原因:

    • html.parser-内置-不需要额外的依赖项
    • html5lib-最宽大-如果HTML损坏,最好使用它
    • lxml-最快