好了,开始今天的文章吧。今天主要讲一下如何可视化你的爬虫状态。相信在跑爬虫的过程中,你也会很好奇你的爬虫一分钟能爬多少页,爬多少数据。当然,查询的方式多种多样。今天我要说的是一种可视化的方法。关于mongodb中爬虫数据的版本,我写了一个可以热更新配置的版本,即添加新的爬虫配置后,不需要重启程序就可以获取新添加的爬虫的状态数据。1.成品图这是最新监控服务器网速的结果。显示下载和上传的网速,单位为M。爬虫的原理是一样的,只是在InfluxDB中存储数据的方式不同,如下图所示。可实现对爬虫数量、增量、大小、大小增量的实时监控。2.环境InfluxDb是目前流行的时序数据库;Grafana,一个可视化面板(Dashboard),有非常漂亮的图表和布局展示,全功能的测量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源Ubuntuinfluxdb(pipinstallinfluxdb)蟒蛇2.73。原理获取需要展示的数据,包括当前时间数据,保存在InfluxDb中,然后到Grafana中进行相应配置展示;4、安装4.1Grafana安装官方安装指南安装完成后,打开本地3000端口,进入管理界面。用户名和密码都是admin。4.2InfulxDb安装这个安装可以在网上找到。还有很多配置我没有配置,这里就不误导大家了。5、InfluxDb的简单操作遇到数据库,必须要学会增删改查。它与SQL几乎相同,只有细微差别。具体操作可以参考官方文档。influx输入命令行CREATEDATABASEtestcreatedatabaseshowdatabasesviewdatabaseusetestusedatabaseshowseriesviewtableselect*fromtable_testselectdataDROPMEASUREMENTtable_testdeletetable6.保存数据InfluxDb数据库数据有一定的格式,因为我用的是python库进行相关操作,所以python中的格式会如下所示:其中:measurement,表名时间,时间标签,标签字段,可以看到字段,是一个列表,里面嵌套了一个字典。其中,对时间字段有特殊要求,可以参考这里,下面是python实现方法:那么,这里,如何存储爬虫的相关属性呢?以MongoDB为例,既然我们已经在数据中存储了数据,接下来要做的就是将存储的数据显示出来。7.显示数据7.1配置数据源以admin身份登录Grafana后台后,我们首先需要配置数据源。点击左侧栏最下方的按钮,然后点击DATASOURCES,即可进入如下页面:点击ADDDATASOURCE进行配置,如下图:其中,名称自行设置;类型是InfluxDB;url是默认的http://localhost:8086,其他的因为我之前没有配置过,所以默认就可以了。然后在InfluxDBDetails中填写Databasename,点击Test,如果没有报错,就可以进入下一步显示数据;7.2显示数据点击左边栏的+号,再点击GRAPH,再点击下图Edit,进入编辑页面:从上图我们可以发现:中间部分是***数据展示,如下是数据设置项,右上角是显示时间设置部分,这里可以选择显示数据的时长7.2.1Configuration在DataSource中,选择刚才配置数据源时配置的NAME字段,而不是数据库名称。然后选择要在下方显示的数据。看起来很熟悉,不是吗?完全是SQL语句的可视化。同时,当我们的数据放在相关字段上时,双击会显示可选择项,我们只需要直接选择即可;在右上角设置时间,可以对数据进行实时更新和展示因为下面的配置本质上是一个sql查询语句,所以大家可以根据自己的需要进行选择和配置。配置完成后,可以在中间面板看到数据。8.总结到这里,本文到此结束。其中,我没有详细介绍Grafana的操作,因为这篇文章主要讲的是如何使用这些工具来完成我们的任务。同时,里面的功能也确实很多,还有可以安装的插件。我还是只熟悉使用到的部分,大家可以查看官方或其他教程资料,对Grafana有更深入的了解,创作出更漂亮的可视化作品。文末知识点总结①:SQL中dateiff函数的用法DATEDIFF返回跨越两个指定日期的日期时间边界的个数。1.语法DATEDIFF(datepart,startdate,enddate)2.参数datepart是指定应该计算日期的哪一部分差异的参数。下表列出了Microsoft?SQLServer?识别的日期部分和缩写。日期部分缩写yearyy,yyyyquarterqq,qMonthmm,mdayofyeardy,yDaydd,dWeekwk,wwHourhhminutemi,nsecondss,smillisecondmsstartdate为计算的起始日期。startdate是一个返回日期时间或小日期时间值或日期格式字符串的表达式。因为smalldatetime只精确到分钟,所以使用smalldatetime值时秒和毫秒总是0。如果仅指定年份的最后两位数字,则最后两位数字小于或等于“两位数年份截止”配置选项的值的世纪与截止年份相同。大于此选项值的***两位数的世纪是截止年份世纪之前的世纪。例如,如果两位数年份截止值为2049(默认值),则49将解释为2049,将2050解释为1950。为避免歧义,请使用四位数年份。enddate是计算的结束日期。enddate是一个返回日期时间或小日期时间值或日期格式字符串的表达式。3.返回类型整数4.用法此函数计算两个指定日期之间的日期部分数。结果是日期部分中等于(date2-date1)的有符号整数值。当结果不是日期部分的偶数倍时,DATEDIFF将被截断而不是四舍五入。当使用日作为日期部分时,DATEDIFF返回两个指定时间(包括第二个日期但不包括第一个日期)之间的午夜数。当使用月份作为日期部分时,DATEDIFF返回两个日期(包括第二个日期但不包括第一个日期)之间出现的月份的第一天的数字。当使用星期作为日期部分时,DATEDIFF返回两个日期(包括第二个但不包括第一个)之间的星期日数。更小的时间单位有溢出值:毫秒24天秒68年分4083年others没有溢出限制如果超过这些限制,这个函数将返回一个溢出错误。五、标准和兼容性SQL/92Transact-SQL扩展。SQL/99Transact-SQL扩展。Sybase与AdaptiveServerEnterprise兼容。6.示例下面的语句返回1:selectdatediff(hour,''4:00am'',''5:50am'')下面的语句返回102:selectdatediff(month,''1987/05/02'',''1995/11/15'')以下语句返回0:selectdatediff(day,''00:00'',''23:59'')以下语句返回4:selectdatediff(day,''1999/07/1900:00'',''1999/07/2323:59'')下面的语句返回0:下面的selectdatediff(month,''1999/07/19'',''1999/07/23'')语句返回1:selectdatediff(month,''1999/07/19'',''1999/08/23'')
