我使用beautifulsoup4编写了一个脚本,该脚本可以在一台机器上运行,但不能在另一台机器上运行。原因是在另一台机器上,BeautifulSoup()构造函数会自动将<br>
转换为<br/>
,而这不是我机器上的行为。信不信由你,我的剧本很重要。
我认为这两台机器可能正在使用2种不同的底层HTML解析器。如何找出他们使用的解析器?我知道我可以指定一个由BeautifulSoup使用的解析器库,但首先我需要知道要统一到哪个库。
两台机器都运行python2.7.6
答案 0 :(得分:2)
我不认为这是记录在案的,但如果你看一下the source,那么根据你的builder
和/或features
参数选择的类的实例会被存储在builder
属性中。
所以,你可能想要type(soup.builder).__name__
,它会给你一个:
HTMLParserTreeBuilder
:使用html.parser
LXMLTreeBuilder
:使用lxml
LXMLTreeBuilderForXML
:使用xml
HTML5TreeBuilder
:使用html5lib
(当然,这假设您没有在其他解析器周围编写自己的自定义构建器,但如果您已经完成了这项工作,希望您能够了解它。)