2015-10-02 131 views
0

我最近在Python中使用BeautifulSoup學習了網頁抓取,但是今天早些時候我建議考慮使用XPath表達式。Python的優點和缺點使用BeautifulSoup和XPath進行網頁刮取

XPath和BeautifulSoup的工作方式有什麼不同?

+1

這是完全意見的基礎 –

+0

我想弄清楚使用一個而不是其他的好處。當然,有人說:「BS是我使用的,因爲我認爲總體上它更好」,而我實際上要求的是「使用XPath的有益​​特性將會是...」 – McLeodx

+0

都會推薦不同的方法而後面的答案也與自己的說法相矛盾*說了這麼一句話,我發現寫一個bs4代碼段比對應的lxml代碼容易得多*,所以即使他們完全無法完全決定哪個*更好*。你會考慮如何讓一個比另一個更好,速度,易用性,代碼可讀性,或者你準確定義最好的標準是什麼? –

回答

0

我會建議bs4,它的用法和文檔更友好,會節省你的時間和增加信心,這是你自學串處理時非常重要的。

但實際上,它需要強大的CPU。我曾在1core VPS上使用不超過30個連接,並且python進程的CPU使用率保持在100%。這可能是糟糕的實現的結果,但是後來我將所有內容都轉告給re.compile,並且性能問題消失了。

至於性能,正則表達式> lxml >> bs4。至於把事情做完,沒有區別。

2

我已經使用了BeautifulSoup和lxml,並傾向於使用基於經驗的lxml。見performance comparison here。在使用BeautifulSoup時需要注意的一件事是明確選擇解析器。爲您選擇的默認解析器可能會錯誤地解析結果,而不會導致惡夢的警告 - my experience here

話雖如此,我發現寫一個bs4代碼片段比對應的lxml容易。