环境 ArchLinux Pycharm
一、安装scrapy_redis
| 1 | cd py | 
二、启动Redis、Mongodb服务
| 1 | sudo systemctl start mongondb.service | 
三、修改爬虫文件
让爬虫文件继承父类RedisSpide并添加redis_key = ‘blogspider’1
2
3
4
5
6class BlogSpiderSpider(RedisSpider):
    name = 'blog_spider'
    allowed_domains = ['www.kingname.info']
    redis_key = 'blogspider'
    start_urls = ['http://www.kingname.info/archives/']
    host='http://www.kingname.info'
四、 修改设置
 在设置(settings.py)里面添加
 1
2
3
4
51. SCHEDULER = "scrapy_redis.scheduler.Scheduler" #启动调度员Scheduler
2. DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 去重
3. SCHEDULER_PERSIST = True # 不清理Redis队列
4. SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue" #设置优先级队列
<爬虫的请求算法有三种:队列、栈、优先级队列>
五、设置Redis地址端口(远程使用)在settiings.py
REDIS_HOST= ‘127.0.0.1’
REDIS_PORT = 6379
六、控制台打印Crawled 0 pages,scrapyed 0 item 导致爬不到数据
- 这是由于使用了RedisScrapy作为父类以后 ,爬虫会直接监控Redis中的数据,并不读取start_urls中的数据。所以Redis现在是空的,爬虫处于等待状态:
 处理办法:
 在main.py中初始化Redis爬虫地址:1 
 2
 3
 4
 5from scrapy import cmdline 
 import redis
 url = redis.StrictRedis(host='127.0.0.1')
 url.lpush('blogspider','http://www.kingname.info/archives/')
 cmdline.execute("scrapy crawl blog_spider".split())
 
		