利用Scrap框架玩转Redis(scrap redis)
《利用Scrapy框架玩转Redis》
Redis是一种典型的高质量的key-value存储服务,随着全球互联网的发展,Redis在企业级以及大型互联网应用中的应用也愈来愈普遍。在分布式数据采集的大数据应用中,Scrapy框架的强大能力以及善于接入Redis的框架结合后,这一组合成了一种非常实用的服务。
前言完毕,动起来吧!开始我们玩转Redis,使用Scrapy框架实现redis在分布式文件数据采集平台中的应用。要调用Scrapy,我们需要在settings.py文件中添加如下代码:
“`python
#配置redis
SCHEDULER = “scrapy_redis.scheduler.Scheduler”
DUPEFILTER_CLASS = “scrapy_redis.dupefilter.RFPDupeFilter”
SCHEDULER_PERSIST = True
REDIS_URL = ‘redis://host:6379’
REDIS_HOST = ‘host’
REDIS_PORT = 6379
REDIS_ENCODING = ‘utf-8’
接下来,安装Scrapy-redis模块:
pip install scrapy-redis
我们要在spiders目录下新建数据采集模块。在采集模块中,Scrapy-redis提供了一些接口,可以在不同模块中调用,例如在爬虫模块中可以调用:
```pythonfrom scrapy_redis.spiders import RedisSpider
接口添加完毕,在redis_spider.py里面,把业务配置添加到项目的pipelines.py中,而redis中记录需要下载的url,允许多台机器同时操作,url已经爬取完毕后,会从redis中删除,以保证url的不重复爬取:
“`python
#Redis管道文件
#redis_key的值设置为:jiaohu_spider:items
class RedisPipeline(object):
def process_item(self, item, spider):
r = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD, db=0)
data = {
‘title’: item[‘title’],
‘url’: item[‘url’],
‘date’: item[‘date’]
}
r.lpush(‘jiaohu_spider:items’, json.dumps(data))
return item
经过上述配置,Scrapy框架就可以实现数据采集平台对Redis的应用了,使得大数据采集更加高效,欢迎大家在实践中尝试!