lxml 和 libxml2 哪个更适合在 Python 中解析格式错误的 html?
对于格式错误的 html,哪一个更好、更有用?
我找不到如何使用 libxml2。
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
对于格式错误的 html,哪一个更好、更有用?
我找不到如何使用 libxml2。
谢谢。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
在 libxml2 页面 中,您可以看到以下注释:
在 lxml 页面中,还有另一个:
因此本质上,使用
lxml
您可以获得完全相同的功能,但具有与标准库中的
ElementTree
库兼容的 Pythonic API(因此这意味着标准库文档对于学习如何使用lxml
很有用)。这就是为什么lxml
优于libxml2
(即使底层实现是相同的)。编辑:话虽如此,正如其他答案所解释的那样,要解析格式错误的html,最好的选择是使用
BeautifulSoup
。需要注意的一件有趣的事情是,如果您安装了lxml
,BeautifulSoup
将按照 新版本的文档:无论如何,即使
BeautifulSoup
在底层使用lxml
,您也能够解析无法用解析的损坏的
直接。例如:html
>xml但是:
最后,请注意
lxml
还为旧版本的BeautifulSoup
提供了一个接口,如下所示:所以最终,您可能会无论如何,使用
lxml
和BeautifulSoup
。您唯一需要选择的是您最喜欢的 API。In the libxml2 page you can see this note:
and in the lxml page this other one:
So essentially, with
lxml
you get exactly the same functionality,but with a a pythonic API compatible with the
ElementTree
library in the standard library (so this means the standard library documentation will be useful to learn how to uselxml
). That's why,lxml
is preferred overlibxml2
(even when the underlying implementation is the same one).Edit: Having said that, as other answers explain, to parse malformed html your best option is to use
BeautifulSoup
. One interesting thing to note is that, if you have installedlxml
,BeautifulSoup
will use it as explained in the documentation for the new version:Anyway, even if
BeautifulSoup
useslxml
under the hood, you'll be able to parse brokenhtml
that you can't parse withxml
directly. For example:However:
Finally, note that
lxml
also provides an interface to the old version ofBeautifulSoup
as follows:So at the end of the day, you'll probably be using
lxml
andBeautifulSoup
anyway. The only thing you've got to choose is what's the API that you like the most.尝试一下beutifulsoup。它的目的是解析结构不良的数据。
http://pypi.python.org/pypi/BeautifulSoup
http://lxml.de/elementsoup.html
Try beutifulsoup instead. It is aimed at parsing poorly structured data.
http://pypi.python.org/pypi/BeautifulSoup
http://lxml.de/elementsoup.html
BeautifulSoup 很适合解析 html。您可以检查它的示例,发现它与其他示例相比很好。
BeautifulSoup is good to parse the html. You can check its example and find that its good compare to the others.
lxml 是通常推荐的。具体来说,lxml.html(如果我没记错的话)。
我相信它在底层使用了 libxml2,但如果 html 特别令人讨厌,则会回退到 beautifulsoup,但不要相信我的话,请查看该网站! ( http://lxml.de/ )
lxml is the one that's generally recommended. Specifically, lxml.html (if I recall correctly).
I believe it makes use of libxml2 under-the-hood, but falls back to beautifulsoup if the html is particularly nasty, but don't take my word for it, check out the website! ( http://lxml.de/ )