Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Scrapy melaksanakan kontena dan penggunaan Docker?

Bagaimanakah Scrapy melaksanakan kontena dan penggunaan Docker?

WBOY
WBOYasal
2023-06-23 10:39:131193semak imbas

Dengan pembangunan berterusan dan peningkatan kerumitan aplikasi Internet moden, perangkak web telah menjadi alat penting untuk pemerolehan dan analisis data. Sebagai salah satu rangka kerja perangkak paling popular dalam Python, Scrapy mempunyai fungsi yang berkuasa dan antara muka API yang mudah digunakan, yang boleh membantu pembangun merangkak dan memproses data halaman web dengan cepat. Walau bagaimanapun, apabila berhadapan dengan tugas merangkak berskala besar, satu contoh perangkak Scrapy mudah dihadkan oleh sumber perkakasan, jadi Scrapy biasanya perlu disimpan dalam bekas dan digunakan ke dalam bekas Docker untuk mencapai pengembangan dan penggunaan pantas.

Artikel ini akan menumpukan pada cara melaksanakan kontena dan penggunaan Scrapy Kandungan utama termasuk:

  1. Seni bina asas dan prinsip kerja Scrapy
  2. Pengenalan kontena Docker. dan kelebihan
  3. Cara Scrapy melaksanakan kontena Docker
  4. Cara Scrapy berjalan dan menggunakan dalam bekas Docker
  5. Aplikasi praktikal penggunaan bekas Scrapy
  6. Scrapy Seni bina dan prinsip kerja

Scrapy ialah rangka kerja perangkak web berdasarkan bahasa Python, terutamanya digunakan untuk merangkak data di Internet. Ia terdiri daripada berbilang komponen, termasuk penjadual, pemuat turun, perisian tengah dan penghurai, dsb., yang boleh membantu pembangun membina sistem rangkak halaman web dengan cepat.

Seni bina asas Scrapy ditunjukkan dalam rajah di bawah:

启动器(Engine):负责控制和协调整个爬取过程。
调度器(Scheduler):负责将请求(Request)按照一定的策略传递给下载器(Downloader)。
下载器(Downloader):负责下载并获取Web页面的响应数据。
中间件(Middleware):负责对下载器和调度器之间进行拦截、处理和修改。
解析器(Parser):负责对下载器所获取的响应数据进行解析和提取。

Keseluruhan proses adalah kira-kira seperti berikut:

1. 启动者对目标网站进行初始请求。
2. 调度器将初始请求传递给下载器。
3. 下载器对请求进行处理,获得响应数据。
4. 中间件对响应数据进行预处理。
5. 解析器对预处理后的响应数据进行解析和提取。
6. 解析器生成新的请求,并交给调度器。
7. 上述过程不断循环,直到达到设定的终止条件。
  1. Pengenalan dan kelebihan kontena Docker

Docker ialah teknologi kontena ringan yang membungkus aplikasi dan kebergantungannya ke dalam pakej boleh laku bebas. Docker mencapai persekitaran operasi yang lebih stabil dan boleh dipercayai dengan mengasingkan aplikasi dan kebergantungan, serta menyediakan satu siri fungsi pengurusan kitaran hayat, seperti membina, melepaskan, menggunakan dan memantau.

Kelebihan kontena Docker:

1. 快速部署:Docker可以将应用程序及其依赖项打包成一个独立的可执行软件包,方便快速部署和迁移。
2. 节省资源:Docker容器采用隔离技术,可以共享主机操作系统的资源,从而节省硬件资源和成本。
3. 高度可移植:Docker容器可以在不同的操作系统和平台上运行,提高了应用程序的可移植性和灵活性。
4. 简单易用:Docker提供了一系列简单和易用的API接口和工具,可供开发人员和运维人员快速理解和使用。
  1. Cara Scrapy melaksanakan kontena Docker

Sebelum melaksanakan kontena Docker Scrapy, kita perlu mengetahui sesuatu terlebih dahulu Konsep asas dan operasi.

Imej Docker (Imej): Imej Docker ialah templat baca sahaja yang boleh digunakan untuk mencipta bekas Docker. Imej Docker boleh mengandungi sistem pengendalian yang lengkap, aplikasi, kebergantungan, dsb.

Bekas Docker (Bekas): Bekas Docker ialah contoh boleh jalan yang dibuat oleh imej Docker dan mengandungi semua aplikasi dan kebergantungan. Bekas Docker boleh dimulakan, dihentikan, dijeda, dipadamkan, dsb.

Gudang Docker (Registry): Gudang Docker ialah tempat yang digunakan untuk menyimpan dan berkongsi imej Docker, biasanya termasuk gudang awam dan gudang persendirian. Docker Hub ialah salah satu repositori Docker awam yang paling popular.

Dalam proses Scrapy Dockerization, kami perlu melakukan operasi berikut:

1. 创建Dockerfile文件
2. 编写Dockerfile文件内容
3. 构建Docker镜像
4. 运行Docker容器

