ホームページ >バックエンド開発 >Python チュートリアル >Scrapy は Docker のコンテナ化とデプロイメントをどのように実装しますか?
最新のインターネット アプリケーションの継続的な開発と複雑さの増加に伴い、Web クローラーはデータの取得と分析のための重要なツールとなっています。 Python で最も人気のあるクローラー フレームワークの 1 つである Scrapy には、強力な機能と使いやすい API インターフェイスがあり、開発者が Web ページ データを迅速にクロールして処理するのに役立ちます。ただし、大規模なクローリング タスクに直面した場合、単一の Scrapy クローラー インスタンスはハードウェア リソースによって簡単に制限されるため、通常、迅速な拡張とデプロイを実現するには、Scrapy をコンテナ化して Docker コンテナにデプロイする必要があります。
この記事では、Scrapy のコンテナ化とデプロイメントの実装方法に焦点を当てます。主な内容は次のとおりです:
Scrapy は、Python 言語に基づく Web クローラー フレームワークで、主にインターネット上のデータをクロールするために使用されます。これは、スケジューラー、ダウンローダー、ミドルウェア、パーサーなどを含む複数のコンポーネントで構成されており、開発者が Web ページ クローリング システムを迅速に構築するのに役立ちます。
Scrapy の基本アーキテクチャを次の図に示します。
启动器(Engine):负责控制和协调整个爬取过程。 调度器(Scheduler):负责将请求(Request)按照一定的策略传递给下载器(Downloader)。 下载器(Downloader):负责下载并获取Web页面的响应数据。 中间件(Middleware):负责对下载器和调度器之间进行拦截、处理和修改。 解析器(Parser):负责对下载器所获取的响应数据进行解析和提取。
全体のプロセスは大まかに次のとおりです:
1. 启动者对目标网站进行初始请求。 2. 调度器将初始请求传递给下载器。 3. 下载器对请求进行处理,获得响应数据。 4. 中间件对响应数据进行预处理。 5. 解析器对预处理后的响应数据进行解析和提取。 6. 解析器生成新的请求,并交给调度器。 7. 上述过程不断循环,直到达到设定的终止条件。
Docker は、アプリケーションとその依存関係を独立した実行可能パッケージにパッケージ化する軽量のコンテナ化テクノロジです。 Docker は、アプリケーションと依存関係を分離することで、より安定した信頼性の高い動作環境を実現し、ビルド、リリース、デプロイ、監視などの一連のライフサイクル管理機能を提供します。
Docker コンテナ化の利点:
1. 快速部署:Docker可以将应用程序及其依赖项打包成一个独立的可执行软件包,方便快速部署和迁移。 2. 节省资源:Docker容器采用隔离技术,可以共享主机操作系统的资源,从而节省硬件资源和成本。 3. 高度可移植:Docker容器可以在不同的操作系统和平台上运行,提高了应用程序的可移植性和灵活性。 4. 简单易用:Docker提供了一系列简单和易用的API接口和工具,可供开发人员和运维人员快速理解和使用。
Scrapy Docker コンテナ化を実装する前に、最初に理解する必要がある基本的な概念とオペレーション。
Docker イメージ (イメージ): Docker イメージは、Docker コンテナーの作成に使用できる読み取り専用のテンプレートです。 Docker イメージには、完全なオペレーティング システム、アプリケーション、依存関係などを含めることができます。
Docker コンテナー (コンテナー): Docker コンテナーは、Docker イメージによって作成された実行可能なインスタンスであり、すべてのアプリケーションと依存関係が含まれています。 Docker コンテナは、開始、停止、一時停止、削除などを行うことができます。
Docker ウェアハウス (レジストリ): Docker ウェアハウスは、Docker イメージを保存および共有するために使用される場所で、通常はパブリック ウェアハウスとプライベート ウェアハウスが含まれます。 Docker Hub は、最も人気のあるパブリック Docker リポジトリの 1 つです。
Scrapy Dockerization のプロセスでは、次の操作を実行する必要があります:
1. 创建Dockerfile文件 2. 编写Dockerfile文件内容 3. 构建Docker镜像 4. 运行Docker容器
以下では、Scrapy Dockerization を実装する方法を段階的に紹介します。
Dockerfile は、Docker イメージの構築に使用されるテキスト ファイルです。 Dockerfile には、基本イメージの特定、依存ライブラリの追加、ファイルのコピー、その他の操作のための一連の命令が含まれています。
プロジェクトのルート ディレクトリに Dockerfile ファイルを作成します:
$ touch Dockerfile
Scrapy 環境をセットアップし、アプリケーションを Docker イメージにパッケージ化するための一連の命令を記述する必要があります。具体的な内容は次のとおりです。
FROM python:3.7-stretch # 设置工作目录 WORKDIR /app # 把Scrapy所需的依赖项添加到环境中 RUN apt-get update && apt-get install -y build-essential git libffi-dev libjpeg-dev libpq-dev libssl-dev libxml2-dev libxslt-dev python3-dev python3-pip python3-lxml zlib1g-dev # 安装Scrapy和其他依赖项 RUN mkdir /app/crawler COPY requirements.txt /app/crawler RUN pip install --no-cache-dir -r /app/crawler/requirements.txt # 拷贝Scrapy程序代码 COPY . /app/crawler # 启动Scrapy爬虫 CMD ["scrapy", "crawl", "spider_name"]
上記の命令の機能は次のとおりです。
FROM:获取Python 3.7及其中的Stretch的Docker镜像; WORKDIR:在容器中创建/app目录,并将其设置为工作目录; RUN:在容器中安装Scrapy的依赖项; COPY:将应用程序代码和依赖项复制到容器的指定位置; CMD:在容器中启动Scrapy爬虫。
このうち、CMD 命令は必要に応じて変更するように注意してください。
Docker イメージのビルドは比較的簡単な操作です。プロジェクトのルート ディレクトリで docker build コマンドを使用するだけです:
$ docker build -t scrapy-crawler .
このうち、scrapy-crawler はイメージ名、. はカレントディレクトリですので、必ず小数点を付けてください。
Docker コンテナの実行は、Scrapy Dockerization プロセスの最後のステップであり、プロセス全体の鍵です。次のように docker run コマンドを使用して、作成したイメージを起動できます。
$ docker run -it scrapy-crawler:latest
このうち、scrapy-crawler はイメージの名前、latest はバージョン番号です。
Scrapy を Docker 化する前に、Docker と Docker Compose をインストールする必要があります。 Docker Compose は、マルチコンテナーの Docker アプリケーションを定義および実行するためのツールであり、Scrapy コンテナー化されたアプリケーションを迅速に構築および管理できるようにします。
以下では、Docker Compose を通じて Scrapy Dockerization をデプロイする方法を段階的に紹介します。
プロジェクトのルート ディレクトリに docker-compose.yml ファイルを作成します:
$ touch docker-compose. yml
docker-compose.yml で設定します。設定は次のとおりです。
version: '3' services: app: build: context: . dockerfile: Dockerfile volumes: - .:/app command: scrapy crawl spider_name
上記の構成では、 app という名前のサービスを定義し、 build ディレクティブを使用して Docker Compose にアプリ イメージをビルドするように指示し、続いて volume ディレクティブを使用して共有ファイルとディレクトリを指定します。
プロジェクト ルート ディレクトリで次のコマンドを実行して、Docker Compose を開始します。
$ docker-compose up -d
-d オプションは、 Dockerコンテナが実行されます。
docker ps コマンドを使用して、コンテナの実行ステータスを確認できます。次のコマンドは、実行中の Scrapy コンテナを一覧表示します:
$ docker ps
我们可以使用docker logs命令来查看容器日志。如下命令将列出Scrapy容器的运行日志:
$ docker logs <CONTAINER_ID>
其中,CONTAINER_ID是容器ID。
Scrapy Docker化技术可以应用于任何需要爬取和处理Web页面数据的场景。因此,我们可以将其应用于各种数据分析和挖掘任务中,如电商数据分析、舆情分析、科学研究等。
举例来说,我们可以利用Scrapy Docker容器已有的良好扩展性,搭建大规模爬虫系统,同时使用Docker Swarm实现容器的快速扩展和部署。我们可以设定预先定义好的Scrapy容器规模,根据任务需求动态地进行扩容或缩容,以实现快速搭建、高效运行的爬虫系统。
总结
本文介绍了Scrapy Docker化的基本流程和步骤。我们首先了解了Scrapy的基本架构和工作原理,然后学习了Docker容器化的优势和应用场景,接着介绍了如何通过Dockerfile、Docker Compose实现Scrapy容器化和部署。通过实践应用,我们可以将Scrapy Docker化技术应用到任何需要处理和分析Web页面数据的应用场景中,从而提高工作效率和系统扩展性。
以上がScrapy は Docker のコンテナ化とデプロイメントをどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。