一、Scrapyd简介和安装
1、认识scrapyd
按一般的部署方法,部署分布式爬虫需要每个服务器复制代码、用命令行运行,非常繁杂,管理起来也不方便,如爬虫版本更新,可能需要所有服务器进行具体代码的更新。另外,用户也不能方便地查看各个爬虫的运行情况。
Scrapyd:一个部署和运行Scrapy爬虫的应用程序,它使用户能在网页查看正在执行的任务,能通过JSON API部署(上传)工程和控制工程中的爬虫,如新建爬虫任务、终止爬虫任务等。
2、安装
命令行安装:
pip install scrapyd
运行Scrapyd:
scrapyd
3、查看
默认情况下,Scrapyd监听0.0.0.0:6800端口,用浏览器打开:http://localhost:6800/,就能看到Scrapyd已经成功运行。单机页面的Jobs查看已经部署的爬虫,单击Logs查看日志信息。
4、如果连接成功先关闭服务,自己在非C盘下新建一个文件夹,名称自定义如:ScrapydProject
然后进入该文件夹,shift+右键 选择在此处打开命令行工具,输入scrapyd命令,执行完成后会在该文件夹中新建一个dbs空文件夹,用来存放部署到scrapyd服务上的项目的数据库文件。
5、安装scrapyd-client模块。scrapyd-client模块是专门打包scrapy爬虫项目到scrapyd服务中的,进入虚拟环境,执行命令
pip install scrapyd-client
将本地Scrapy项目中的scrapy.cfg配置文件进行配置:
[settings]
default = lianjia01.settings
[deploy]
url = http://localhost:6800/ project = lianjia01
安装完成后,在虚拟环境的scripts中会出现scrapyd-deploy无后缀文件,这个scrapyd-deploy无后缀文件是启动文件,在Linux系统下可以运行,在windows下是不能运行的,所以我们需要编辑一下使其在windows可以运行。
6、进入Python的scripts目录,创建scrapy.bat、scrapyd-deploy.bat两个文件。右键选择编辑,输入一下配置:
@echo off
D:\Python\Python37-32\python.exe D:\Python\Python37-32\Scripts\scrapy-deploy %*@echo off
D:\Python\Python37-32\python.exe D:\Python\Python37-32\Scripts\scrapy-deploy %*
7、进入虚拟环境,进入到你的爬虫项目中,进入带有scrapy.cfg文件的目录,执行scrapyd-deploy,测试scrapyd-deploy是否可以运行,如果出现以下则正常
如果想启动爬虫,可以输入:
curl http://localhost:6800/schedule.json -d project=lianjia01 -d spider=lianjia
在浏览器打开:http://localhost:6800/,查看爬虫运行情况:
如果想停止一个爬虫的命令为:
curl http://localhost:6800/cancel.json -d project=lianjia01 -d job=JOB_ID
Scrapy去重方案
使用scrapy.Request方法时,可以设置dont_filter参数,开启或关闭Scrapy对request的URL去重:
yield scrapy.Request(url,callback=self.parse,dont_filter=False)
这是Scrapy默认的URL去重方式,它实质是通过Python的set()集合的数据结构在内存中实现去重。
当服务器宕机或强制关闭爬虫时,就无法保存request状态。
另外有一个明显的缺点:随着URL的增多,占用内存会越来越多,长时间执行大型爬虫任务时,服务器内存很有可能被占满。