scrapy分散爬虫類-scrapy、Redisの

単純な分散爬虫類プロジェクト爬虫類scrapyになるためにプロジェクトを変更する方法1、

公式文書:https://scrapy-redis.readthedocs.io/en/stable/

その上に修正scrapyプロジェクトと2つだけのファイル

爬虫類コンポーネントファイル:

- * -コーディング:UTF-8 - * - 
輸入scrapy
 から scrapy_redis.spidersのインポートRedisSpider


クラス定義の爬虫類を継承すると、爬虫類、以下もはやscrapy.spidersではありませんので、が、爬虫類の次scrapy-redis.spiders 
クラスDistributedSpiderSpider(RedisSpider):
    名前 = ' distributed_spider ' 
    allowed_domains = [ ' wh.lianjia.com ' ]
     将start_urls替换为redis_key 
    start_urls = [ 'https://wh.lianjia.com/ershoufang/'] 
    redis_key = " myspider:start_urls "

    デフ解析(自己、応答):
         プリント(response.meta)
        アイテム = dictの()
        項目[ " " ] = " 湖北" 
        項目[ " 都市" ] = " 武汉" 
        ブロック = response.xpath(" // divの[@クラス= '位置'] / DL [2] / DD / DIV [1] / DIV / A のためにブロックのブロック:
            タイトル = blocks.xpath(" ./@title " )に.get()
            URL = " https://wh.lianjia.com " + block.xpath(" ./@href " )に.get()

            プリント(タイトル、URL、" ===================================== " 

            収率 scrapy.Request(URL = URL、コールバック= self.parse_block、メタ= { " 項目" :アイテム})

    デフparse_block(自己、応答):
         プリント(response.meta)
        URL = response.url + " PG%dco32 / " 
        インデックス = 1
         一方指数<100 
            NEW_URL = URL% インデックス
             プリント(NEW_URL)
             収率 scrapy.Request(URL = NEW_URL、コールバック= self.parse_item、メタ= { " 項目":response.meta [ " 項目" ]})
            インデックス + = 1

    デフparse_item(自己、応答):
         プリント(response.meta)
        sellLinks = response.css(" ul.sellListContent> LI> " のためのリンクsellLinks:
            URL = link.xpath(" ./@href " )に.get()
             プリント(URL)
             収率 scrapy.Request(URL = URL、コールバック= self.parse_detail、メタ= { " 項目":response.meta [ " 項目" ]})

    デフparse_detail(自己、応答):
        アイテム = response.meta [ " 項目" ]
         印刷(response.meta)
        項目[ " URL " ] = response.url
        項目[ " ブロック" ] = response.css(" div.areaName> span.info ").xpath(" ./a [1] /テキスト()" )に.get()。ストリップ()
        項目[ " smallBlock " ] = response.css(" div.areaName> span.info ").xpath(" ./a [2] /テキスト()" )に.get()。ストリップ()
        項目[ " 価格" ] = response.xpath(" //スパン[@クラス= '合計'] /テキスト()")に.get()。ストリップ()+ " " 
        の項目[ " 単価" ] =応答。 XPathの(" //スパン[@クラス= 'unitPriceValue'] /テキスト()")に.get()。ストリップ()+ " 元/平米" 
        プリント(アイテム)

もう一つは、設定ファイル(settings.py)にあります:

その上にセットアップファイルにいくつかの設定を追加します。

SCHEDULER = " scrapy_redis.scheduler.Scheduler "

DUPEFILTER_CLASS = " scrapy_redis.dupefilter.RFPDupeFilter "

ITEM_PIPELINES = {
    ' DistributedSpider.pipelines.DistributedspiderPipeline ' 300 ' scrapy_redis.pipelines.RedisPipeline ':400
}

REDIS_HOST = localhostの  #のアドレスは、接続にしたいデータベースをRedisの

REDIS_PORT = 6379   データベースが起動時にデフォルトのポートのRedis

 

  

おすすめ

転載: www.cnblogs.com/loveprogramme/p/12029756.html