Docker部署Scrapy项目详细教程
概述
Scrapy是一个用于爬取网页数据的Python框架,可以高效地处理大规模数据的爬取任务。而Docker是一个用于快速构建、部署和运行应用程序的开源平台。本教程将介绍如何使用Docker来部署Scrapy项目。
准备工作
在开始之前,我们需要先安装好Docker和Scrapy。请根据官方文档或其他教程进行安装。
编写Scrapy项目
首先,我们需要编写一个Scrapy项目。在本教程中,我们以爬取豆瓣电影Top250为例。
创建Scrapy项目
打开命令行终端,使用以下命令创建一个新的Scrapy项目:
$ scrapy startproject douban_movie
这将创建一个名为"douban_movie"的目录,并在其中包含一些初始文件。
编写爬虫
进入"douban_movie"目录,创建一个新的爬虫:
$ cd douban_movie
$ scrapy genspider douban_spider movie.douban.com
这将创建一个名为"douban_spider"的爬虫文件,并指定要爬取的初始URL为豆瓣电影网站。
打开"douban_spider.py"文件,编写爬虫逻辑。以下是一个简单的示例:
import scrapy
class DoubanSpider(scrapy.Spider):
name = "douban"
start_urls = [
'
]
def parse(self, response):
for movie in response.css('.item'):
yield {
'title': movie.css('.title::text').get(),
'rating': movie.css('.rating_num::text').get(),
'quote': movie.css('.quote span::text').get(),
}
next_page = response.css('.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
这个爬虫将从豆瓣电影Top250页面中提取电影的标题、评分和引用,并通过yield
语句逐一返回。
编写Dockerfile
在项目根目录下创建一个名为"Dockerfile"的文件,用于构建Docker镜像。
FROM python:3.9
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD scrapy crawl douban
这个Dockerfile指定了使用Python 3.9作为基础镜像,并将当前目录下的代码复制到容器的"/app"目录中。然后,安装所需的Python依赖,并在容器启动时执行"scrapy crawl douban"命令。
编写requirements.txt
在项目根目录下创建一个名为"requirements.txt"的文件,用于指定所需的Python依赖包。
scrapy
这个文件只包含一个依赖项,即Scrapy。
构建Docker镜像
在完成上述步骤后,我们可以开始构建Docker镜像了。
打开命令行终端,进入项目根目录,执行以下命令:
$ docker build -t scrapy-douban .
这将根据Dockerfile中的指令构建一个名为"scrapy-douban"的镜像。
运行Docker容器
构建完成后,我们可以通过运行Docker容器来启动Scrapy爬虫。
执行以下命令:
$ docker run -it --rm scrapy-douban
这将启动一个新的Docker容器,并在其中运行Scrapy爬虫。
查看结果
在运行容器的过程中,我们可以在命令行终端中看到爬取结果的输出。当爬取完成后,容器将自动终止。
为了保存爬取结果,我们可以将容器内的数据挂载到主机上的一个目录。执行以下命令来运行容器,并将结果保存到当前目录下的"output.json"文件中:
$ docker run -it --rm -v $(pwd):/app scrapy-douban scrapy crawl douban -o output.json
这