謝邀,BeautifulSoup是壹個庫,而XPath是壹種技術,python中最常用的XPath庫是lxml,因此,這裏就拿lxml來和BeautifulSoup做比較吧
1 ?性能 lxml >> BeautifulSoup
BeautifulSoup和lxml的原理不壹樣,BeautifulSoup是基於DOM的,會載入整個文檔,解析整個DOM樹,因此時間和內存開銷都會大很多。而lxml只會局部遍歷,另外lxml是用c寫的,而BeautifulSoup是用python寫的,因此性能方面自然會差很多。
2 易用性 ?BeautifulSoup >> lxml
BeautifulSoup用起來比較簡單,API非常人性化,支持css選擇器。lxml的XPath寫起來麻煩,開發效率不如BeautifulSoup。
title = soup.select('.content div.title h3')
同樣的代碼用Xpath寫起來會很麻煩
title = tree.xpath("//*[@class='content']/div[@class='content']/h3")
3 ?總結
需求比較確定,要求性能的場合用lxml,快速開發用BeautifulSoup
ps: BeautifulSoup4可以使用lxml作為parser了
編輯於 2016-01-08