摘要:一個爬蟲框架的雛形,應該包含調度器隊列請求對象等。我們平時寫的爬蟲程序,連最基本的框架都不具備。這樣,不僅開發效率會提高很多,而且爬蟲的健壯性也更強。支持多種消息隊列如。將抓取任務分發給進行抓取,執行并得到響應隨后將響應發送給。
為什么要使用爬蟲框架
在我們平常的爬蟲使用過程中,只是簡單的利用 requsets, xpath 等爬蟲庫,遠遠無法達到一個爬蟲框架的要求。一個爬蟲框架的雛形,應該包含調度器、隊列、請求對象等。我們平時寫的爬蟲程序,連最基本的框架都不具備。
但是這樣的架構和模塊還是太簡單,遠遠達不到一個框架的要求。如果我們將各個組件獨立出來,定義成不同的模塊,也就慢慢形成了一個框架。
有了框架之后,我們就不必關心爬蟲的全部流程,異常處理、任務調度等都會集成在框架中。我們只需要關心爬蟲的核心邏輯部分即可,如頁面信息的提取,下一步請求的生成等。這樣,不僅開發效率會提高很多,而且爬蟲的健壯性也更強。
在項目實戰過程中,我們往往會采用爬蟲框架來實現抓取,這樣可提升開發效率、節省開發時間。而 pyspider 就是一個非常優秀的爬從框架,它的操作便捷、功能強大、利用它我們可以快速方便地完成爬蟲的開發。
pyspider 框架介紹pyspider 是由國人 binux 編寫的強大的網絡爬從系統,它帶有強大的 WebUI、腳本編輯器、任務監控器、項目管理以及結果處理器,它支持多種數據庫后端、多種消息隊列、JavaScript 渲染頁面的爬取。使用起來非常方便。
其 GiHub 地址為:
https://github.com/binux/pysp...
官方文檔地址:
http://docs.pyspider.org/
pyspider 基本功能pyspider 的功能有如下幾點:
1 提供方便易用的 WebUI 系統,可視化地編寫和調式爬蟲
2 提供爬取進度監控、爬取結果查看、爬蟲項目管理等功能。
3 支持多種后端數據庫,如 MySQL、MongoDB、Reids、SQLite、Elasticsearch、PostgreSQL。
4 支持多種消息隊列、如 RabbitMQ、Beanstalk、Redis、Kombu。
5 提供優先級控制、失敗重試、定時抓取等功能。
6 對接了 PhantomJS、可以抓取 JavaScript 渲染的頁面。
7 支持單機和分布式部署、支持 Docker 部署。
如果想要快速方便地實現一個頁面的抓取,使用 pyspider 不失為一個好的選擇。如快速抓取某個普通新聞網站的新聞內容。但如果應對反爬程度很強、超大規模的抓取、推薦使用 Scrapy、如抓取封 IP、封賬號、高頻驗證的網站的大規模數據采集。
pyspider 的架構pyspider 的架構主要分為 Scheduler(調度器)、Fetcher(抓取器)、Processer(處理器)三個部分。整個爬取過程受到 Monitor(監控器)的監控,抓取的結果被 Result Worker(結果處理器)處理。
Scheduler 發起任務調度,Fetcher 負責抓取網頁內容,Processer 負責解析網頁內容,然后將新生成的 Request 發給 Scheduler 進行調度,將生成的提取結果輸出保存。
pyspider 的任務執行流程的邏輯很清晰,具體過程如下所示:
1 每個 pysipder 的項目對應一個 Python 腳本,該腳本定義了一個 Handler 類,它有一個 on_start() 方法。爬取首先調用 on_start() 方法生成最初的抓取任務,然后發送給 Scheduler。
2 Scheduler 將抓取任務分發給 Fetcher 進行抓取,Fetcher 執行并得到響應、隨后將響應發送給 Processer。
3 Processer 處理響應并提取出新的 URL 生成新的抓取任務,然后通過消息隊列的方式通知 Scheduler 當前抓取任務執行情況,并將新生成的抓取任務發送給 Scheduler。如果生成了新的提取結果,則將其發送到結果隊列等待 Result Worker 處理。
4 Scheduler 接收到新的抓取任務,然后查詢數據庫,判斷其如果是新的抓取任務或者是需要重試的任務就繼續進行調度,然后將其發送回 Fetcher 進行抓取。
5 不斷重復以上工作、直到所有的任務都執行完畢,抓取結束。
6 抓取結束后、程序會回調 on_finished() 方法,這里可以定義后處理過程。
今天帶大家了解下 pyspider 的基本功能和架構,對 pysider 有個整體的認知。接下來會在出篇 pysipder 實戰項目,帶你更進一步了解 pysipder 的使用。
本文來源于公眾號「癡海」,每天分享 python 干貨,回復「1024」,你懂得。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41950.html
摘要:現在我們用一個實戰項目,來進一步掌握框架的使用。此次的項目爬取的目標是去哪兒網,我要將所有攻略的作者標題出發日期人均費用攻略正文等保存下來,存儲到中。代表當前的爬取速率。 showImg(https://segmentfault.com/img/remote/1460000015563534); 閱讀文本大概需要 13 分鐘。 通過之前的文章介紹,你現在應該對 pyspider 有了一...
摘要:所以如果對爬蟲有一定基礎,上手框架是一種好的選擇。缺少包,使用安裝即可缺少包,使用安裝即可上一篇文章網絡爬蟲實戰爬取相關庫的安裝的安裝下一篇文章網絡爬蟲實戰爬蟲框架的安裝 上一篇文章:Python3網絡爬蟲實戰---9、APP爬取相關庫的安裝:Appium的安裝下一篇文章:Python3網絡爬蟲實戰---11、爬蟲框架的安裝:ScrapySplash、ScrapyRedis 我們直接...
摘要:背景一個國人編寫的強大的網絡爬蟲系統并帶有強大的。框架學習時走過的一些坑錯誤我所遇到的一些錯誤首先,本爬蟲目標使用框架爬取網站的帖子中的問題和內容,然后將爬取的數據保存在本地。修飾器,表示每天會執行一次,這樣就能抓到最新的帖子了。 背景: PySpider:一個國人編寫的強大的網絡爬蟲系統并帶有強大的WebUI。采用Python語言編寫,分布式架構,支持多種數據庫后端,強大的WebUI...
閱讀 2037·2021-11-08 13:22
閱讀 2500·2021-09-04 16:40
閱讀 1144·2021-09-03 10:29
閱讀 1709·2019-08-30 15:44
閱讀 2120·2019-08-30 11:13
閱讀 2785·2019-08-29 17:07
閱讀 1963·2019-08-29 14:22
閱讀 1244·2019-08-26 14:00