Archive for 七月, 2017

python中的beautifulsoup和xpath有什么異同點?

2017-07-21

python中的beautifulsoup和xpath有什么異同點?


python中的beautifulsoup和xpath都能解析html,那么問題來了
1.他們有什么異同點?
2.他們各自擅長的地方是什么?

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。

  1. title = soup.select('.content div.title h3')

同樣的代碼用Xpath寫起來會很麻煩

  1. title = tree.xpath("//*[@class='content']/div[@class='content']/h3")

3 總結

需求比較確定,要求性能的場合用lxml,快速開發用BeautifulSoup

ps: BeautifulSoup4可以使用lxml作為parser了

中国云南11选5走势图