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 相关文章推荐
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python 模块EasyGui详细介绍
Feb 19 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
Python 实现try重新执行
Dec 21 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
Python3批量创建Crowd用户并分配组
May 20 Python
Django数据库迁移常见使用方法
Nov 12 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 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+mysql留言本源码
2009/11/11 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
js的写法基础分析
2011/01/17 Javascript
对比分析json及XML
2014/11/28 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
python映射列表实例分析
2015/01/26 Python
Python中random模块用法实例分析
2015/05/19 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python实现微信自动回复机器人功能
2019/07/11 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
教师岗位职责
2013/11/17 职场文书
医院检讨书范文
2014/02/01 职场文书
五一手机促销方案
2014/03/08 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL