找出BeautifulSoup4使用的解析器?

时间:2015-05-11 03:17:44

标签: python html beautifulsoup html-parsing

我使用beautifulsoup4编写了一个脚本,该脚本可以在一台机器上运行,但不能在另一台机器上运行。原因是在另一台机器上,BeautifulSoup()构造函数会自动将<br>转换为<br/>,而这不是我机器上的行为。信不信由你,我的剧本很重要。

我认为这两台机器可能正在使用2种不同的底层HTML解析器。如何找出他们使用的解析器?我知道我可以指定一个由BeautifulSoup使用的解析器库,但首先我需要知道要统一到哪个库。

两台机器都运行python2.7.6

1 个答案:

答案 0 :(得分:2)

我不认为这是记录在案的,但如果你看一下the source,那么根据你的builder和/或features参数选择的类的实例会被存储在builder属性中。

所以,你可能想要type(soup.builder).__name__,它会给你一个:

  • HTMLParserTreeBuilder:使用html.parser
  • LXMLTreeBuilder:使用lxml
  • LXMLTreeBuilderForXML:使用xml
  • HTML5TreeBuilder:使用html5lib

(当然,这假设您没有在其他解析器周围编写自己的自定义构建器,但如果您已经完成了这项工作,希望您能够了解它。)