scrapy-redisの使用とデバッグ

1794 ワード

#1なぜscrapyを使うのか:
自分でpython requestライブラリで書いた爬虫類はjsで生成されたhtmlファイルを取得できないため、htmlファイルは不完全です.
#2 scrapy-redisとは
scrapy-redisはscrapyのようなプラグインで、scrapyは自動的にredisからキャプチャするリンクを取得してWebページに登ります.簡単で使いやすく、爬虫類の分布式フレームワークをすぐに構築することができます.
#3インストール
#   scrapy
$pip install scrapy  
#   scrapy reids
$pip install scrapy-redis  

#4プロジェクトの作成
$scrapy startproject  (path) (name)

#5 scrapy-redisの構成と使用
ソースアドレスを表示https://github.com/rmax/scrapy-redis
#6 scrapyを自分のプロジェクトに組み込む
/yourProjectRoot/MyScrapy/spiders/XXXSpider.py MyScrapyはscrapyエンジニアリングフォルダです
from scrapy_redis.spiders import  RedisSpider
from pathlib import Path

class XXXSpider(RedisSpider):

    _headers = {
    }
    #     
    name = 'xxxSpider'
    #        list   key
    redis_key = "spider-queue:xxxSpider"

    def __init__(self, *args, **kwargs):
        # Dynamically define the allowed domains list.
        # domain = kwargs.pop('domain', '')
        # self.allowed_domains = filter(None, domain.split(','))
        super(XXXSpider, self).__init__(*args, **kwargs)

    def make_requests_from_url(self, url):
        """
          request      
        :param url:
        :return:
        """
        headers = self._headers
        request = super(XXXSpider, self).make_requests_from_url(url)
        request.headers = headers
        return request

    def parse(self, response):
          # do what ever you want
          pass

    @classmethod
    def run(cls):
        import scrapy.cmdline as sm
        #   scrapy       
        sm.execute(["scrapy", "crawl", "xxxSpider"])

あなたのプロジェクトでXXXXSpiderを実行します.run()はspiderのデバッグを実行できます