Docker ComposeでScrapyの環境構築
ScrapyはPythonで書かれた強力なWebスクレイピングフレームワークです。Docker Composeを使ってScrapyの環境を簡単に構築し、スケーラブルで再現性のある開発環境を整えることができます。この記事では、Docker Composeを使用してScrapyの環境を構築する手順を詳しく説明します。
1. プロジェクトのフォルダを作成する
まずは、Scrapyプロジェクト用のフォルダを作成します。以下のコマンドで、プロジェクトのルートディレクトリを作成します。
mkdir scrapy-project
cd scrapy-project
2. docker-compose.ymlを作成する
プロジェクトのルートディレクトリ内に、docker-compose.ymlファイルを作成します。このファイルには、Scrapyの環境を構築するための設定を記述します。以下のような内容でdocker-compose.ymlを作成します。
version: '3'
services:
scrapy:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/usr/src/app
entrypoint: ["scrapy"]
3. Dockerfileを作成する
次に、プロジェクトのルートディレクトリ内にDockerfileを作成します。Dockerfileは、Scrapy環境を構築するための指示を含むファイルです。以下のような内容でDockerfileを作成します。
FROM python:3.9-slim
# 作業ディレクトリを設定
WORKDIR /usr/src/app
# 必要なパッケージをインストール
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Scrapyの設定
COPY . .
# デフォルトのコマンドを指定
CMD ["scrapy", "--help"]
4. requirements.txtを作成する
次に、Scrapyとその依存関係を指定するrequirements.txtファイルを作成します。以下のような内容でrequirements.txtを作成します。
scrapy==2.6.1
5. コンテナをビルドして起動する
Docker Composeを使用してコンテナをビルドし、起動します。以下のコマンドを実行します。
docker-compose up --build
このコマンドにより、Scrapyの環境が構築され、コンテナが起動します。
6. コンテナに入ってScrapyプロジェクトを作成する
コンテナが起動したら、コンテナ内に入ってScrapyプロジェクトを作成します。以下のコマンドでコンテナに入ります。
docker-compose run scrapy /bin/bash
コンテナ内で、以下のコマンドを実行してScrapyプロジェクトを作成します。
scrapy startproject [project-name] .
[project-name]には、作成したいプロジェクトの名前を指定します。
7. スパイダーを作成する
次に、スパイダーを作成します。スパイダーは、スクレイピングのロジックを実装するためのクラスです。以下のコマンドでスパイダーを作成します。
scrapy genspider [spider-name] [scraping-site-domain]
[spider-name]にはスパイダーの名前を、[scraping-site-domain]にはスクレイピング対象のドメインを指定します。
8. スパイダーの処理を作成する
作成したスパイダーのPythonファイル([spider-name].py)を編集し、スクレイピングの処理を実装します。ファイルは、spidersディレクトリ内にあります。スパイダーの処理を実装したら、ファイルを保存します。
9. スパイダーを実行する
スパイダーを実行して、データを収集します。以下のコマンドでスパイダーを実行できます。
scrapy crawl [spider-name] -o filename.csv
[spider-name]には実行したいスパイダーの名前を、filename.csvには出力ファイル名を指定します。出力形式としては、CSV、JSON、XMLなどを指定できます。
まとめ
Docker Composeを使用してScrapyの環境を構築することで、簡単に再現性のある開発環境を整えることができます。コンテナ内でScrapyプロジェクトを作成し、スパイダーを実行することで、効率的なWebスクレイピングを実現できます。この記事を参考に、ぜひDockerとScrapyを使ってスクレイピングプロジェクトを始めてみてください。
※この記事は、自分の作業メモをもとにAIを活用して作成しています。