scrapy采集程序开发完毕,难道还命令行启动吗?既然有炫酷的scrapyd的部署服务和scrapyweb这样的可视化界面,抱着学习的态度研究一波。在docker上成功进行了部署。本机局域网的IP为192.168.xx.xx
一. docker 部署 scrapyd 文件准备# 目录下的文件 # 通过docker build 制作镜像 Dockerfile # scrapyd的配置文件 scrapyd.conf # 依赖包,项目会在scrapyd所在环境上运行 requestments.txt1. Dockerfile
FROM python:3.8 WORKDIR /code RUN mkdir ./logs COPY scrapyd.conf /etc/scrapyd/ COPY requirements.txt . EXPOSE 6800 RUN pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 默认的logs位置是在 /root/logs; RUN mkdir /root/logs CMD logparser -dir ./logs & scrapyd2. scrapyd.conf
[scrapyd] eggs_dir = eggs logs_dir = logs items_dir = jobs_to_keep = 5 dbs_dir = dbs max_proc = 0 max_proc_per_cpu = 4 finished_to_keep = 100 poll_interval = 5.0 bind_address = 0.0.0.0 http_port = 6800 username = password = debug = off runner = scrapyd.runner jobstorage = scrapyd.jobstorage.MemoryJobStorage application = scrapyd.app.application launcher = scrapyd.launcher.Launcher webroot = scrapyd.website.Root eggstorage = scrapyd.eggstorage.FilesystemEggStorage [services] schedule.json = scrapyd.webservice.Schedule cancel.json = scrapyd.webservice.Cancel addversion.json = scrapyd.webservice.AddVersion listprojects.json = scrapyd.webservice.ListProjects listversions.json = scrapyd.webservice.ListVersions listspiders.json = scrapyd.webservice.ListSpiders delproject.json = scrapyd.webservice.DeleteProject delversion.json = scrapyd.webservice.DeleteVersion listjobs.json = scrapyd.webservice.ListJobs daemonstatus.json = scrapyd.webservice.DaemonStatus3. requestments.txt
beautifulsoup4==4.11.1 fake-useragent==0.1.11 lxml==4.8.0 pymongo==3.5.0 PyMySQL==1.0.2 pyquery==1.4.3 python-scrapyd-api==2.1.2 redis==4.3.1 requests==2.27.1 Scrapy==2.6.1 scrapy-redis==0.7.2 Scrapy-Redis-BloomFilter==0.8.1 scrapy-splash==0.8.0 scrapyd==1.3.0 logparser==0.8.2制作镜像和启动容器
# 制作镜像 docker build -t lpc/scrapyd . # 启动容器 docker run -d -p 6800:6800 --name scrapyd lpc/scrapyd
scrapyd服务启动成功之后,因为scrapyd.conf的bind设置为0.0.0.0, 访问http://192.168.xx.xx:6800可以看到成功界面, 界面如下:
# 制作scrapydweb的镜像 Dockerfile # scrapydweb 的配置文件,为方便修改,我这次使用了挂载的方式 # 文件所在目录为 D:/volume/scrapydweb scrapydweb_settings_v10.py1. Dockerfile
FROM python:3.8 WORKDIR /code EXPOSE 5000 RUN pip3 install Werkzeug==2.0.1 -i https://pypi.tuna.tsinghua.edu.cn/simple RUN pip3 install scrapydweb==1.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple CMD scrapydweb2. scrapydweb_settings_v10.py
文件就不往上放了,本地pip scrapydweb包,执行scrapydweb,会在当前目录生成该文件。特别的做如下改动
# 声明scrapyd服务所在的位置
SCRAPYD_SERVERS = [
'192.168.xx.xx:6800'
]
制作镜像和启动容器
# 制作镜像 docker build -t lpc/scrapydweb . # 启动容器 docker run -d -p 5000:5000 -v D/volume/scrapydweb:/code --name scrapydweb lpc/scrapydweb
通过 192.168.xx.xx 我们可以成功访问到scrapydweb的界面,界面如下:
三. 额外记录打包命令我们可以通过scrapydweb界面上进行打包操作,这里不再赘述。此处记录本地项目命令打包
1. 下载打包模块pip install scrapy-client2. 修改配置文件
修改scrapy项目路径下的文件 scrapy.cfg
[settings] default = xxx.settings [deploy:vm1] url = http://192.168.xx.xx:6800/ project = xxx3. 打包给scrapyd服务
scrapyd-deploy vm1 -p xxx



