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を活用して作成しています。

この記事が気に入ったらサポートをしてみませんか?