學爬蟲之道
近來在閱讀 《羽量級 Django》,雖然還沒有讀完, 但我已經收益頗多。 我不得不稱讚 Django 框架的開發人員, 他們把 Web 開發降低門檻。
Django 已經算是入門, 所以自己把學習目標轉到爬蟲。 自己接下來會利用三個月的時間來專攻 Python 爬蟲。 這幾天, 我使用“主題閱讀方法”閱讀 Python 爬蟲入門的文檔。 制定 Python 爬蟲的學習路線。
第一階段:夯實
入門要就是在打基礎, 所以要從最基礎的庫學起。 下面是幾個庫是入門最經典的庫
1)urllib
它屬於 Python 標準庫。 該庫的作用是請求網頁並下載資料。 在學習該庫之前, 最好把 HTTP 協議瞭解下。 這會大大提高後面的學習效率。
先學會如何使用 urllib 請求到資料, 再學習一些高級用法。 例如:
設置 Headers: 某些網站反感爬蟲的到訪, 於是對爬蟲一律拒絕請求。 設置 Headers 可以把請求偽裝成流覽器訪問網站。
Proxy 的設置: 某些網站做了反倒鏈的設置,
錯誤解析:根據 URLError 與 HTTPError 返回的錯誤碼進行解析。
Cookie 的使用:可以類比網站登錄, 需要結合 cookielib 一起使用。
2)re
re 是規則運算式庫。 同時也是 Python 標準庫之一。 它的作用是匹配我們需要爬取的內容。 所以我們需要掌握規則運算式常用符號以及常用方法的用法。
3)BeautifulSoup
BeautifulSoup 是解析網頁的一款神器。 它可以從 HTML 或者 XML 檔中提取資料。 配合 urllib 可以編寫出各種小巧精幹的爬蟲腳本。
第二階段:進階
當把基礎打牢固之後, 我們需要更進一步學習。 使用更加完善的庫來提高爬取效率
1) 使用多執行緒
使用多執行緒抓取資料, 提高爬取資料效率。
2)學習 Requests
Requests 作為 urlilb 的替代品。 它是更加人性化、更加成熟的協力廠商庫。
3)學習 Xpath
Xpath 也算是一款神器。 它是一款高效的、表達清晰簡單的分析語言。 掌握它以後介意棄用規則運算式了。 一般是使用流覽器的開發者工具 加 lxml 庫。
4)學習 Selenium
使用 Selenium, 模擬流覽器提交類似用戶的操作, 處理js動態產生的網頁。 因為一些網站的資料是動態載入的。 類似這樣的網站, 當你使用滑鼠往下滾動時, 會自動載入新的網站。
第三階段:突破
1)學習 Scrapy
Scrapy 是一個功能非常強大的分散式爬蟲框架。 我們學會它, 就可以不用重複造輪子。
2)資料存儲
如果爬取的資料條數較多, 我們可以考慮將其存儲到資料庫中。
MongoDB、SqlLite的用法。 更加深入的, 可以學習資料庫的查詢優化。
第四階段:為我所用
當爬蟲完成工作, 我們已經拿到資料。 我們可以利用這些資料做資料分析、資料視覺化、做創業專案原始啟動資料等。
我們可以學習 NumPy、Pandas、 Matplotlib 這三個庫。
NumPy :它是高性能科學計算和資料分析的基礎包。
Pandas : 基於 NumPy 的一種工具, 該工具是為了解決資料分析任務而創建的。 它可以算得上作弊工具。
Matplotlib:Python中最著名的繪圖系統Python中最著名的繪圖系統。 它可以製作出散點圖, 折線圖, 橫條圖, 長條圖, 餅狀圖, 箱形圖散點圖, 折線圖, 橫條圖, 長條圖, 餅狀圖, 箱形圖等。