1. ホーム
  2. python

[解決済み] scrapy spider でユーザー定義の引数を渡すには?

2022-08-28 22:37:14

質問

私はユーザー定義の引数をscrapyのスパイダーに渡そうとしています。誰かがそれを行う方法について提案することができますか?

私はパラメータについて読んだ -a についてどこかで読みましたが、どのように使用すればよいのかわかりません。

どのように解決するのですか?

Spider の引数は crawl コマンドを使用して -a オプションで指定します。例えば

scrapy crawl myspider -a category=electronics -a domain=system

スパイダーは引数を属性としてアクセスすることができます。

class MySpider(scrapy.Spider):
    name = 'myspider'

    def __init__(self, category='', **kwargs):
        self.start_urls = [f'http://www.example.com/{category}']  # py36
        super().__init__(**kwargs)  # python3

    def parse(self, response)
        self.log(self.domain)  # system

Scrapyのドキュメントから引用しています。 http://doc.scrapy.org/en/latest/topics/spiders.html#spider-arguments

2013年更新 : 第2引数の追加

2015年更新 : 文言の調整

2016年更新 : より新しい基底クラスを使用し、superを追加しました、ありがとう@Birla

2017年のアップデート : Python3スーパーを使用

# previously
super(MySpider, self).__init__(**kwargs)  # python2

2018年更新 : @eLRuLL が指摘するように のように、スパイダーは属性として引数にアクセスすることができます。