其实能够利用scrapy的扩展展现更多的数据,立个flag,后面更新上来python
好,开始今天的文章。git
今天主要是来讲一下怎么可视化来监控你的爬虫的状态。github
相信你们在跑爬虫的过程当中,也会好奇本身养的爬虫一分钟能够爬多少页面,多大的数据量,固然查询的方式多种多样。今天我来说一种可视化的方法。sql
这个是监控服务器网速的最后成果,显示的是下载与上传的网速,单位为M。爬虫的原理都是同样的,只不过将数据存到InfluxDB的方式不同而已, 以下图。mongodb
能够实现对爬虫数量,增量,大小,大小增量的实时监控。数据库
获取要展现的数据,包含当前的时间数据,存到InfluxDb里面,而后再到Grafana里面进行相应的配置便可展现;json
官方安装指导服务器
安装好之后,打开本地的3000端口,便可进入管理界面,用户名与密码都是admin。app
这个安装就网上本身找吧,有不少的配置我都没有配置,就不在这里误人子弟了。scrapy
碰到了数据库,确定要把增删改查学会了啊, 和sql几乎同样,只有一丝丝的区别,具体操做,你们能够参考官方的文档。
InfluxDb数据库的数据有必定的格式,由于我都是利用python库进行相关操做,因此下面将在python中的格式展现一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
json_body = [
{
"measurement": "crawler",
"time": current_time,
"tags": {
"spider_name": collection_name
},
"fields": {
"count": current_count,
"increase_count": increase_amount,
"size": co_size,
"increase_size": increase_co_size
}
}
]
|
其中:
能够看到,就是个列表里面,嵌套了一个字典。其中,对于时间字段,有特殊要求,能够参考这里, 下面是python实现方法:
1
2
|
from datetime import datetime
current_time = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
|
因此,到这里,如何将爬虫的相关属性存进去呢?以MongoDB为例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
mongodb_client = pymongo.MongoClient(uri)
for db_name, collection_name in dbs_and_cos.iteritems():
# 数据库操做
db = mongodb_client[db_name]
co = db[collection_name]
# 集合大小
co_size = round(float(db.command("collstats", collection_name).get('size')) / 1024 / 1024, 2)
# 集合内数据条数
current_count = co.count()
# 初始化,当程序刚执行时,初始量就设置为第一次执行时获取的数据
init_count = _count_dict.get(collection_name, current_count)
# 初始化,当程序刚执行时,初始量就设置为第一次执行时获取的数据大小
init_size = _size_dict.get(collection_name, co_size)
# 条数增加量
increase_amount = current_count - init_count
# 集合大小增加量
increase_co_size = co_size - init_size
current_time = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
# 赋值
_size_dict[collection_name] = co_size
_count_dict[collection_name] = current_count
json_body = [
{
"measurement": "crawler",
"time": current_time,
"tags": {
"spider_name": collection_name
},
"fields": {
"count": current_count,
"increase_count": increase_amount,
"size": co_size,
"increase_size": increase_co_size
}
}
]
print json_body
client.write_points(json_body)
|
完整代码,关注上面的公众号,发送“”可视化“”便可获取。
那么如今咱们已经往数据里存了数据了,那么接下来要作的就是把存的数据展现出来。
以admin登陆到Grafana的后台后,咱们首先须要配置一下数据源。点击左边栏的最下面的按钮,而后点击DATA SOURCES,这样就能够进入下面的页面:
点击ADD DATA SOURCE,进行配置便可,以下图:
其中,name自行设定;Type 选择InfluxDB;url为默认的http://localhost:8086, 其余的由于我前面没有进行配置,因此默认的便可。而后在InfluxDB Details里的填入Database名,最后点击测试,若是没有报错的话,则能够进入下一步的展现数据了;
点击左边栏的+号,而后点击GRAPH
接着点击下图中的edit进入编辑页面:
从上图中能够发现:
由于下面的配置实质就是sql查询语句,因此你们按照本身的需求,进行选择配置便可,当配置完之后,就能够在中间的面板里面看到数据了。
到这里,本篇文章就结束了。其中,对于Grafana的操做我没有介绍的很详细,由于本篇主要讲的是怎么利用这几个工具完成咱们的任务。
同时,里面的功能确实不少,还有能够安装的插件。我本身目前仍是仅仅对于用到的部分比较了解,因此你们能够查询官方的或者别的教程资料来对Grafana进行更深刻的了解,制做出更加好看的可视化做品来。
最后,关注公众号,回复“可视化” 便可获取本文代码哦