Docker python3.7+Scrapy1.5+Scrapyd+Scrapyd-client部署爬虫踩坑记

基于python3.7在docker hub上的官方镜像

在基于debain的官方python3.7的镜像用dockerfile安装了scrapy、scrapyd、scrapyd-client。

1. ...in from_crawler spider = cls(*args, **kwargs) TypeError: __init__() got an unexpected keyword argument '_job'

在win用pycharm运行正常,在容器中直接用scrapy命令行运行正常,用scrapyd 调度执行就报错。

原因: 我自己在每一个spider中 复写了 __init__ 方法,并且参数 跟  scrapy/spider/__init__.py的参数不同。

解决办法: 参数改成和父类__init__ 一样的,并且删除scrapyd多传的_job 参数,然后重新部署。

def __init__(self, name=None, **kwargs):
        kwargs.pop('_job', None)
        super().__init__(name, **kwargs)

2. 爬虫一旦有修改,必须用scrapyd-client 发布新版本

3. 发布 : scrapy-deploy 主机名  -p 项目名  --version  数字(可以小数) 

例子 项目配置文件scrapy.cfg如下:

[settings]
default = pro.settings

[deploy:name] 
url = http://192.168.0.111:6800/
project = suibian 

发布:

scrapyd-deploy name -p lalala --version 1

最终在 http://localhost:6800 看到的项目名称就是 lalala, scrapyd-deploy后面的name 对应 配置文件里面的 [deploy:name] 这个在统一服务器上部署多爬虫的时候有用,用docker的话,一个容器就部署一个。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值