成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

高效率爬蟲框架之pyspider

MasonEast / 3109人閱讀

摘要:一個(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

相關(guān)文章

  • pyspider 實(shí)戰(zhàn)項(xiàng)目爬取去哪兒

    摘要:現(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 有了一...

    banana_pi 評(píng)論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---10、爬蟲框架的安裝:PySpider、Scrapy

    摘要:所以如果對(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 我們直接...

    張憲坤 評(píng)論0 收藏0
  • Pyspider框架 —— Python爬蟲實(shí)戰(zhàn)爬取 V2EX 網(wǎng)站帖子

    摘要:背景一個(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...

    codecraft 評(píng)論0 收藏0
  • 爬蟲入門

    摘要:通用網(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ù),...

    defcon 評(píng)論0 收藏0
  • 爬蟲入門

    摘要:通用網(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ù),...

    Invoker 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<