scrapyでスクレイピングする際、settings.pyで色々設定を変えることができます。
まずspiderのソースコード書き始める前に、これは設定変えておいた方が良いというものの覚書です。
追記するもの
文字コードを変更して文字化けを防ぐ
FEED_EXPORT_ENCODING = 'utf-8'
を追記しておく。
スクレイピングして出力してきた文字コードを指定しないと文字化けするかもなので。
既存の記述のコメントアウトを外すもの
ちなみにコメントアウトを外すには、センテンスを選択してcommand + K + U
コメントアウトをつけるには、command + K + C
ページダウンロードの間隔を設定する
DOWNLOAD_DELAY = 3
のコメントアウトを外す
多分かなり重要
ページをダウンロードしてから次のページのダウンロードするまで3秒待って負荷を軽くしろという意味
これやってないと、スクレイピングしたいサイトに迷惑がかかる
robots.txtに従うか決める
# Obey robots.txt rules
ROBOTSTXT_OBEY = True
これはrobots.txtの記述に従うかって話。
取得した言語を日本語にする
# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {
# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'ja',
}
言語に関して。
初期設定では、'Accept-Language': 'en'
ってなってるのでja
に変更する。
これをしないと取得した要素が英語になる。
ダウンロードしたページのキャッシュを保持させる設定
HTTPCACHE_ENABLED = True
ダウンロードしたページをキャッシュデータとして持っておく
スクレイピングが難しいので何度もエラーを解消しようとコードの書き換えする場面もあるので、毎回ダウンロードして処理に時間がかからないように。
HTTPCACHE_DIR = 'httpcache'
キャッシュを持っておくディレクトリ名を指定
HTTPCACHE_EXPIRATION_SECS = 86400
キャッシュを保持しておく秒数
86400秒(=1日)経ったら、キャッシュに頼らずダウンロードし直す
ページが更新されてしまったらスクレイピングする値も変わってしまうので、変更の頻度に合わせて変える
User-Agentの変更
USER_AGENT =
httpリクエストを送った時のUser-Agentの値を変更する
スクショに貼ってあるのは、普通のユーザーとしてWebページを閲覧する時に送られるリクエスト。
Scrapyのbotがリクエストを送るとUser-Agentに「scrapy〜〜」みたいな値が入るらしい。
webページによっては、「このリクエスト、人間じゃなくてスクレイピング目的のクローラーだな。アクセス禁止してやる!」みたいな作りにしてるものもあるらしい。