這篇文章將為大家詳細講解有關Python3爬蟲中pyspider框架的簡介,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
pyspider 框架介紹
pyspider 是由國人 binux 編寫的強大的網絡爬蟲系統,其 GitHub 地址為 https://github.com/binux/pyspider,官方文檔地址為 http://docs.pyspider.org/。
pyspider 帶有強大的 WebUI、腳本編輯器、任務監控器、項目管理器以及結果處理器,它支持多種數據庫后端、多種消息隊列、JavaScript 渲染頁面的爬取,使用起來非常方便。
1. pyspider 基本功能
我們總結了一下,PySpider 的功能有如下幾點。
提供方便易用的 WebUI 系統,可以可視化地編寫和調試爬蟲。
提供爬取進度監控、爬取結果查看、爬蟲項目管理等功能。
支持多種后端數據庫,如 MySQL、MongoDB、Redis、SQLite、Elasticsearch、PostgreSQL。
支持多種消息隊列,如 RabbitMQ、Beanstalk、Redis、Kombu。
提供優先級控制、失敗重試、定時抓取等功能。
對接了 PhantomJS,可以抓取 JavaScript 渲染的頁面。
支持單機和分布式部署,支持 Docker 部署。
如果想要快速方便地實現一個頁面的抓取,使用 pyspider 不失為一個好的選擇。
2. 與 Scrapy 的比較
后面會介紹另外一個爬蟲框架 Scrapy,我們學習完 Scrapy 之后會更容易理解此部分內容。我們先了解一下 pyspider 與 Scrapy 的區別。
pyspider 提供了 WebUI,爬蟲的編寫、調試都是在 WebUI 中進行的,而 Scrapy 原生是不具備這個功能的,采用的是代碼和命令行操作,但可以通過對接 Portia 實現可視化配置。
pyspider 調試非常方便,WebUI 操作便捷直觀,在 Scrapy 中則是使用 parse 命令進行調試,論方便程度不及 pyspider。
pyspider 支持 PhantomJS 來進行 JavaScript 渲染頁面的采集,在 Scrapy 中可以對接 ScrapySplash 組件,需要額外配置。
PySpide r 中內置了 PyQuery 作為選擇器,在 Scrapy 中對接了 XPath、CSS 選擇器和正則匹配。
pyspider 的可擴展程度不足,可配制化程度不高,在 Scrapy 中可以通過對接 Middleware、Pipeline、Extension 等組件實現非常強大的功能,模塊之間的耦合程度低,可擴展程度極高。
如果要快速實現一個頁面的抓取,推薦使用 pyspider,開發更加便捷,如快速抓取某個普通新聞網站的新聞內容。如果要應對反爬程度很強、超大規模的抓取,推薦使用 Scrapy,如抓取封 IP、封賬號、高頻驗證的網站的大規模數據采集。
3. pyspider 的架構
pyspider 的架構主要分為 Scheduler(調度器)、Fetcher(抓取器)、Processer(處理器)三個部分,整個爬取過程受到 Monitor(監控器)的監控,抓取的結果被 Result Worker(結果處理器)處理,如圖 12-1 所示。
圖 12-1 pyspider 架構圖
Scheduler 發起任務調度,Fetcher 負責抓取網頁內容,Processer 負責解析網頁內容,然后將新生成的 Request 發給 Scheduler 進行調度,將生成的提取結果輸出保存。
pyspider 的任務執行流程的邏輯很清晰,具體過程如下所示。
每個 pyspider 的項目對應一個 Python 腳本,該腳本中定義了一個 Handler 類,它有一個 on_start() 方法。爬取首先調用 on_start() 方法生成最初的抓取任務,然后發送給 Scheduler 進行調度。
Scheduler 將抓取任務分發給 Fetcher 進行抓取,Fetcher 執行并得到響應,隨后將響應發送給 Processer。
Processer 處理響應并提取出新的 URL 生成新的抓取任務,然后通過消息隊列的方式通知 Schduler 當前抓取任務執行情況,并將新生成的抓取任務發送給 Scheduler。如果生成了新的提取結果,則將其發送到結果隊列等待 Result Worker 處理。
Scheduler 接收到新的抓取任務,然后查詢數據庫,判斷其如果是新的抓取任務或者是需要重試的任務就繼續進行調度,然后將其發送回 Fetcher 進行抓取。
不斷重復以上工作,直到所有的任務都執行完畢,抓取結束。
抓取結束后,程序會回調 on_finished() 方法,這里可以定義后處理過程。
關于Python3爬蟲中pyspider框架的簡介就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。