Python实现数据可视化看如何监控你的爬虫状态【推荐】


Posted in Python onAugust 10, 2018

今天主要是来说一下怎么可视化来监控你的爬虫的状态。

相信大家在跑爬虫的过程中,也会好奇自己养的爬虫一分钟可以爬多少页面,多大的数据量,当然查询的方式多种多样。今天我来讲一种可视化的方法。

关于爬虫数据在mongodb里的版本我写了一个可以热更新配置的版本,即添加了新的爬虫配置以后,不用重启程序,即可获取刚刚添加的爬虫的状态数据。

1.成品图

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

这个是监控服务器网速的最后成果,显示的是下载与上传的网速,单位为M。爬虫的原理都是一样的,只不过将数据存到InfluxDB的方式不一样而已, 如下图。

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

可以实现对爬虫数量,增量,大小,大小增量的实时监控。

2. 环境

  • InfluxDb ,是目前比较流行的时间序列数据库;
  • Grafana ,一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源
  • Ubuntu
  • influxdb (pip install influxdb)
  • Python 2.7

3. 原理

获取要展示的数据,包含当前的时间数据,存到InfluxDb里面,然后再到Grafana里面进行相应的配置即可展示;

4. 安装

4.1 Grafana安装

官方安装指导

安装好以后,打开本地的3000端口,即可进入管理界面,用户名与密码都是 admin 。

4.2 InfulxDb安装

这个安装就网上自己找吧,有很多的配置我都没有配置,就不在这里误人子弟了。

5. InfluxDb简单操作

碰到了数据库,肯定要把增删改查学会了啊, 和sql几乎一样,只有一丝丝的区别,具体操作,大家可以参考官方的文档。

  • influx 进入命令行
  • CREATE DATABASE test 创建数据库
  • show databases 查看数据库
  • use test 使用数据库
  • show series 看表
  • select * from table_test 选择数据
  • DROP MEASUREMENT table_test 删表

6. 存数据

InfluxDb数据库的数据有一定的格式,因为我都是利用python库进行相关操作,所以下面将在python中的格式展示一下:

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

其中:

  • measurement, 表名
  • time,时间
  • tags,标签
  • fields,字段

可以看到,就是个列表里面,嵌套了一个字典。其中,对于时间字段,有特殊要求,可以参考这里, 下面是python实现方法:

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

所以,到这里,如何将爬虫的相关属性存进去呢?以MongoDB为例

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

那么现在我们已经往数据里存了数据了,那么接下来要做的就是把存的数据展示出来。

7.展示数据

7.1 配置数据源

以admin登录到Grafana的后台后,我们首先需要配置一下数据源。点击左边栏的最下面的按钮,然后点击DATA SOURCES,这样就可以进入下面的页面:

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

点击ADD DATA SOURCE,进行配置即可,如下图:

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

其中,name自行设定;Type 选择InfluxDB;url为默认的http://localhost:8086, 其他的因为我前面没有进行配置,所以默认的即可。然后在InfluxDB Details里的填入Database名,最后点击测试,如果没有报错的话,则可以进入下一步的展示数据了;

7.2 展示数据

点击左边栏的+号,然后点击GRAPH

Python实现数据可视化看如何监控你的爬虫状态【推荐】 

接着点击下图中的edit进入编辑页面:

Python实现数据可视化看如何监控你的爬虫状态【推荐】

Python实现数据可视化看如何监控你的爬虫状态【推荐】

从上图中可以发现:

中间板块是最后的数据展示
下面是数据的设置项
右上角是展示时间的设置板块,在这里可以选择要展示多久的数据

7.2.1 配置数据

在Data Source中选择刚刚在配置数据源的时候配置的NAME字段,而不是database名。
接着在下面选择要展示的数据。看着就很熟悉是不是,完全是sql语句的可视化。同时,当我们的数据放到相关的字段上的时候,双击,就会把可以选择的项展示出来了,我们要做的就是直接选择即可;
设置右上角的时间,则可以让数据实时进行更新与展示
因为下面的配置实质就是sql查询语句,所以大家按照自己的需求,进行选择配置即可,当配置完以后,就可以在中间的面板里面看到数据了。

