1. 程式人生 > >python爬蟲系列(一):爬蟲簡介

python爬蟲系列(一):爬蟲簡介

一 什麼是爬蟲
爬蟲:就是抓取網頁資料的程式。

二、爬蟲怎麼抓取網頁資料:
網頁三大特徵:
-1. 網頁都有自己唯一的URL(統一資源定位符)來進行定位
-2. 網頁都使用HTML (超文字標記語言)來描述頁面資訊。
-3. 網頁都使用HTTP/HTTPS(超文字傳輸協議)協議來傳輸HTML資料。
爬蟲的設計思路:
-1. 首先確定需要爬取的網頁URL地址。
-2. 通過HTTP/HTTP協議來獲取對應的HTML頁面。
-3. 提取HTML頁面裡有用的資料:
a. 如果是需要的資料,就儲存起來。
b. 如果是頁面裡的其他URL,那就繼續執行第二步。

四、為什麼選擇Python做爬蟲?
可以做爬蟲的語言有很多,如 PHP、Java、C/C++、Python等等…
- PHP 雖然是世界上最好的語言,但是他天生不是幹這個的,而且對多執行緒、非同步支援不夠好,併發處理能力很弱。爬蟲是工具性程式,對速度和效率要求比較高。
- Java 的網路爬蟲生態圈也很完善,是Python爬蟲最大的對手。但是Java語言本身很笨重,程式碼量很大。
重構成本比較高,任何修改都會導致程式碼的大量變動。爬蟲經常需要修改部分採集程式碼。
- C/C++ 執行效率和效能幾乎最強,但是學習成本很高,程式碼成型比較慢。
能用C/C++做爬蟲,只能說是能力的表現,但是不是正確的選擇。
- Python 語法優美、程式碼簡潔、開發效率高、支援的模組多,相關的HTTP請求模組和HTML解析模組非常豐富。
還有強大的爬蟲Scrapy,以及成熟高效的 scrapy-redis分散式策略。
而且,呼叫其他藉口也非常方便(膠水語言)

五、爬蟲必須掌握的知識:
-1. Python的基本語法知識
-2. 如何抓取HTML頁面:
HTTP請求的處理,urllib、urllib2、requests
處理後的請求可以模擬瀏覽器傳送請求,獲取伺服器響應的檔案
-3. 解析伺服器響應的內容
re、xpath、BeautifulSoup4(bs4)、jsonpath、pyquery等
使用某種描述性一樣來給我們需要提取的資料定義一個匹配規則,
符合這個規則的資料就會被匹配。
-4. 如何採集動態HTML、驗證碼的處理
通用的動態頁面採集:Selenium + PhantomJS(無介面):模擬真實瀏覽器載入js、ajax等非靜態頁面資料
Tesseract:機器學習庫,機器影象識別系統,可以處理簡單的驗證碼,複雜的驗證碼可以通過手動輸入/專門的打碼平臺
-5 Scrapy框架:(Scrapy,Pyspider)
高定製性高效能(非同步網路框架twisted),所以資料下載速度非常快,
提供了資料儲存、資料下載、提取規則等元件。
-6 分散式策略 scrapy-reids:
scrapy-redis,在Scrapy的基礎上添加了一套以 Redis 資料庫為核心的元件。
讓Scrapy框架支援分散式的功能,主要在Redis裡做 請求指紋去重、請求分配、資料臨時儲存。

                                (決定做一套爬蟲的系列,每天更新!謝謝支援。)