Di bawah ini kami akan memperkenalkan langkah demi langkah bagaimana untuk melaksanakan Scrapy Dockerization.

  1. Buat Fail Docker

Fail Docker ialah fail teks yang digunakan untuk membina imej Docker. Dockerfile mengandungi satu siri arahan untuk mengenal pasti imej asas, menambah perpustakaan bergantung, menyalin fail dan operasi lain.

Buat Dockerfile dalam direktori akar projek:

$ touch Dockerfile

  1. Tulis kandungan Dockerfile

Kami perlukan untuk menambah kandungan Dockerfile dalam Dockerfile Tulis satu siri arahan untuk menyediakan persekitaran Scrapy dan membungkus aplikasi ke dalam imej Docker. Kandungan khusus adalah seperti berikut:

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"]

Fungsi arahan di atas adalah seperti berikut:

FROM:获取Python 3.7及其中的Stretch的Docker镜像;
WORKDIR:在容器中创建/app目录,并将其设置为工作目录;
RUN:在容器中安装Scrapy的依赖项;
COPY:将应用程序代码和依赖项复制到容器的指定位置;
CMD:在容器中启动Scrapy爬虫。

Antaranya, berhati-hati untuk mengubah suai arahan CMD mengikut keperluan anda sendiri.

  1. Membina imej Docker

Membina imej Docker ialah operasi yang agak mudah Anda hanya perlu menggunakan arahan binaan docker dalam direktori akar projek:

rreee

Antaranya, scrapy-crawler ialah nama imej, . ialah direktori semasa, pastikan anda menambah titik perpuluhan.

  1. Jalankan bekas Docker

Penjalanan bekas Docker ialah langkah terakhir dalam proses Scrapy Dockerization dan juga merupakan kunci kepada keseluruhan proses. Anda boleh menggunakan arahan docker run untuk memulakan imej yang dicipta, seperti berikut:

$ docker build -t scrapy-crawler .

di mana scrapy-crawler ialah nama imej dan yang terkini ialah nombor versi.

  1. Cara Scrapy dijalankan dan digunakan dalam bekas Docker

Sebelum Dockerizing Scrapy, kita perlu memasang Docker dan Docker Compose. Docker Compose ialah alat untuk mentakrif dan menjalankan aplikasi Docker berbilang bekas, membolehkan anda membina dan mengurus aplikasi bekas Scrapy dengan cepat.

Di bawah ini kami akan memperkenalkan langkah demi langkah cara menggunakan Scrapy Dockerization melalui Docker Compose.

  1. Buat fail docker-compose.yml

Buat fail docker-compose.yml dalam direktori akar projek:

$ touch docker-compose. yml

  1. Tulis kandungan fail docker-compose.yml

Konfigurasikannya dalam docker-compose.yml, konfigurasinya adalah seperti berikut:

$ docker run -it scrapy-crawler:latest

Dalam konfigurasi di atas, kami mentakrifkan perkhidmatan bernama apl dan menggunakan arahan binaan untuk memberitahu Docker Compose membina imej apl, dan kemudian menggunakan arahan volum untuk menentukan fail dan direktori yang dikongsi.

  1. Mulakan Docker Compose

Jalankan arahan berikut dalam direktori akar projek untuk memulakan Docker Compose:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
    command: scrapy crawl spider_name

Antaranya, pilihan -d ialah untuk latar belakang larian kontena Docker.

  1. Lihat status larian kontena

Kita boleh menggunakan arahan ps docker untuk menyemak status larian kontena. Perintah berikut akan menyenaraikan bekas Scrapy yang sedang berjalan:

$ docker ps
  1. 查看容器日志

我们可以使用docker logs命令来查看容器日志。如下命令将列出Scrapy容器的运行日志:

$ docker logs <CONTAINER_ID>

其中,CONTAINER_ID是容器ID。

  1. Scrapy容器化部署的实践应用

Scrapy Docker化技术可以应用于任何需要爬取和处理Web页面数据的场景。因此,我们可以将其应用于各种数据分析和挖掘任务中,如电商数据分析、舆情分析、科学研究等。

举例来说,我们可以利用Scrapy Docker容器已有的良好扩展性,搭建大规模爬虫系统,同时使用Docker Swarm实现容器的快速扩展和部署。我们可以设定预先定义好的Scrapy容器规模,根据任务需求动态地进行扩容或缩容,以实现快速搭建、高效运行的爬虫系统。

总结

本文介绍了Scrapy Docker化的基本流程和步骤。我们首先了解了Scrapy的基本架构和工作原理,然后学习了Docker容器化的优势和应用场景,接着介绍了如何通过Dockerfile、Docker Compose实现Scrapy容器化和部署。通过实践应用,我们可以将Scrapy Docker化技术应用到任何需要处理和分析Web页面数据的应用场景中,从而提高工作效率和系统扩展性。

Atas ialah kandungan terperinci Bagaimanakah Scrapy melaksanakan kontena dan penggunaan Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn