對於網路爬蟲技術的學習,其他教學很少有從整體結構來說的,多數是直接放出某部分代碼。這樣的方法會使初學者摸不著頭腦:就好像是盲人摸象,有人摸到的是象腿,以為是一根大柱子;有人摸到的是大象耳朵,以為是一把大蒲扇等。
在開始第一個爬蟲之前,先從宏觀角度出發說清楚兩個問題:Python爬蟲的流程是怎樣的? 三個流程的技術實現是什麼?
值得說明的是,本書選擇了Python 3作為開發語言,現在Python最新版為Python 3.7。熟悉Python 2的讀者可以在本書代碼的基礎上稍加改動,用Python 2運行。值得注意的是,Python 2即將在2020年1月1日停止支持,因此建議初學者直接安裝Python 3進行學習。
由於本書的潛在讀者多數使用Windows操作系統,因此本書大部分實例都是基於Windows編寫和運行的。如果使用的是Linux和Mac OS操作系統,在搭建好Python平台之後也可以直接運行本書中的代碼。
Python爬蟲的流程
網路爬蟲的流程其實非常簡單,主要可以分為三部分:(1)獲取網頁;(2)解析網頁(提取數據);(3)存儲數據。
(1)獲取網頁就是給一個網址發送請求,該網址會返回整個網頁的數據。類似於在瀏覽器中鍵入網址並按回車鍵,然後可以看到網站的整個頁面。
(2)解析網頁就是從整個網頁的數據中提取想要的數據。類似於你在頁面中想找到產品的價格,價格就是你要提取的數據。
(3)存儲數據也很容易理解,就是把數據存儲下來。我們可以存儲在csv中,也可以存儲在資料庫中。
三個流程的技術實現
下面列出三個流程的技術實現,括弧里是對應的章節。
1.獲取網頁
獲取網頁的基礎技術:requests、urllib和selenium(3&4)。
獲取網頁的進階技術:多進程多線程抓取(8)、登錄抓取(12)、突破IP封禁(9)和使用伺服器抓取(12)。
2.解析網頁
解析網頁的基礎技術:re正則表達式、BeautifulSoup和lxml(5)。
解析網頁的進階技術:解決中文亂碼(10)。
3.存儲數據
存儲數據的基礎技術:存入txt文件和存入csv文件(6)。
存儲數據的進階技術:存入MySQL資料庫和MongoDB資料庫(6)。
除此之外,後續還會介紹Scrapy爬蟲框架,也會介紹分散式爬蟲。
如果對於上述技術不熟悉的讀者也不必擔心,本書將會對其中的技術進行講解,力求做到深入淺出。