gerapy分布式爬虫监控

gerapy部署问题小结

前几天折腾的crawlab虽然功能强大,但是槽点太多了,试试崔大神的gerapy吧。先挖个坑记录下槽点:

  1. 前端无法更改用户密码,Django后台登录可以,这个我是在源码中找出来的(docs/en/source/docker.md, docs/zh_cn/build/html/_sources/docker.md.txt)
  2. 下面docker定死了8000端口,暂时不要使用其他端口。如果需要,改下Dockerfile吧。感觉做的产品不细致,这种应该安装时给选项定制用户信息和端口的
https://github.com/Gerapy/Gerapy/search?q=admin
docker run -d -v ~/gerapy:/app/gerapy -p 8000:8000 germey/gerapy
http://localhost:8000/admin/auth
gerapy爬虫项目结构
  1. 爬虫上传结构是又要求的,需要把整个项目文件夹打包,scrapy.cfg千万不要忘了。
  2. 另外,部署前一定要在每个主机安装好项目的依赖,可以在项目目录运行 pipreqs ./ ,生成requirements.txt然后每个节点pip install -r requirements.txt。不事先安装依赖的话部署会失败
  3. 如果某个.py文件无法在gerapy预览,考虑下该文件是否编码不是utf-8,上传到github时会检测到。

虽然功能比较简单,但是基本上开箱能用,不像crawlab部署困难而且坑儿很多。期待新版本吧。

scrapy爬取一定数量页面后停止

总结scrapy异常停止的原因

说实话,我非常不喜欢scrapy这种框架,像一篇博客说的,高不成低不就。但是,scrapy有它的可取之处,不然怎么成为最流行的爬虫框架呢。

scrapy经常遇到的问题是,爬虫刚开始就结束或者爬了一些页面结束,甚至有时候就一直输出日志, 0 pages/min什么的。这种情况一般有下面几种原因:

  1. scrapy等待redis或者redis里没有url可爬了
  2. 去重设置过滤了url
  3. 爬虫逻辑有问题,死循环或者错误循环,或者xpath有问题不能获取下一页url

基本上这三种原因是爬虫异常停止的罪魁祸首。