Python爬蟲高階一之爬蟲框架概述

2021-07-29 02:26:04 字數 1543 閱讀 3981

爬蟲入門之後,我們有兩條路可以走。

乙個是繼續深入學習,以及關於設計模式的一些知識,強化python相關知識,自己動手造輪子,繼續為自己的爬蟲增加分布式,多執行緒等功能擴充套件。另一條路便是學習一些優秀的框架,先把這些框架用熟,可以確保能夠應付一些基本的爬蟲任務,也就是所謂的解決溫飽問題,然後再深入學習它的原始碼等知識,進一步強化。

就個人而言,前一種方法其實就是自己動手造輪子,前人其實已經有了一些比較好的框架,可以直接拿來用,但是為了自己能夠研究得更加深入和對爬蟲有更全面的了解,自己動手去多做。後一種方法就是直接拿來前人已經寫好的比較優秀的框架,拿來用好,首先確保可以完成你想要完成的任務,然後自己再深入研究學習。第一種而言,自己探索的多,對爬蟲的知識掌握會比較透徹。第二種,拿別人的來用,自己方便了,可是可能就會沒有了深入研究框架的心情,還有可能思路被束縛。

不過個人而言,我自己偏向後者。造輪子是不錯,但是就算你造輪子,你這不也是在基礎類庫上造輪子麼?能拿來用的就拿來用,學了框架的作用是確保自己可以滿足一些爬蟲需求,這是最基本的溫飽問題。倘若你一直在造輪子,到最後都沒造出什麼來,別人找你寫個爬蟲研究了這麼長時間了都寫不出來,豈不是有點得不償失?所以,高階爬蟲我還是建議學習一下框架,作為自己的幾把**。至少,我們可以做到了,就像你拿了把槍上戰場了,至少,你是可以打擊敵人的,比你一直在磨刀好的多吧?

博主接觸了幾個爬蟲框架,其中比較好用的是 scrapy 和pyspider。就個人而言,pyspider上手更簡單,操作更加簡便,因為它增加了 web 介面,寫爬蟲迅速,整合了phantomjs,可以用來抓取js渲染的頁面。scrapy自定義程度高,比 pyspider更底層一些,適合學習研究,需要學習的相關知識多,不過自己拿來研究分布式和多執行緒等等是非常合適的。

pyspider是binux做的乙個爬蟲架構的開源化實現。主要的功能需求是:

而這也是絕大多數python爬蟲的需求 —— 定向抓取,結構化化解析。但是面對結構迥異的各種**,單一的抓取模式並不一定能滿足,靈活的抓取控制是必須的。為了達到這個目的,單純的配置檔案往往不夠靈活,於是,通過指令碼去控制抓取是最後的選擇。

而去重排程,佇列,抓取,異常處理,監控等功能作為框架,提供給抓取指令碼,並保證靈活性。最後加上web的編輯除錯環境,以及web任務監控,即成為了這套框架。

pyspider的設計基礎是:以python指令碼驅動的抓取環模型爬蟲

pyspider的架構主要分為 scheduler(排程器), fetcher(抓取器), processor(指令碼執行):

scrapy是乙個為了爬取**資料,提取結構性資料而編寫的應用框架。 可以應用在包括資料探勘,資訊處理或儲存歷史資料等一系列的程式中。

其最初是為了頁面抓取 (更確切來說, 網路抓取 )所設計的, 也可以應用在獲取api所返回的資料(例如 amazon associates web services ) 或者通用的網路爬蟲。scrapy用途廣泛,可以用於資料探勘、監測和自動化測試

scrapy主要包括了以下元件:

scrapy執行流程大概如下:

對這兩個框架進行基本的介紹之後,接下來我會介紹這兩個框架的安裝以及框架的使用方法,希望對大家有幫助。

Python爬蟲學習(七)Scrapy爬蟲框架詳解

engine從spider處獲得爬取請求 request engine將爬取請求 給scheduler,用於排程 engine從scheduler處獲得下乙個要爬取的請求 engine將爬取請求通過中介軟體傳送給 爬取網頁後,形成響應 response 通過中介軟體發給engine engine將收...

python爬蟲之requests的高階使用

1 requests能上傳檔案 匯入requests模組 import requests 定義乙個dict files post請求 response requests.post files files 以字串形式返回 print response.text 結果 data files form h...

Python爬蟲之爬蟲概述

知識點 模擬瀏覽器,傳送請求,獲取響應 網路爬蟲 又被稱為網頁蜘蛛,網路機械人 就是模擬客戶端 主要指瀏覽器 傳送網路請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路資訊的程式。知識點 了解 爬蟲的概念 爬蟲在網際網路世界中有很多的作用,比如 資料採集 抓取招聘 的招聘資訊 資料分析 挖掘...