Python下的爬蟲庫,一般分為3類。
抓取類
urllib(Python3),這是Python自帶的庫,可以模擬瀏覽器的請求,獲得Response用來解析,其中提供了豐富的請求手段,支持Cookies、Headers等各類參數,眾多爬蟲庫基本上都是基于它構建的。建議學習了解一下,因為有些罕見的問題需要通過底層的方式解決。
requests,基于urllib,但是更方便易用。強烈推薦掌握。
解析類
re:正則表達式官方庫,不僅僅是學習爬蟲要使用,在其他字符串處理或者自然語言處理的過程中,這是繞不過去的一個庫,強烈推薦掌握。
BeautifulSoup:方便易用,好上手,推薦掌握。通過選擇器的方式選取頁面元素,并獲取對應的內容。
lxml:使用
lxml.etree
將字符串轉換之后,我們可以使用XPath表達式來解析網頁,終極推薦。XPath對于網頁解析的支持非常強大,而且很容易上手。它本來是設計出來進行XML元素選擇的,但是它同樣支持HTML。pyquery:另一個強大的解析庫,感興趣的可以學習下。
綜合類
selenium:所見即所得式爬蟲,綜合了抓取和解析兩種功能,一站式解決。很多動態網頁不太容易通過requests、scrapy直接抓取,比如有些url后邊帶了加密的隨機數,這些算法不太好破解,這種情況下,只能通過直接訪問網址、模擬登陸等方式請求到頁面源碼,直接從網頁元素中解析內容,這種情況下,Selenium就是最好的選擇。不過Selenium最初設計出來,是用于測試的。強烈推薦。
scrapy:另一個爬蟲神器,適合爬取大量頁面,甚至對分布式爬蟲提供了良好的支持。強烈推薦。
以上這些是我個人經常使用的庫,但是還有很多其他的工具值得學習。比如Splash也支持動態網頁的抓取;Appium可以幫助我們抓取App的內容;Charles可以幫助我們抓包,不管是移動端還是PC網頁端,都有良好的支持;pyspider也是一個綜合性的框架;MySQL(pymysql)、MongoDB(pymongo),抓到了數據就要存儲,數據庫也是繞不過去的。
掌握了以上這些,基本上大部分的爬蟲任務都難不倒你啦!
你也可以關注我的,或者我的個人博客,里邊會有一些爬蟲類的分享。數洞:www.data-insights.cn/www.data-insight.cn.