您的位置:首页 > 数据库 > Redis

python中基于scrapy框架的分布部署redis,scrapyd以及gerapy

2018-09-27 22:31 453 查看

分布式的步奏
1:(1)下载redis包,记住要用管理员身份运行:也可以到安装包的安装路径去按住shift建再加上鼠标右键在命令窗口打开
   (2)redis-server redis.windows.conf(这样是开服务的:还要在redis.windows.conf文件中的搜索bind,将后面的ip改成当前服务器ip     bind 192.168.216.54)
   (3)redis-cli -h ip 这是链接服务的
    redis开服务了之后,把代码发给连接服务的机器【代码中spider中的继承的scrapy.spider改成RedisSpider,注释start_urls,redis_key=‘这个值可以自己定’   setting中的

redis的启动命令,lpush +redis_key中自己设置的名字 +url请求的网址


# 配置使用的scrapy_redis调度器
SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
# 配置使用的去重类
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
# redis远程链接地址
# REDIS_URLS = 'redis://root:192.168.216.54'主机的ip
REDIS_HOST='192.168.216.54'自己的ip
REDIS_PORT='6379'
】之后链接服务的机器运行代码,在连接(3)这个是地方或者在lpush + start_keys后面定义的值+请求的网址
2:下载scrapyd包之后找到安装目录在命令行打开输入scrapyd就打开了scrapyd服务了  (输入172.0.0.1:6800 可以查看 如果还是用scrapyd操作的化就可以看上面的文件,接下来用的是gerapy这个包就是将scrapyd界面化了 )
3:1.下载gerapy  pip install gerapy
还要下载scrapyd包,在虚拟环境下载的打开命令行工具进入虚拟环境进入scrapyd包的目录,输入scrapd开启scrapyd

2.创建文件夹,存放部署的项目(随便取创建的名字,projects中直接把项目拉进去就是项目管理中的数据)
3.进入文件夹,gerapy init 初始化
4.进入gerapy文件夹,gerapy migrate创建数据表
5.gerapy runserver  启动项目
6.浏览器输入http://127.0.0.1:8000访问

点击项目管理然后

在scrapyd安装目录中的default_scrapyd 改为(
bind_address = 0.0.0.0)意可以连接远程服务器
两个点击主机管理创建 名字加IP地址 端口6800这样连接
上其他的了,然后再项目部署中打包 部署  你就是主机( 部署文件就是在之前创建的文件里面的projects 写完的爬虫直接托里面来)
主机从机 连接上自己的之后 点击调度 就能看到别人部署给你的项目了

gerapy就是把scrapyd界面化  运行gerapy要把scrapy打开(找到目录然后)

接下来就是给大家说一下这三个包的下载和安装,以及一些安装出现的错误,还有每个包的作用。

夜黑风高,闲来无事,今天来给大家说一说python的scrapy框架的爬虫分步。主要用到的就是三个包吧

