scrapy分布式初试,在有缘网你找到真爱了吗
这次使用scrapy_redis+scrapy分布式爬取有缘网。
需要安装scrapy,scrapy_redis,redis,安装详情可以自行参考网上其他博文。
本文的爬虫项目已经写好,如果是小白可以去看其他到大佬的scrapy博文。
代码我放在github上,自行拿取
话不多说,上代码
1. 在settings.py修改
ITEM_PIPELINES = {
# Store scraped item in redis for post-processing. 分布式redispipeline
# 保存到redis数据库
'scrapy_redis.pipelines.RedisPipeline': 300,
}
""" scrapy-redis配置 """
# Enables scheduling storing requests queue in redis.
# 修改调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# Ensure all spiders share same duplicates filter through redis.
# 去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 远程连接redis库
REDIS_HOST = 'your redis ip'
REDIS_PORT = 6379
2. 在爬虫文件里修改
# 导入
from scrapy_redis.spiders import RedisCrawlSpider
# CrawlSpider 改为 RedisCrawlSpider
class Mm180Spider(RedisCrawlSpider):
name = 'mm18-0'
# 注释掉
# allowed_domains = ['http://www.youyuan.com/find/shenzhen/mm18-0/advance-0-0-0-0-0-0-0/p1/']
# start_urls = ['http://www.youyuan.com/find/shenzhen/mm18-0/advance-0-0-0-0-0-0-0/p1/']
# 添加
redis_key = "mm18_0:start_urls"
3. 启动爬虫
# 启动爬虫
scrapy crawl mm18-0
虽然启动了,但没有url,整个项目处于等待状态
4. 在redis库中添加url
lpush mm18_0:start_urls http://www.youyuan.com/find/shenzhen/mm18-0/advance-0-0-0-0-0-0-0/p1/
添加后等待状态直接开始爬取,爬取数据保存在redis数据库里
总结
代码亲测有用,但不要过量爬取,影响他人网站。这只是个练手项目,想深入了解scrapy_redis,可以去github看开源代码