我们经常会使用Scrapy来爬取数据。但爬取行为一般都是使用定时任务来控制。Scrapyd就是一款非常方便的`Scrapy`任务调度管理工具。和KongaKong的关系一样,SpiderKeeper是一款针对Scrapyd的GUI管理工具。

我们可以将Scrapyd打进Docker容器运行。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
FROM python:3
ENV PYTHONUNBUFFERED 1
ENV ENV production
RUN mkdir /code/
WORKDIR /code
ADD . /code/
RUN apt-get update
RUN apt-get install build-essential g++ flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev python libx11-dev libxext-dev -y
RUN tar -xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2
RUN cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs .
RUN cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs ./skullspider/spiders
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 6800
CMD bash -c 'scrapyd-deploy --build-egg output.egg'
RUN pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com -r requirements.txt
CMD bash -c 'scrapyd'

如果你的项目中也使用到了phantomjs,请将Dockerfile作适当调整。

运行ScrapyKeeper服务

1
docker run -p 6800:6800 scrapyd

通过EGG File部署

在你的scrapy爬虫项目中使用scrapyd生成EGG File

1
scrapyd-deploy --build-egg output.egg

打开SpiderKeeperWeb页面,进入Deploy页面

上传刚才的EGG文件,点击提交。

部署定时任务

Spider

选择部署成功的某一个spider

Priority

优先级

Chose Daemon

如果只部署了一个EGG文件,选择auto即可,否则请选择对应的

Choose Month,Choose Day of Week,Choose Day of Month,Choose Hour,Choose Minutes

配置爬虫运行的周期性时间

Cron Expressions (m h dom mon dow)

如果你熟悉Cron表达式,也可以使用该方式配置