8. 总结

到这里,本篇文章就结束了。其中,对于Grafana的操作我没有介绍的很详细,因为本篇主要讲的是怎么利用这几个工具完成我们的任务。

同时,里面的功能确实很多,还有可以安装的插件。我自己目前还是仅仅对于用到的部分比较了解,所以大家可以查询官方的或者别的教程资料来对Grafana进行更深入的了解,制作出更加好看的可视化作品来。

文末知识点摘要①:sql中dateiff函数的用法

DATEDIFF

返回跨两个指定日期的日期和时间边界数。

一、 语法

DATEDIFF ( datepart , startdate , enddate )

二、参数

datepart

是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server? 识别的日期部分和缩写。

日期部分 缩写

year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate

是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

如 果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后 两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

enddate

是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

三、返回类型

integer

四、用法

此函数计算两个指定日期之间日期部分的数目。结果为日期部分中等于(date2 - date1)的有符号的整数值。

当结果不是日期部分的偶数倍时,DATEDIFF 将被截断而不是被舍入。

当使用 day 作为日期部分时,DATEDIFF 返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。

当使用 month 作为日期部分时,DATEDIFF 返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。

当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。

对于更小的时间单位存在溢出值:

milliseconds 24 天

seconds 68 年

minutes 4083 年

others 没有溢出限制

如果超出这些限制,此函数将返回溢出错误。

五、标准和兼容性

SQL/92 Transact-SQL 扩展。
SQL/99 Transact-SQL 扩展。

Sybase 与 Adaptive Server Enterprise 兼容。

六、示例

下面的语句返回 1 :

select datediff( hour, ''4:00am'', ''5:50am'' )

下面的语句返回 102 :

select datediff( month, ''1987/05/02'', ''1995/11/15'' )

下面的语句返回 0 :

select datediff( day, ''00:00'', ''23:59'' )

下面的语句返回 4 :

select datediff( day, ''1999/07/19 00:00'',''1999/07/23 23:59'' )

下面的语句返回 0 :

select datediff( month, ''1999/07/19'', ''1999/07/23'' )

下面的语句返回 1 :

select datediff( month, ''1999/07/19'', ''1999/08/23'' ) 

总结

以上所述是小编给大家介绍的Python实现数据可视化看如何监控你的爬虫状态,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python解析xml模块封装代码
Feb 07 Python
Python中__new__与__init__方法的区别详解
May 04 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
python实现简易内存监控
Jun 21 Python
python中的&&及||的实现示例
Aug 07 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
Python Numpy之linspace用法说明
Apr 17 Python
Python中json.dumps()函数的使用解析
May 17 Python
PyTorch梯度裁剪避免训练loss nan的操作
May 24 Python
利用Python实时获取steam特惠游戏数据
Jun 25 Python
Selenium元素的常用操作方法分析
Aug 10 #Python
Selenium定位元素操作示例
Aug 10 #Python
判断python字典中key是否存在的两种方法
Aug 10 #Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 #Python
Selenium(Python web测试工具)基本用法详解
Aug 10 #Python
Python生成器generator用法示例
Aug 10 #Python
python 字典修改键(key)的几种方法
Aug 10 #Python
You might like
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
jQuery 表格插件整理
2010/04/27 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python 中split 和 strip的实例详解
2017/07/12 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
Python 中Operator模块的使用
2021/01/30 Python
受欢迎的大学生自我评价
2013/12/05 职场文书
质检员岗位职责
2013/12/17 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
法人授权委托书格式
2014/04/08 职场文书
消防志愿者活动方案
2014/08/23 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
结婚主持人致辞
2015/07/28 职场文书
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers