在Python中使用lxml时如何在soupparser中使用html5parser?

时间:2017-03-21 04:52:19

标签: python beautifulsoup lxml

我会写一个程序来处理很多破解的HTML。现在我遇到一个导致错误的破坏的HTML:

comment may not contain '--' or end with '-'

我已经搜索了这个错误了一段时间,并找到了解决办法:用最后一个版本替换html5parser,但它不起作用,可能因为他们使用html5parser.fromstring,我使用了soupparser.fromstring。我必须使用soupparser,因为html5parser无法处理这样的破解HTML。

我尝试阅读源代码和文档,并发现soupparser使用lxml.html作为默认工厂。所以我想如果我可以使用html5parser作为工厂,我可以解决这个问题。我知道fromstring中有一个参数 makeelement ,但没有例子。

所以我想知道:

  1. 如何将默认工厂更改为html5parser?
  2. 或者如何重写etree.pyx中的Comment方法(对我来说很困难因为它是由Cython编写的)
  3. 谢谢!

    更新:

    最后,我通过将lxml降级到版本0.4.4来解决这个问题:

    pip install lxml=0.4.4
    

    此版本没有此问题。

0 个答案:

没有答案