第3章 Scrapyの環境設定
はじめに
ここではScrapyの設定で利用するsettimgs.pyについて、各項目の内容をまとめておきます。デフォルトの設定では、サーバーに強い負荷をかける恐れがありますので、Scrapyのプロジェクトを作ったら、まずはじめにsettimgs.pyを調整するのがよいかもしれません。
USER_AGENT
Webページにアクセスする際のユーザーエージェントを設定できます。例えば、ChormeでWebページを確認しているのであれば、ユーザーエージェントを下記のようにChormeに設定しておくことで、Chormeと同じHTMLを返してくれます。クローラーの所有者を明らかにするために、メールアドレスを付ける方もいるとか。
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36デフォルトの設定は下記の通りです。
# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'sample_pj (+http://www.yourdomain.com)'Webブラウザによるすべてのリクエストには、ユーザーエージェントが含まれます。そのため、1つのユーザーエージェントから多数のリクエストを送信すると、ブロックされる場合があります。そのため、ユーザーエージェントを切り替えるなどの必要があります。これは1つのIPアドレスから多数のリクエストを送信する場合も同じで、ブロックされる可能性があります。
Scrapyには、scrapy-fake-useragentというライブラリを併用することで、毎回のリクエストで異なるユーザーエージェントからのリクエストを実現できます。また、scrapy-proxies-toolでは、IPアドレスを変更することで、特定のIPアドレスを禁止されることを防止できます。
ROBOTSTXT_OBEY
Trueにしておけば、robots.txtのDisallowページのクローリングを防止できるので、Trueが推奨されます。
# Obey robots.txt rules
ROBOTSTXT_OBEY = TrueCONCURRENT_REQUESTS
並列化してスクレイピングする(同時リクエスト数)かどうかの設定です。デフォルトは16にっているので、1~4とかくらいに設定している方が安全かと思われます。16だと個人のサーバーとかであればダウンする恐れもあります。ドメイン、IPごとに設定できます。
DOWNLOAD_DELAY
これはリクエスト間隔の設定を行うもので、リクエスト間隔はデフォルトでは0秒です。これも3~5秒とかにしておけばよいと思います。慣習的に1秒スリープさせるとかもありますが。
COOKIES_ENABLED
これはクッキー・ミドルウェアを有効にするかどうかです。 無効にすると、クッキーはWebサーバーに送信されません。
Middleware
Middlewareについては、有効にする場合はコメントアウトを外します。また、独自でMiddlewareを拡張した場合は、行を追加して名前を記入します。
Itempipeline
Itempipelineの設定もsettings.pyで行います。
DEFAULT_REQUEST_HEADER
基本的にはデフォルトの設定で問題ないと思われます。
HTTPCACHE_ENABLED
スクレイピングする場所を調べるためにリクエストを何度も送ることがありますが、そのような場合にキャッシュを有効にしておけば、2回目以降はキャッシュを見に行くので、高速に機能します。
キャッシュの保存先は.scrapyディレクトリに作られる。下記は、有効にした場合にログに出力されるキャッシュの保存先。
最終更新
役に立ちましたか?