深刻使用過lxml的都會深深地喜歡上它,雖然BeautifulSoup很流行,可是深刻了解lxml後,你就不再會使用bs了css
我以爲beautifulsoup很差用,速度也慢(雖然可使用lxml做爲解析器了).另外soup.find_all
這種簡直就是手工時代
的操做(不少人使用find
find_all
這幾個函數, 其實它們使用起來不是很愉快),手工操做的另外一個特徵是須要本身手寫正則表達式(正則是一個小範圍內的軍刀,大範圍用是不對的)html
多使用soup.select
纔是正確的選擇, 多簡單方便.python
爬蟲對html頁面作的操做,大部分時候在選取東西,find_all
還要本身手工去寫(好比手工寫正則表達式, it's a hell).正則表達式
使用XPath
以及CSS選擇器
纔是明智的選擇,這二者,瀏覽器均可以幫咱們自動生成,何樂不爲?segmentfault
另外,lxml
用起來舒服多了,速度也不錯.瀏覽器
另外,lxml安裝是一個難題,常有不少錯誤,使人望而生畏,這裏提供兩種方法app
Windows平臺: 使用Anaconda集成安裝包,無腦解決函數
Ubuntu平臺: sudo apt-get install python-lxml
無腦解決
我從不以爲去本身解決lxml在這些平臺的安裝有什麼很大價值,反而容易使人自我懷疑.(寶貴的時間爲什麼要浪費在這種事情上面?)url
下面就來一個示例:code
##################### # 獲取SF首頁的標題 ##################### from lxml.etree import HTML import requests url = 'https://segmentfault.com/' css_selector = '.title>a' #這是利用瀏覽器自動獲取的,我甚至都不用知道它是什麼意思 text = requests.get(url).text page = HTML(text) titles = [] for title in page.cssselect(css_selector): titles.append(title.text) print titles # 這一段程序寫下來,不用動腦筋(無腦寫),不消耗心智
利用瀏覽器獲取XPath/CSS選擇器的方法: 1. 推薦使用Firefox, 比Chrome強大太多 2. 右鍵元素-->copy XPath