12、分布式爬虫(二)

一、分布式项目演示(二)(上次演示的是spider类,这次要用的是crawlspider类)

先通过一般的管道,最后才传到redis,所以redis的优先级比一般管道低

在mysql用truncate table清理表数据,可以避免数据录入从原来数据尾部接着写入,在查询中写入truncate TABLE 加表 名

scrapy_reidis 爬虫文件更改:

这里要用crawlspider所以继承rediscrawlspider类,from scrapy_redis.spiders import RedisSpider

初始url也可要换,redis_key = “zh:start_urls”。

两项目分布式 观察:

1、spider文件中打印观察

观察项目一和项目二两个爬虫留着的数据是否与redis数据库留的相等,项目一的存在一个表,项目二存另一个表

2、pipeline中打印观察

管道里观察为了看到项目一加项目二的是否为这个数据

redis中数据持久化到mysql数据库中:

由于redis是基于内存的,会在内存上处理数据,长久保存数据在内存上,会占资源,所以要长久存储的话要转到msyql中。特别是图片数据,如果不连接到mysql的话直接存在redis中会很卡,redis只适合暂时存储。

写入一个py文件,source,data =rediscli.blpop([“zh:items”])其中的blpop是弹出数据,用source,data 接收中间的逗号的意义是,前面的source代表zh:items这个键,后面的代表所有值,然后用item = json.loads(data)来存储这个值,二进制数据转成json数据放到item变量存储。

novel_from_redis    novel是从redis来到这个章节的信息


mysqlconn.commit()
            cursor.close()每次提交完顺便关游标可以防止数据泄露

二、scrapy 项目部署

scrapyd:(报废)

报废

报废是一个用于部署和运行刮蜘蛛的应用程序。它使您能够部署(上传)项目并使用 JSON API 控制它们的蜘蛛。

Scrapyd是一个运行Scrapy spider的开源应用程序。它提供了一个带有HTTP API的服务器,能够运行和监控Scrapy蜘蛛。要将spider部署到Scrapyd,可以使用由Scrapyd客户端包提供的Scrapyd -deploy工具。
Scrapyd安装
Scrapyd依赖于以下库,但安装过程负责安装缺少的库:

Python2.6以上
Twisted8.0以上
Scrapy0.17以上
如何安装Scrapy取决于您正在使用的平台。通用的方法是从PyPI安装它:
pip install scrapyd
安装之后 通过scrapyd命令启动即可:scrapyd
scrapyd带有一个最小的Web界面,启动后,通过访问http://localhost:6800。

pip install scrapyd-client 然后到爬虫项目文件下输入scrapyd-deploy就可以对这个爬虫进行部署

然后得到一个scrapy.cfg的部署文件,本地url的ip必须有,使用远程服务器访问的时候还要填写用户名和密码

scrapyd-deploy -1可以查看设置的部署名称和url

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

启动爬虫:curl url -d project=(项目名称) -d spider=db

关闭爬虫:curl url -d project=(项目名称) -d job=项目名称

部署之后就相等于可以远程查看了,通过访问http://localhost:6800。来查看log日志等

遇到’scrapyd-deploy’ 不是内部或外部命令时:

bind_address=0.0.0.0(部署远程可访问)

API:

scrapyd的web界面比较简单,主要用于监控,所有的调度工作全部依靠接口实现.
官方文档:https://scrapyd.readthedocs.io/en/latest/api.html

scrapyd设置:

Scrapyd在以下位置搜索配置文件,并按顺序解析它们,最新的配置文件具有更高的优先级:

/etc/scrapyd/scrapyd.conf (Unix)
c:\scrapyd\scrapyd.conf (Windows)
/etc/scrapyd/conf.d/* (in alphabetical order, Unix)
scrapyd.conf
~/.scrapyd.conf (users home directory)

eggs_dir= eggs

logs_dir= logs

items_dir =

jobs_to_keep = 5

dbs_dir= dbs

max_proc = 0

绑定ip:如果要远程,设置为

max_proc_per_cpu = 4

0.0.C.0

finished_to_keep = 100

poll_interval = 5.2

bind_address = 127.0.0.1

http_port = 6880

debug= off

runner= scrapyd.runner

application = scrapyd.app.application

launcher= scrapyd.launcher.Launcher

webroot= scrapyd.website.Rost

[services]

schedule.json= scrapyd. webservice.schecule

cancel.json= scrapyd . webservice.carcel

addversion.json= scrapyd.webservice.AdcVersion

listprojects.json = scrapyd.webservice.ListFrojects

listversions.json = scrapyd .websarvice.Listlersions

listspiders.json = scrapyd.webservice.Listspiders

delproject.json= scrapyd.websarvice.DeleteProject

delversion.json= scrapyd .webservice.Deleteversion

listjobs.json= scrapyd .webservice.Listlobs

daemonstatus.json = scrapyd . websarvice.DaemonStatus

管道得到数据处理完之后,都要return item,来给引擎反馈,让引擎知道哪个管道接收到了,因为管道不仅只有一个,有多个来进行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T o r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值