一:redis 这个包很简单,下一步安装就好,这个是网址下载安装就好了  ( https://github.com/MicrosoftArchive/redis/releases )具体下载多少位数的根据自己的需求,我下载的是 安装好之的后找到安装的路径,按住shift鼠标右键在命令行窗口打开:【这样做的目的就是以管理员的身份运行,不然的话会有一些权限不够】打开命令行之后输入redis-server空格redis.windows-conf   如果出现如图的状态 表示redis安装成功,出现这个图就是服务开启了

可能出现的错误以及解决办法我总结了如下:

出现错误:# Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

解决方法:在命令行中运行

redis-cli

127.0.0.1:6379>shutdown

not connected>exit

然后重新运行redis-server  redis.windows.conf,启动成功!

二:scrapyd这个包就是开启分布式爬虫的的包,可以打开命令行工具pip install scrapy(如果你要是自己建的虚拟环境,要先进虚拟环境之后在下载)等待安装完成输入scrapyd,如图 之后打开如图第一个矩形的网址就可以查看了查看结果如图 这个时候就说明已经安装成功了scrapyd。scrapyd可以自己做爬虫的分布式,但是代码量比较复杂,所以就引用了gerapy这个包,这个包可以吧scrapyd分布式界面化,操作也比较简单(单独用scrapyd做的我会在文章最后给大家介绍)

三:gerapy这个包

1.下载gerapy  pip install gerapy
还要下载scrapyd包,在虚拟环境下载的打开命令行工具进入虚拟环境进入scrapyd包的目录,输入scrapd开启scrapyd

2.创建文件夹,存放部署的项目(随便取创建的名字,projects中直接把项目拉进去就是项目管理中的数据)
3.进入文件夹,gerapy init 初始化
4.进入gerapy文件夹,gerapy migrate创建数据表
5.gerapy runserver  启动项目
6.浏览器输入http://127.0.0.1:8000访问

点击项目管理然后

在scrapyd安装目录中的default_scrapyd 改为(
bind_address = 0.0.0.0)意可以连接远程服务器
两个点击主机管理创建 名字加IP地址 端口6800这样连接
上其他的了,然后再项目部署中打包 部署  你就是主机( 部署文件就是在之前创建的文件里面的projects 写完的爬虫直接托里面来)
主机从机 连接上自己的之后 点击调度 就能看到别人部署给你的项目了

gerapy就是把scrapyd界面化  运行gerapy要把scrapy打开

 

接下来就是scrapyd自己做分布式的一些步奏,进阶上面的步奏

  1. 如果连接成功先关闭服务,自己在非C盘下新建一个文件夹,名称自定义如:scrapydTest

然后进入该文件夹,shift+右键 打开命令行工具,输入scrapyd执行,执行完成后会新建一个dbs空文件夹,用来存放爬虫项目的数据文件

  1. 安装scrapyd-client模块。scrapyd-client模块是专门打包scrapy爬虫项目到scrapyd服务中的,进入虚拟环境,执行命令pip install scrapy-client==1.1.0,安装完成后,在虚拟环境的scripts中会出现scrapyd-deploy无后缀文件,这个scrapyd-deploy无后缀文件是启动文件,在Linux系统下可以远行,在windows下是不能运行的,所以我们需要编辑一下使其在windows可以运行

新建一个scrapyd-deploy.bat文件,右键选择编辑,输入以下配置,注意:两个路径之间是空格,一定要使用双引号。单引号的话会错误。

@echo off

"C:\Users\qianzhen\Envs\scrapySpider\Scripts\python.exe" "C:\Users\qianzhen\Envs\scrapySpider\Scripts\scrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9

  1. 进入虚拟环境,进入到你的爬虫项目中,进入带有scrapy.cfg文件的目录,执行scrapyd-deploy,测试scrapyd-deploy是否可以运行,如果出现以下则正常

  1. 打开爬虫项目中的scrapy.cfg文件,这个文件就是给scrapyd-deploy使用的

将url这行代码解掉注释,并且给设置你的部署名称

  1. 再次执行scrapyd-deploy -l 启动服务,可以看到设置的名称

8、开始打包前,执行一个命令:scrapy list   ,这个命令执行成功说明可以打包了,如果没执行成功说明还有工作没完成

注意执行 scrapy list  命令的时候很有可能出现错误,如果是python无法找到scrapy项目,需要在scrapy项目里的settings.py配置文件里设置成python可识别路径

# 将当前项目的一级目录TotalSpider目录添加到python可以识别目录中

BASE_DIR = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))

sys.path.insert(0, os.path.join(BASE_DIR, “TotalSpider”))

如果错误提示,什么远程计算机拒绝,说明你的scrapy项目有链接远程计算机,如链接数据库或者elasticsearch(搜索引擎)之类的,需要先将链接服务器启动

执行 scrapy list  命令返回了爬虫名称说明一切ok了,如下图

 

9、到此我们就可以开始打包scrapy项目到scrapyd了,用命令结合scrapy项目中的scrapy.cfg文件设置来打包

执行打包命令: scrapyd-deploy 部署名称 -p 项目名称

如:scrapyd-deploy wj -p TotalSpider

如下显示表示scrapy项目打包成功

如果出现

版本不对,建议安装pip install scrapyd==1.1.1,直到你的egg文件夹中有项目即可

curl http://localhost:6800/schedule.json -d project=项目名称 -d spider=爬虫名称

执行后,如果出现

则爬虫运行成功

可以去网页中127.0.0.1::6800查看爬虫运行状态

 

停止爬虫

curl http://localhost:6800/cancel.json -d project=scrapy项目名称 -d job=运行ID

 

删除scrapy项目

注意:一般删除scrapy项目,需要先执行命令停止项目下在远行的爬虫

curl http://localhost:6800/delproject.json -d project=scrapy项目名称

 

查看有多少个scrapy项目在api中

curl http://localhost:6800/listprojects.json

 

查看指定的scrapy项目中有多少个爬虫

curl http://localhost:6800/listspiders.json?project=scrapy项目名称

 

总结几个请求url

1、获取状态

http://127.0.0.1:6800/daemonstatus.json

2、获取项目列表

http://127.0.0.1:6800/listprojects.json

3、获取项目下已发布的爬虫列表

http://127.0.0.1:6800/listspiders.json?project=myproject

4、获取项目下已发布的爬虫版本列表

http://127.0.0.1:6800/listversions.json?project=myproject

5、获取爬虫运行状态

http://127.0.0.1:6800/listjobs.json?project=myproject

 6、启动服务器上某一爬虫(必须是已发布到服务器的爬虫)

http://127.0.0.1:6800/schedule.json (post方式,data={"project":myproject,"spider":myspider})

7、删除某一版本爬虫

http://127.0.0.1:6800/delversion.json

(post方式,data={"project":myproject,"version":myversion})

8、删除某一工程,包括该工程下的各版本爬虫

http://127.0.0.1:6800/delproject.json(post方式,data={"project":myproject})

 

https://github.com/DormyMo/SpiderKeeper

一个基于flask后台框架写的scrapy爬虫监控小项目,

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: