Python实现数据可视化看如何监控你的爬虫状态【推荐】
作者:mrr 发布时间:2022-07-15 11:50:43
今天主要是来说一下怎么可视化来监控你的爬虫的状态。
相信大家在跑爬虫的过程中,也会好奇自己养的爬虫一分钟可以爬多少页面,多大的数据量,当然查询的方式多种多样。今天我来讲一种可视化的方法。
关于爬虫数据在mongodb里的版本我写了一个可以热更新配置的版本,即添加了新的爬虫配置以后,不用重启程序,即可获取刚刚添加的爬虫的状态数据。
1.成品图
这个是监控服务器网速的最后成果,显示的是下载与上传的网速,单位为M。爬虫的原理都是一样的,只不过将数据存到InfluxDB的方式不一样而已, 如下图。
可以实现对爬虫数量,增量,大小,大小增量的实时监控。
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中的格式展示一下:
其中:
measurement, 表名
time,时间
tags,标签
fields,字段
可以看到,就是个列表里面,嵌套了一个字典。其中,对于时间字段,有特殊要求,可以参考这里, 下面是python实现方法:
所以,到这里,如何将爬虫的相关属性存进去呢?以MongoDB为例
那么现在我们已经往数据里存了数据了,那么接下来要做的就是把存的数据展示出来。
7.展示数据
7.1 配置数据源
以admin登录到Grafana的后台后,我们首先需要配置一下数据源。点击左边栏的最下面的按钮,然后点击DATA SOURCES,这样就可以进入下面的页面:
点击ADD DATA SOURCE,进行配置即可,如下图:
其中,name自行设定;Type 选择InfluxDB;url为默认的http://localhost:8086, 其他的因为我前面没有进行配置,所以默认的即可。然后在InfluxDB Details里的填入Database名,最后点击测试,如果没有报错的话,则可以进入下一步的展示数据了;
7.2 展示数据
点击左边栏的+号,然后点击GRAPH
接着点击下图中的edit进入编辑页面:
从上图中可以发现:
中间板块是最后的数据展示
下面是数据的设置项
右上角是展示时间的设置板块,在这里可以选择要展示多久的数据
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实现数据可视化看如何监控你的爬虫状态网站的支持!
来源:http://developer.51cto.com/art/201808/581043.htm


猜你喜欢
- isnull()Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 (&q
- Python获取当前时间_获取格式化时间:Python获取当前时间:使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点
- 假设访问的views.py如下1.使用url配置默认页from django.conf.urls import urlfrom django
- 本文使用的是最新的FCKeditor 2.3.1版本 官方网站下载: http://ckeditor.com/download[建议直接在官
- 1、 前端传参要求项目开发中经常会遇到对用户输入内容的限制,本篇对常用限制做一总结。如下图所示,标识字段有严格命名限制,用户输入校验这部分工
- 前面章节我们介绍了如何选择优化的数据类型、如何高效的使用索引,这些对于高性能的MySQL来说是必不可少的。 但这些还完全不够,还需要合理的设
- 机器学习分两大类,有监督学习(supervised learning)和无监督学习(unsupervised learning)。有监督学习
- 本教程为大家分享了Fly Bird小游戏的制作流程,供大家参考,具体内容如下1.分析页面结构,理清需求和功能游戏有三个界面,分别是开始界面,
- 最近在写测试平台,需要实现一个节点服务器的api,正好在用django,准备使用djangorestframework插件实现。需求实现一个
- 在任何语言中,都会规定某些对象(属性、方法、函数、类等)只能够在某个范围内访问,出了这个范围就不能访问了。这是“公”、“私”之分。此外,还会
- python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。d
- 1. 确认已经安装了NT/2000和SQL Server的最新补丁程序,不用说大家应该已经安装好了,但是我觉得最好还是在这里提醒一
- 目前搜索到的方法有:np.where(‘元素')还有就是pandas的方法:df.index(‘元素')但是第二个方法的问题
- 路由路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求。路由是由一个 URI、HTTP 请求(GET、POST等)和若干个句柄组
- 本文实例讲述了JavaScript常用的返回,自动跳转,刷新,关闭语句。分享给大家供大家参考。具体如下:1. Javascript 返回上一
- 1、创建数组 var array = new Array(); var array = new Array(size);//指定数组的长度
- ISNULL 使用指定的替换值替换 NULL。 &nb
- 在神经网络训练中,好的权重 初始化会加速训练过程。下面说一下kernel_initializer 权重初始化的方法。不同的层可能使用不同的关
- 俺觉得自 己试着写写sql,调试调试还是有帮助的,读人家sql例子好像读懂了,自己写就未 必思路正确,调试得通,写得简洁。 这篇文字在网上被
- 正则表达式,就是用某种模式去匹配一类字符串的一个公式,正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括