“BeautifulSoup”和“lxml”有啥关系?
Posted
技术标签:
【中文标题】“BeautifulSoup”和“lxml”有啥关系?【英文标题】:What's the relationship between 'BeautifulSoup' and 'lxml'?“BeautifulSoup”和“lxml”有什么关系? 【发布时间】:2015-11-18 20:04:49 【问题描述】:在lxml
的doc 中,它说:
lxml 可以通过 lxml.html.soupparser 模块连接到 BeautifulSoup 的解析功能。它提供了三个主要函数:fromstring() 和 parse() 使用 BeautifulSoup 将字符串或文件解析为 lxml.html 文档,以及 convert_tree() 将现有 BeautifulSoup 树转换为***元素列表。
同时BS
'也可以使用lxml
作为解析器。[ref]
Beautiful Soup 支持 Python 标准库中包含的 HTML 解析器,但它也支持许多第三方 Python 解析器。一个是 lxml 解析器。
BS
还建议使用lxml
作为速度解析器。
那么如果lxml
使用BS
进行解析,而BS
的解析器反之为lxml
呢?
我一直在为理解他们的关系而摸不着头脑。帮助。
【问题讨论】:
Parsing HTML in python - lxml or BeautifulSoup? Which of these is better for what kinds of purposes?的可能重复 我赞成你的问题,因为我认为这是一个很好的问题。然后我注意到了排在首位的相关问题并点击了链接。我认为***.com/a/19549530/1640661 的答案非常好,有助于阐明这两个库的功能之间的关系。 【参考方案1】:BS
解析器和lxml.html
解析器应该没有什么混淆。 BS
有一个 HTML 解析器,lxml
有它自己的 HTML 解析器。
您引用的BS
文档只是说您可以使用lxml
解析器或其他可能的第三方解析器将HTML 解析为BS
汤对象,而不是使用默认的BS
解析器:
BeautifulSoup(markup, "lxml")
同样,lxml
文档说您可以使用 BS
解析器将 HTML 解析为 lxml
树对象,而不是使用默认的 lxml.html
解析器:
root = lxml.html.soupparser.fromstring(tag_soup)
【讨论】:
以上是关于“BeautifulSoup”和“lxml”有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章
BeautifulSoup:“lxml”、“html.parser”和“html5lib”解析器有啥区别?
python模块--BeautifulSoup4 和 lxml
BeautifulSoup 和 lxml.html - 更喜欢啥? [复制]