使用scrapy_redis库实现分布式爬取。命令安装:pip install scrapy_redis
`
修改项目中settings.py文件配置信息
# 替换scrapy调度器,使用scrapy_redis调度
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 使用scrapy_redis去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 设置Redis的连接信息,这里的可以设置用户名和密码,如果没有则为空
REDIS_URL = "redis://localhost:6379"
# 设置Redis队列是否保存(去重队列和请求队列会一直保存在Redis数据库中,用户可以暂停和启动爬虫而不影响继续去重)
SCHEDULER_PERSIST = True
# 设置重启爬虫时是否清空爬虫队列(如果设置为True,每次重启爬虫,系统都会清空去重队列和请求队列,一般设置为False)
SCHEDULER_FLUSH_ON_START = True
修改spider文件
将爬虫类修改为继承自scrapy_redis.spiders.RedisCrawSpider类。
from scrapy_redis.spiders import RedisCrawlSpider
class LianjiaSpider(RedisCrawlSpider):
name = 'lianjia'
allowed_domains = ['m.lianjia.com']
redis_key = 'LianjiaSpider:start_urls'
运行爬虫,会等待添加url
在命令行定位到redis目录,采用集合命令:redis-cli lpush LianjiaSpider:start_urls https://m.lianjia.com/bj/jingjiren/ao22pg1
使用scrapyd部署爬虫。命令安装:pip install scrapyd
和pip install scrapyd-client
配置爬虫项目中的scrapy.cfg文件
[settings]
default = pachong8.settings
[deploy]
url = http://localhost:6800/
project = pachong8
命令行进入到爬虫项目目录并执行命令:
scrapyd-deploy
提示部署status状态是OK则爬虫部署成功
启动爬虫输入:
curl http://localhost:6800/schedule.json -d project=pachong8 -d spider=lianjia
可以在浏览器打开:http://localhost:6800/,查看爬虫运行情况
如果需要停止爬虫,输入命令:
curl http://localhost:6800/cancel.json -d project=pachong8 -d job=JOB_ID
JOB_ID通过浏览器查看PID