Scrapy-設定
説明
Scrapyコンポーネントの動作は、Scrapy設定を使用して変更できます。複数のScrapyプロジェクトがある場合、設定で現在アクティブなScrapyプロジェクトを選択することもできます。
設定の指定
Webサイトをスクラップするときは、使用している設定をScrapyに通知する必要があります。このため、環境変数SCRAPY_SETTINGS_MODULE を使用する必要があり、その値はPythonパス構文である必要があります。
設定の入力
次の表は、設定を設定できるメカニズムの一部を示しています-
シニア番号 | メカニズムと説明 |
---|---|
1 | Command line options ここで、渡される引数は、他のオプションをオーバーライドすることによって最も優先されます。-sは、1つ以上の設定を上書きするために使用されます。
|
2 | Settings per-spider スパイダーは、属性custom_settingsを使用して、プロジェクトの設定をオーバーライドする独自の設定を持つことができます。
|
3 | Project settings module ここでは、settings.pyファイルの設定の追加や変更などのカスタム設定を設定できます。 |
4 | Default settings per-command 各Scrapyツールコマンドは、default_settings属性で独自の設定を定義して、グローバルなデフォルト設定を上書きします。 |
5 | Default global settings これらの設定は、scrapy.settings.default_settingsモジュールにあります。 |
アクセス設定
これらはself.settingsから利用でき、初期化後にベーススパイダーに設定されます。
次の例はこれを示しています。
class DemoSpider(scrapy.Spider):
name = 'demo'
start_urls = ['http://example.com']
def parse(self, response):
print("Existing settings: %s" % self.settings.attributes.keys())
スパイダーを初期化する前に設定を使用するには、スパイダーの_init_()メソッドのfrom_crawlerメソッドをオーバーライドする必要があります。from_crawlerメソッドに渡される属性scrapy.crawler.Crawler.settingsを介して設定にアクセスできます。
次の例はこれを示しています。
class MyExtension(object):
def __init__(self, log_is_enabled = False):
if log_is_enabled:
print("Enabled log")
@classmethod
def from_crawler(cls, crawler):
settings = crawler.settings
return cls(settings.getbool('LOG_ENABLED'))
名前を設定する理由
設定名は、構成するコンポーネントのプレフィックスとして追加されます。たとえば、robots.txt拡張子の場合、設定名はROBOTSTXT_ENABLED、ROBOTSTXT_OBEY、ROBOTSTXT_CACHEDIRなどになります。
組み込み設定リファレンス
次の表は、Scrapy −の組み込み設定を示しています。
シニア番号 | 設定と説明 |
---|---|
1 | AWS_ACCESS_KEY_ID アマゾンウェブサービスにアクセスするために使用されます。 デフォルト値:なし |
2 | AWS_SECRET_ACCESS_KEY アマゾンウェブサービスにアクセスするために使用されます。 デフォルト値:なし |
3 | BOT_NAME これは、User-Agentの構築に使用できるボットの名前です。 デフォルト値: 'scrapybot' |
4 | CONCURRENT_ITEMS 並列処理に使用されるアイテムプロセッサ内の既存のアイテムの最大数。 デフォルト値:100 |
5 | CONCURRENT_REQUESTS Scrapyダウンローダーが実行する既存のリクエストの最大数。 デフォルト値:16 |
6 | CONCURRENT_REQUESTS_PER_DOMAIN 単一のドメインに対して同時に実行される既存のリクエストの最大数。 デフォルト値:8 |
7 | CONCURRENT_REQUESTS_PER_IP 単一のIPに対して同時に実行される既存のリクエストの最大数。 デフォルト値:0 |
8 | DEFAULT_ITEM_CLASS アイテムを表すために使用されるクラスです。 デフォルト値: 'scrapy.item.Item' |
9 | DEFAULT_REQUEST_HEADERS これは、ScrapyのHTTPリクエストに使用されるデフォルトのヘッダーです。 デフォルト値-
|
10 | DEPTH_LIMIT スパイダーが任意のサイトをクロールするための最大深度。 デフォルト値:0 |
11 | DEPTH_PRIORITY 深さに応じてリクエストの優先度を変更するために使用される整数です。 デフォルト値:0 |
12 | DEPTH_STATS 深度統計を収集するかどうかを示します。 デフォルト値:True |
13 | DEPTH_STATS_VERBOSE この設定を有効にすると、要求の数が詳細な深さごとに統計に収集されます。 デフォルト値:False |
14 | DNSCACHE_ENABLED これは、メモリキャッシュでDNSを有効にするために使用されます。 デフォルト値:True |
15 | DNSCACHE_SIZE これは、メモリキャッシュ内のDNSのサイズを定義します。 デフォルト値:10000 |
16 | DNS_TIMEOUT DNSがクエリを処理するためのタイムアウトを設定するために使用されます。 デフォルト値:60 |
17 | DOWNLOADER これは、クロールプロセスに使用されるダウンローダーです。 デフォルト値: 'scrapy.core.downloader.Downloader' |
18 | DOWNLOADER_MIDDLEWARES これは、ダウンローダーミドルウェアとその注文を保持する辞書です。 デフォルト値:{} |
19 | DOWNLOADER_MIDDLEWARES_BASE これは、デフォルトで有効になっているダウンローダーミドルウェアを保持する辞書です。 デフォルト値-
|
20 | DOWNLOADER_STATS この設定は、ダウンローダーの統計を有効にするために使用されます。 デフォルト値:True |
21 | DOWNLOAD_DELAY これは、ダウンローダーがサイトからページをダウンロードするまでの合計時間を定義します。 デフォルト値:0 |
22 | DOWNLOAD_HANDLERS ダウンロードハンドラー付きの辞書です。 デフォルト値:{} |
23 | DOWNLOAD_HANDLERS_BASE これは、デフォルトで有効になっているダウンロードハンドラーを備えた辞書です。 デフォルト値-
|
24 | DOWNLOAD_TIMEOUT ダウンローダーがタイムアウトするまで待機する合計時間です。 デフォルト値:180 |
25 | DOWNLOAD_MAXSIZE これは、ダウンローダーがダウンロードする応答の最大サイズです。 デフォルト値:1073741824(1024MB) |
26 | DOWNLOAD_WARNSIZE これは、ダウンローダーが警告する応答のサイズを定義します。 デフォルト値:33554432(32MB) |
27 | DUPEFILTER_CLASS これは、重複するリクエストの検出とフィルタリングに使用されるクラスです。 デフォルト値: 'scrapy.dupefilters.RFPDupeFilter' |
28 | DUPEFILTER_DEBUG この設定をtrueに設定すると、重複するすべてのフィルターがログに記録されます。 デフォルト値:False |
29 | EDITOR editコマンドを使用してスパイダーを編集するために使用されます。 デフォルト値:環境によって異なります |
30 | EXTENSIONS これは、プロジェクトで有効になっている拡張機能を持つ辞書です。 デフォルト値:{} |
31 | EXTENSIONS_BASE 拡張機能が組み込まれた辞書です。 デフォルト値:{'scrapy.extensions.corestats.CoreStats':0、} |
32 | FEED_TEMPDIR これは、クローラーの一時ファイルを保存できるカスタムフォルダーを設定するために使用されるディレクトリです。 |
33 | ITEM_PIPELINES パイプラインのある辞書です。 デフォルト値:{} |
34 | LOG_ENABLED ロギングを有効にするかどうかを定義します。 デフォルト値:True |
35 | LOG_ENCODING ロギングに使用されるエンコーディングのタイプを定義します。 デフォルト値: 'utf-8' |
36 | LOG_FILE ロギングの出力に使用するファイルの名前です。 デフォルト値:なし |
37 | LOG_FORMAT これは、ログメッセージをフォーマットするために使用できる文字列です。 デフォルト値: '%(asctime)s [%(name)s]%(levelname)s:%(message)s' |
38 | LOG_DATEFORMAT これは、日付/時刻をフォーマットできる文字列です。 デフォルト値: '%Y-%m-%d%H:%M:%S' |
39 | LOG_LEVEL 最小ログレベルを定義します。 デフォルト値: 'DEBUG' |
40 | LOG_STDOUT この設定をtrueに設定すると、すべてのプロセス出力がログに表示されます。 デフォルト値:False |
41 | MEMDEBUG_ENABLED メモリデバッグを有効にするかどうかを定義します。 デフォルト値:False |
42 | MEMDEBUG_NOTIFY これは、メモリデバッグが有効になっているときに特定のアドレスに送信されるメモリレポートを定義します。 デフォルト値:[] |
43 | MEMUSAGE_ENABLED Scrapyプロセスがメモリ制限を超えたときにメモリ使用量を有効にするかどうかを定義します。 デフォルト値:False |
44 | MEMUSAGE_LIMIT_MB 許可されるメモリの最大制限(メガバイト単位)を定義します。 デフォルト値:0 |
45 | MEMUSAGE_CHECK_INTERVAL_SECONDS 間隔の長さを設定することにより、現在のメモリ使用量を確認するために使用されます。 デフォルト値:60.0 |
46 | MEMUSAGE_NOTIFY_MAIL これは、メモリが制限に達したときに電子メールのリストで通知するために使用されます。 デフォルト値:False |
47 | MEMUSAGE_REPORT 各スパイダーを閉じるときにメモリ使用量レポートを送信するかどうかを定義します。 デフォルト値:False |
48 | MEMUSAGE_WARNING_MB 警告が送信される前に許可される合計メモリを定義します。 デフォルト値:0 |
49 | NEWSPIDER_MODULE genspiderコマンドを使用して新しいスパイダーを作成するモジュールです。 デフォルト値: '' |
50 | RANDOMIZE_DOWNLOAD_DELAY これは、Scrapyがサイトからリクエストをダウンロードする間待機するランダムな時間を定義します。 デフォルト値:True |
51 | REACTOR_THREADPOOL_MAXSIZE これは、reactorスレッドプールの最大サイズを定義します。 デフォルト値:10 |
52 | REDIRECT_MAX_TIMES リクエストをリダイレクトできる回数を定義します。 デフォルト値:20 |
53 | REDIRECT_PRIORITY_ADJUST この設定を設定すると、リクエストのリダイレクト優先度が調整されます。 デフォルト値:+2 |
54 | RETRY_PRIORITY_ADJUST この設定を設定すると、リクエストの再試行優先度が調整されます。 デフォルト値:-1 |
55 | ROBOTSTXT_OBEY Scrapyは、trueに設定されている場合、robots.txtポリシーに従います。 デフォルト値:False |
56 | SCHEDULER これは、クロールの目的で使用されるスケジューラーを定義します。 デフォルト値: 'scrapy.core.scheduler.Scheduler' |
57 | SPIDER_CONTRACTS これは、スパイダーをテストするためのスパイダー契約を結んでいるプロジェクトの辞書です。 デフォルト値:{} |
58 | SPIDER_CONTRACTS_BASE これは、Scrapyでデフォルトで有効になっているScrapyコントラクトを保持する辞書です。 デフォルト値-
|
59 | SPIDER_LOADER_CLASS SpiderLoaderAPIを実装してスパイダーをロードするクラスを定義します。 デフォルト値: 'scrapy.spiderloader.SpiderLoader' |
60 | SPIDER_MIDDLEWARES 蜘蛛のミドルウェアを収めた辞書です。 デフォルト値:{} |
61 | SPIDER_MIDDLEWARES_BASE これは、Scrapyでデフォルトで有効になっているスパイダーミドルウェアを保持する辞書です。 デフォルト値-
|
62 | SPIDER_MODULES これは、Scrapyが検索するスパイダーを含むモジュールのリストです。 デフォルト値:[] |
63 | STATS_CLASS これは、統計を収集するためにStats CollectorAPIを実装するクラスです。 デフォルト値: 'scrapy.statscollectors.MemoryStatsCollector' |
64 | STATS_DUMP この設定をtrueに設定すると、統計がログにダンプされます。 デフォルト値:True |
65 | STATSMAILER_RCPTS スパイダーがスクレイピングを終了すると、Scrapyはこの設定を使用して統計を送信します。 デフォルト値:[] |
66 | TELNETCONSOLE_ENABLED telnetconsoleを有効にするかどうかを定義します。 デフォルト値:True |
67 | TELNETCONSOLE_PORT telnetコンソールのポートを定義します。 デフォルト値:[6023、6073] |
68 | TEMPLATES_DIR これは、新しいプロジェクトの作成中に使用できるテンプレートを含むディレクトリです。 デフォルト値:scrapyモジュール内のテンプレートディレクトリ |
69 | URLLENGTH_LIMIT これは、クロールされたURLに許可されるURLの長さの最大制限を定義します。 デフォルト値:2083 |
70 | USER_AGENT これは、サイトのクロール中に使用されるユーザーエージェントを定義します。 デフォルト値:「Scrapy / VERSION(+ http://scrapy.org)」 |
その他のScrapy設定については、このリンクにアクセスしてください。