scrapy爬虫部署服务器「建议收藏」

scrapy爬虫部署服务器「建议收藏」scrapy爬虫部部署服务器时间:2020年5月27日18:28:30作者:钟健记录:scrapy爬虫关键字:scrapyscrapydscrapydweb一、scrapy爬虫部署服务器scrapy通过命令行运行一般只用于测试环境,而用于运用在生产环境则一般都部署在服务器中进行远程操作。scrapy部署服务器有一套完整的开源项目:scrapy+scrapyd(服务端)+scrapy-client(客户端)+scrapydweb1、scrapyd1.介绍Scrapyd是用于部署和运

大家好,又见面了,我是你们的朋友全栈君。

scrapy爬虫部部署服务器

时间:2020年5月27日18:28:30

作者:钟健

记录:scrapy爬虫

关键字:scrapy scrapyd scrapydweb

一、scrapy爬虫部署服务器

scrapy通过命令行运行一般只用于测试环境,而用于运用在生产环境则一般都部署在服务器中进行远程操作。

scrapy部署服务器有一套完整的开源项目:scrapy+scrapyd(服务端)+scrapy-client(客户端)+scrapydweb

1、scrapyd

1.介绍

Scrapyd是用于部署和运行Scrapy爬虫的应用程序。它使您可以使用JSON API部署(上传)项目并控制其爬虫。

是目前分布式爬虫的最好解决方法之一

官方文档 https://scrapyd.readthedocs.io/

2.安装

pip install scrapyd

安装过程中可能会遇到大量的错误,大部分都是所依赖的包没有安装,安装过程中要确保scrapy已经安装成功,只要耐心的将所有缺少的依赖包安装上就可以了

  • 打开命令行,输入scrapyd,如下图:
    在这里插入图片描述

  • 浏览器访问:http://127.0.0.1:6800/

在这里插入图片描述

2、scrapy-client

1.介绍:

