python中的beautifulsoup和xpath有什麼異同點?
01-14
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寫的,因此性能方面自然會差很多。title = soup.select(".content div.title h3")
同樣的代碼用Xpath寫起來會很麻煩
title = tree.xpath("//*[@class="content"]/div[@class="content"]/h3")
3 總結
需求比較確定,要求性能的場合用lxml,快速開發用BeautifulSoupps: 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 |