其實能夠利用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進行更深刻的瞭解,製做出更加好看的可視化做品來。
最後,關注公衆號,回覆「可視化」 便可獲取本文代碼哦