redis-scrapy详情

Item Pipeline:
引擎将(Spider返回的)爬取到的Item给Item Pipeline , scrapy-redis 的Item Pipeline将爬取到的Item存入redis的item queue

修改Item Pipeline可以很方便的根据key从items queue 提取item , 从而实现items proceses集群

redis 数据库 , 不负责爬取 , 只负责url指纹判重 , Request的分配 , 以及数据的存储

scrapy-redis 调度任务是Request对象 , 里面信息量比较大(包含url,callbase函数,headers等信息) , 导致结果降低爬虫速度 ,占中  
大量redis空间 , 想保证效率 , 需要硬件水平

分布式搭建

1.先安装redis
redis-cli  如果后面有ip地址 , 就是目标的数据库 , 没有ip就是本地的数据库

keys *  #显示所有的键
set 键 值 #设置一个值
get 键 值 #获取值

直接拿官方给的例子修改

#启动所有slaver端爬虫的指令 , 下面的格式时参考格式 , 建议采用这种格式
redis_key = '爬虫类名(myspider)(最好是,可以随便写):start_urls'

#发送指令
lpush myspider:start_urls 域名(http://xxxxx/)

和allowd_domain = ["dmoz.org"] 等效 , 指定爬取范围 , 都可以使用

动态获取爬取范围

::

def __init__(self,*args,**kwargs):

    domain = kwargs.pop('domain',"")
    self.allowed_domains = filter(None,domain.split(','))
    #修改下面的代码 , 动态获取爬取范围
    super(当前文件的第一个类名,self).__init__(*args,**kwargs)

删除所有redis键

//删除当前数据库中的所有key
flushdb
//删除所有数据库中的key
flushall

在服务器中使用后台运行 info.log 日志
nohup python3 main.py >info.log &

htop 查看后台运行进程

::

# 将.rst文件生成我的网页文档html
./make.bat html

github 上传文件命令或者更新文件
git add .
git commit -m .
git push origin_doc master

github克隆命令
git clone https://github.com/tkpy/tk.git

scrapy 参考文件: http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/settings.html

Slphinx 使用手册: https://zh-sphinx-doc.readthedocs.io/en/latest/contents.html

你可能感兴趣的:(redis-scrapy详情)