scrapy-client它允许我们将本地的scrapy项目打包发送到scrapyd 这个服务端(前提是服务器scrapyd正常运行

官方文档https://pypi.org/project/scrapyd-client/

2.安装

pip install scrapy-client

和上面的scrapyd一样,可能会遇到各种错误,耐心一点,大部分都是安装依赖

3、scrapydweb(可选)

1.介绍

ScrapydWeb:用于Scrapyd集群管理的Web应用程序,支持Scrapy日志分析和可视化。

官方文档:https://pypi.org/project/scrapydweb/

2.安装

pip install scrapyd

在保持scrapyd挂起的情况下运行命令scrapydweb,也就是需要打开两个doc窗口

运行命令scrapydweb,首次启动将会在当前目录下生成配置文件“scrapydweb_settings_v*.py”

  • 更改配置文件
    编辑配置文件,将ENABLE_LOGPARSER更改为False

  • 添加访问权限

    SCRAPYD_SERVERS = [
        '127.0.0.1:6800',
        # 'username:password@localhost:6801#group',
        ('username', 'password', 'localhost', '6801', 'group'),
    ]
    
  • HTTP基本认证

    ENABLE_AUTH = True
    USERNAME = 'username'
    PASSWORD = 'password' 
    

浏览器访问:http://127.0.0.1:5000/1/servers/

在这里插入图片描述

二、实际操作(一切的操作都在scrapyd启动的情况下)

1.上传爬虫

在这里插入图片描述

编辑scrapy.cfg,url是scrapyd服务器的位置,由于scrapyd在本地,所以是localhost。

注意:我们要切换到和scrapy.cfg同级目录下,继续以下操作

scrapyd-deploy

在这里插入图片描述

上图表示运行成功!

在这里插入图片描述

以上的文件夹是成功后自动创建的(为什么之前的截图有,我之前已经测试过)

然后输入以下命令上传服务器

scrapyd-deploy demo -p qcjob

结构:scrapyd-deploy -p (scrapyd-deploy <目标> -p <项目>)

运行成功的图片

在这里插入图片描述

2.启动爬虫

cmd输入(爬取一天内关于java的职业需求

curl http://localhost:6800/schedule.json -d project=qcjob -d spider=job -d key = java time=0

我编写的爬虫可以根据用户输入的参数来爬取数据

key=表示关键字(默认是全部)

time=表示时间(0=24小时,1=3天内,2=一周内,3=一个月内,默认为0)

当然scrapyd强大之处在于可以用http方式控制爬虫

http://localhost:6800/schedule.json?project=qcjob&spider=job&key=java&time=0  #POST

以下是用postmain进行模拟post请求。

在这里插入图片描述

然后进入http://127.0.0.1:6800/

点击job,就可以查看爬虫是否运行,和运行时间

在这里插入图片描述

从图可以看出,这个爬虫运行了9分31秒。

当然我们也可以从scrapydweb中查看和管理爬虫浏览器访问:http://127.0.0.1:5000/1/servers/

在这里插入图片描述

我们可以通过可视化界面来控制爬虫运行,scrapyd可以启动多个不同的爬虫,一个爬虫的多个版本启动。是目前分布式爬虫的最好解决方法!!!

三、数据展示

本次爬取花费9分31秒,共爬去25,000余条数据,爬虫速度开至每秒8次访问,以他该服务器的最大访问量

其中部分数据存在有误,为了保证速度,没有进行过多的筛取和排查,错误率保持较低水平

在这里插入图片描述

在这里插入图片描述

四、问题与思考

  • 通过爬去可以看得出,如果采用单一的爬虫的话,爬取速度还是比较慢的,如果采用多个爬虫,分布式爬取的话,就存在数据是否重复以及数据的共用问题。
  • 如果采用分布式爬虫的话,就涉及到ip代理,因为一台机器如果大量访问的话经过测试会导致浏览器访问,该网页都无法打开,如果设置IP代理,就需要大量的代理IP
  • 虽然爬虫已经部署在服务器上,但是还是无法做到,通过用户输入关键字时间等地址等多个参数进行爬取数据,无法做到实时展示,只能先运行爬虫,爬取大量数据储存与数据库,然后才能进行分析,做出图表。
  • 关于数据的统计与展示,单一的sql语句,很难满足其对大量数据的分析,可能需要用Python的数据分析库,对数据进行处理,然后才能展示。

五、收获

已经可以通过http请求的方式来控制爬虫的启动停止,以及传递参数,就等于scrapy爬虫是可以集成于web应用里面的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150367.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 项目范围管理「建议收藏」

    项目范围管理「建议收藏」1、项目范围管理要做好以下三方面工作:1)明确项目边界2)对项目执行工作进行监控3)防止项目范围发生蔓延2、项目的范围基准是经过批准的项目范围说明书、WBS和WBS字典。判断项目是否完成要以范

    2022年8月2日
    4
  • javascript refresh page 几种页面刷新的方法[通俗易懂]

    javascript refresh page 几种页面刷新的方法[通俗易懂]javascriptrefreshpage几种页面刷新的方法下面以三个页面分别命名为frame.html、top.html、bottom.html为例来具体说明如何做。frame.html由上(top.html)下(bottom.html)两个页面组成,代码如下:复制代码 代码如下:  frame       

    2022年7月18日
    14
  • 说明电磁型继电器的工作原理_永磁继电器工作原理

    说明电磁型继电器的工作原理_永磁继电器工作原理原文地址点击这里:电磁继电器(electromagneticrelay)是一种电子控制器件,它具有控制系统(输入回路)和被控制系统(输出回路),通常应用于自动控制电路中,它是用较小的电流、较低的电

    2022年8月1日
    4
  • Java基础(冒泡排序)[通俗易懂]

    Java基础(冒泡排序)[通俗易懂]一.冒泡排序简介比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。动…

    2022年6月22日
    23
  • Linux下对MySql数据库备份与恢复

    Linux下对MySql数据库备份与恢复MySQL命令行导入数据库:1,将要导入的.sql文件移至bin文件下,这样的路径比较方便2,同上面导出的第1步3,进入MySQL:mysql-u用户名-p如我输入的命令行:mysql-uroot-p (输入同样后会让你输入MySQL的密码)4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库5,输入:mysq

    2022年5月5日
    113
  • rpc是什么?php中流行的rpc框架有哪些?

    rpc是什么?php中流行的rpc框架有哪些?

    2022年2月15日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号