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 第一步 hello world
Sep 25 Python
Python 基础教程之包和类的用法
Feb 23 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
TensorFlow变量管理详解
Mar 10 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
django框架ModelForm组件用法详解
Dec 11 Python
Python函数基本使用原理详解
Mar 19 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
php木马webshell扫描器代码
2012/01/25 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
浅谈PHP的反射机制
2016/12/15 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
python合并同类型excel表格的方法
2018/04/01 Python
python中字符串的操作方法大全
2018/06/03 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
2014年路政工作总结
2014/12/10 职场文书
任命书标准格式
2015/03/02 职场文书
Redis实现短信验证码登录的示例代码
2022/06/14 Redis