scrapy_redis分布式爬虫類
1328 ワード
redisといえば、もう一つの爬虫類のフレームscrapyについてお話しします.redis,分布式爬虫類,scrapyとscrapy_redisの最大の違いはschedulerであり、このschedulerだからこそscrapy_redisは分布式を行うことができる.最大の変更は、ベルト付きurlをredisに入れることであり、masterは主にこのキューを維持し、slaveは優先順位キューに基づいて別々に這い出すことができ、同時にredisにsetがあり、dupefilerモジュールはハッシュ指紋を通じて重くし、分布式を保証する.itemはmasterのredisに戻ってから他のデータベースに格納します.
scrapyの改造:settingを改造する:
1.(必須)scrapy_の使用redis.duperfilter.REPDupeFilterの再編成部品は、redisデータベースで再構築されます.
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
2.(必須)scrapy_を使用しましたredisのスケジューラは、redisにリクエストを割り当てます.
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
3.(必須)Redis queuesが一時停止と一時停止を許可した後にリカバリします.つまり、redis queuesをクリーンアップしません.
SCHEDULER_PERSIST = True
4.(必須)RedisPipelineでitemをspiderに書き込む.name:itemsのredisのlistでは、後の分布式でitemを処理します.
これはscrapy-redisによって実現されており、自分でコードを書く必要はなく、直接使用すればいいです.
ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 100 } REDIS_HOST = "127.0.0.1"REDIS_PORT = 6379
spider:
scrapyとscrapy_redisの違いscrapy_redisまとめ
scrapyの改造:settingを改造する:
1.(必須)scrapy_の使用redis.duperfilter.REPDupeFilterの再編成部品は、redisデータベースで再構築されます.
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
2.(必須)scrapy_を使用しましたredisのスケジューラは、redisにリクエストを割り当てます.
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
3.(必須)Redis queuesが一時停止と一時停止を許可した後にリカバリします.つまり、redis queuesをクリーンアップしません.
SCHEDULER_PERSIST = True
4.(必須)RedisPipelineでitemをspiderに書き込む.name:itemsのredisのlistでは、後の分布式でitemを処理します.
これはscrapy-redisによって実現されており、自分でコードを書く必要はなく、直接使用すればいいです.
ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 100 } REDIS_HOST = "127.0.0.1"REDIS_PORT = 6379
spider:
from scrapy_redis.spiders import RedisSpider
import scrapy
class ToutiaoSpider(RedisSpider):
name='toutiao'
redis_key = 'start_url' # start_url redis
def parse(self, response):
....
scrapy.Request(url, callback=xxx)
scrapyとscrapy_redisの違いscrapy_redisまとめ