女人18毛片水真多,午夜成人无码福利免费视频,欧美丰满熟妇xxxxx,岳和我厨房做爽死我了A片视频

位置:
首頁

>

>

在1分鐘內(nèi)獲得Scrapy分布式爬蟲,隊(duì)列和Bloom過濾器
時(shí)間:

使用Scrapy開發(fā)分布式爬蟲?你知道最快的方法嗎?一分鐘內(nèi)可以開發(fā)或修改分布式搜尋器嗎?話不多說,讓我們先看看如何練習(xí),然后再詳細(xì)討論細(xì)節(jié)。

快速入門步驟0:首先安裝Scrapy-Distributed:pip install scrapy-distributed如果沒有所需的操作條件,則可以啟動(dòng)兩個(gè)Docker映像進(jìn)行測(cè)試(RabbitMQ和RedisBloom):#拉并運(yùn)行RabbitMQ容器。

docker run -d --name rabbitmq -p 0.0.0.0:15672:15672 -p 0.0.0.0:5672:5672 rabbitmq:3#拉并運(yùn)行RedisBloom容器。

docker run -d --name redis-redisbloom -p 0.0.0.0:6379:6379 redislabs / rebloom:latest步驟1(不需要):如果您有現(xiàn)成的搜尋器,則可以跳過此步驟并直接轉(zhuǎn)到步驟2.要?jiǎng)?chuàng)建一個(gè)爬蟲項(xiàng)目,我將以一個(gè)站點(diǎn)地圖爬蟲為例:scrapy startproject simple_example然后修改Spiders文件夾中的爬蟲程序文件:從scrapy_distributed.spiders.sitemap從scrapy_distributed.queues.amqp導(dǎo)入SitemapSpider導(dǎo)入Distributed Queue Distributed。

MySpider(SitemapSpider):名稱=“示例”; sitemap_urls = [“ http://www.people.com.cn/robots.txt”] queue_conf:QueueConfig = QueueConfig(name =“ example”,持久性= True,參數(shù)=“ x-queue-mode”: “ lazy”,“ x-max-priority”:255)redis_bloom_conf:RedisBloomConfig = RedisBloomConfig(key =“ example:dupefilter”)def parse(自身,響應(yīng)):信息。

(f“解析響應(yīng),URL:{response.url}”)。

步驟2:您只需要在配置文件settings.py下修改SCHEDULER,DUPEFILTER_CLASS并添加RabbitMQ和Redis的相關(guān)配置,即可獲得一個(gè)立即發(fā)布分布式抓取工具。

Scrapy-Distributed將幫助您使用默認(rèn)配置初始化RabbitMQ隊(duì)列,并使用默認(rèn)配置初始化RedisBloom Bloom過濾器。

#在集成RabbitMQ和RedisBloom調(diào)度程序時(shí)#如果僅調(diào)度程序的RabbitMQ,則可以在其中填充scrapy_distributed.schedulers.amqp.RabbitSchedulerSCHEDULER =“ scrapy_distributed.schedulers.DistributedScheduler” SCHEDULER_QUEUE_CLASS =“ scrapy_distributed.queues.amqp.RabbitQueue” RABBITMQ_CONNECTION_PARAMETERS =“ amqp://guest:guest@localhost:5672/example/?heartbeat=0""DUPEFILTER_CLASS="scrapy_distributed.dupefilters.redis_bloom.RedisBloomDupeFilter"BLOOM_DUPEFILTER_REDIS_RED="=” ; BLOOM_“ PEFILTER_REDPORT_DUPEFILTER_RED 6379#Redis Bloom客戶端配置,只需復(fù)制REDIS_BLOOM_PARAMS = {” redis_cls“:” redisbloom.client.Client“}#Bloom過濾器誤判率配置,默認(rèn)值為0.001BLOOM_DURATEFTER您無需編寫配置,默認(rèn)值為100_0000 BLOOM_DUPEFILTER_CAPACITY = 100_0000您還可以向Spider類添加兩個(gè)類屬性以初始化RabbitMQ隊(duì)列或RedisBloom Bloom過濾器:MySpider(SitemapSpider)類:...#通過arguments參數(shù),您可以配置更多參數(shù)。

此處的示例配置有延遲模式和最大優(yōu)先級(jí)queue_conf:QueueConfig = QueueConfig(name =“ example”,持久性= True,arguments = {“ x-queue-mode”:“ lazy”,“ x” -max-priority”:255)#通過密鑰,錯(cuò)誤率和容量,誤判率和容量redis_bloom_conf分別配置bloom過濾器的redis密鑰:RedisBloomConfig = RedisBloomConfig(key =“ example:dupefilter”,error_rate = 0.001,容量= 100_0000)...步驟3:抓取抓取示例檢查RabbitMQ隊(duì)列和RedisBloom過濾器是否正常運(yùn)行?如您所見,在Scrapy-Distributed的支持下,我們只需要修改配置文件即可將普通爬網(wǎng)程序修改為支持RabbitMQ隊(duì)列和RedisBloom Bloom過濾器的分布式爬網(wǎng)程序。

對(duì)于RabbitMQ和RedisBloom環(huán)境,修改配置的時(shí)間僅為一分鐘。

關(guān)于Scrapy-Distributed當(dāng)前,Scrapy-Distributed主要指Scrapy-Redis和scrapy-rabbitmq這兩個(gè)庫。

如果您有使用Scrapy的經(jīng)驗(yàn),您可能會(huì)知道Scrapy-Redis是一個(gè)可以快速進(jìn)行分布式爬網(wǎng)程序的庫。

如果您試圖將RabbitMQ用作搜尋器任務(wù)隊(duì)列,則可能已經(jīng)看到了scrapy-rabbitmq項(xiàng)目。

確實(shí),Scrapy-Redis已經(jīng)非常方便,而且scrapy-rabbitmq也可以將RabbitMQ實(shí)施為任務(wù)隊(duì)列,但是它們有一些缺點(diǎn)。

我將在這里簡(jiǎn)要提出幾個(gè)問題。

Scrapy-Redis使用Redis設(shè)置重復(fù)數(shù)據(jù)刪除。

鏈接數(shù)量越大,占用的內(nèi)存就越大,這不適合具有大量任務(wù)的分布式搜尋器。

Scrapy-Redis使用Redis的列表作為隊(duì)列。

在許多情況下,任務(wù)積壓,將導(dǎo)致過多的內(nèi)存資源消耗。

例如,當(dāng)我們抓取站點(diǎn)地圖時(shí)

產(chǎn)品資料
行業(yè)信息