python中的beautifulsoup和xpath有什么异同点
Xpath 必然 是要比 BeautifulSoup 在时间和空间上都要性能更好一些。
其中理由有很多,其中一个很明显的是 BeautifulSoup 在构建一个对象的时候需要
传入一个参数以指定解析器,而在它支持的众多的解析器中,lxml 是性能最佳的
,那么 BeautifulSoup 对象的各种方法可以理解为是对 lxml 的封装,
换句话说,BeautifulSoup 本质上并没有创造出自己的解析方式,
而是建立在各种解析器的基础上。考虑到其他一些内部耗时因素,
BeautifulSoup 注定会比 lxml 甚至是任何一个构建对象时使用的解析器要慢,
要更耗费空间。只有付出这样子的代价才能够换来它的简洁、优美与用户友好性。
BeautifulSoup是一个库,而XPath是一种技术,python中最常用的XPath库是lxml
区别:
1.性能lxml>>BeautifulSoup
原理不同:
BeautifulSoup用python写;BeautifulSoup基于DOM ;
解析整个文档,解析整个DOM树;时间和内存开销大;性能方面差一些
lxml局部遍历;lxml用c写;
2.易用性 BeautifulSoup >>lxml
BeautifulSoup用起来简单,API人性化,支持css选择器
lxml的XPath写起来麻烦,开发效率较低
eg:
BeautifulSoup
title = soup.select(’.content div.title h3’)
同样的代码用Xpath写起来会很麻烦
title = tree.xpath("//*[@class=‘content’]/div[@class=‘content’]/h3")
总结:
需求较稳定,要求性能—用lxml ;快速开发用BeautifulSoup
BeautifulSoup4可以使用lxml作为parser