[解決済み] 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 が指摘するように のように、スパイダーは属性として引数にアクセスすることができます。
関連
-
[解決済み] UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] コマンドライン引数の読み方・処理方法は?
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?