Scrapy と Django と

Django でプロジェクトを作成し、その一部で Scrapy を使いたい。そして、Scrapy プロジェクトで Django のモデルなどを参照したい。

Scrapy の準備

まずは普通に Scrapy のインストールとプロジェクトの作成をします。Django と同様に、startproject コマンドの最後にドットを入れるとカレントディレクトリーにプロジェクトファイルが作成されます。

$ pip install Scrapy
$ scrapy startproject [プロジェクト名] .

プロジェクトが作成されたら、次はスパイダーを作成します。

$ scrapy genspider [スパイダー名] [スクレイピングの対象ドメイン]

genspider コマンドを実行すると、spiders フォルダーにスパイダー名の .py ファイルが作成れるので、そのファイルにスクレイピングのコードを記述します。

Scrapy の設定

Scrapy のプロジェクトから Django のモデルを参照できるよう、Scrapy のプロジェクトの設定ファイル ([Scrapy のプロジェクト名]/settings.py) に次の行を追加します。

import os
import sys
import django

sys.path.append(os.path.dirname(os.path.abspath('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings'
django.setup()

このように設定すると、Scrapy のプロジェクトのファイルで Django のモデルなどを参照できます。

from [Django アプリ名].models import [Django モデル]