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。

title = soup.select(".content div.title h3")

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

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

3 總結

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

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


beautifulsoup 是 HTML 解析庫,XPath 是 HTML / XML 查詢語言。所以你應該是想說 lxml,使用 XPath
技術查詢和處理 HTML / XML 文檔的庫。當然啦,lxml 也支持 CSS 選擇器,只要你安裝 cssselect 庫就可以了。

beautifulsoup 我沒用過,因為

1. 我知道它的時候它是使用正則解析的,比 lxml 使用的 libxml2 C 庫慢

2. 我不想再學一種新的查詢語法(XPath 我早就會一些了,CSS 選擇器更是信手拈來)

3. 安裝 beautifulsoup 和 lxml 對我來說沒什麼差別,因為是 Linux 並且軟體源里有,一條命令搞定。


我怎麼覺得xpath比bs好用多了。 並且也很靈活。特別新版本的lxml更強大


我覺得,我在用的過程是這樣考慮的,xpath 是你需要知道文檔結構,而beautifulsoup 是不知道的時候去嘗試找某些標籤。 說的不對的話請輕噴,用的場景不同。


Bs適合按標籤看著爬黨


我覺得不同主要有以下幾點

學習曲線

性能曲線

對新手友好度


全宇宙最好的文本標籤解析庫當然是bs了,可一遇到js還是表示很無奈,非要說x系列快點實在沒有必要哈哈哈


推薦閱讀:

XHTML 與 HTML 的區別是什麼?
請問如何從頭開始學習製作一款HTML5 小遊戲?
《web全棧工程師的自我修養》這本書里說:不要在簡歷中出現Div+CSS,會減分!請教為什麼這樣說?
請教一個js問題,為什麼報錯?
24歲從零開始學html晚不晚?

TAG:HTML | Python | beautifulsoup | XPath |