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