Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Scrapy melaksanakan kontena dan penggunaan Docker?
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:
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. 上述过程不断循环,直到达到设定的终止条件。
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接口和工具,可供开发人员和运维人员快速理解和使用。
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.
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
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.
Membina imej Docker ialah operasi yang agak mudah Anda hanya perlu menggunakan arahan binaan docker dalam direktori akar projek:
rreeeAntaranya, scrapy-crawler ialah nama imej, . ialah direktori semasa, pastikan anda menambah titik perpuluhan.
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.
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.
Buat fail docker-compose.yml dalam direktori akar projek:
$ touch 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.
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.
Kita boleh menggunakan arahan ps docker untuk menyemak status larian kontena. Perintah berikut akan menyenaraikan bekas Scrapy yang sedang berjalan:
$ 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页面数据的应用场景中,从而提高工作效率和系统扩展性。
Atas ialah kandungan terperinci Bagaimanakah Scrapy melaksanakan kontena dan penggunaan Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!