快來學(xué)習(xí)怎么可視化監(jiān)控你的爬蟲

      網(wǎng)友投稿 853 2025-04-01

      大家好,我是四毛.

      今天主要是來說一下怎么可視化來監(jiān)控你的爬蟲的狀態(tài)。

      相信大家在跑爬蟲的過程中,也會好奇自己養(yǎng)的爬蟲一分鐘可以爬多少頁面,多大的數(shù)據(jù)量,當(dāng)然查詢的方式多種多樣。今天我來講一種可視化的方法。

      關(guān)于爬蟲數(shù)據(jù)在mongodb里的版本我寫了一個可以熱更新配置的版本,即添加了新的爬蟲配置以后,不用重啟程序,即可獲取剛剛添加的爬蟲的狀態(tài)數(shù)據(jù).

      1.成品圖

      這個是監(jiān)控服務(wù)器網(wǎng)速的最后成果,顯示的是下載與上傳的網(wǎng)速,單位為M。爬蟲的原理都是一樣的,只不過將數(shù)據(jù)存到InfluxDB的方式不一樣而已, 如下圖。

      可以實現(xiàn)對爬蟲數(shù)量,增量,大小,大小增量的實時監(jiān)控。

      2. 環(huán)境

      InfluxDb,是目前比較流行的時間序列數(shù)據(jù)庫;

      Grafana,一個可視化面板(Dashboard),有著非常漂亮的圖表和布局展示,功能齊全的度量儀表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、prometheus和OpenTSDB作為數(shù)據(jù)源

      Ubuntu

      influxdb(pip install influxdb)

      Python?2.7

      3. 原理

      獲取要展示的數(shù)據(jù),包含當(dāng)前的時間數(shù)據(jù),存到InfluxDb里面,然后再到Grafana里面進行相應(yīng)的配置即可展示;

      4. 安裝

      4.1 Grafana安裝

      官方安裝指導(dǎo)

      安裝好以后,打開本地的3000端口,即可進入管理界面,用戶名與密碼都是admin。

      4.2 InfulxDb安裝

      這個安裝就網(wǎng)上自己找吧,有很多的配置我都沒有配置,就不在這里誤人子弟了。

      5. InfluxDb簡單操作

      碰到了數(shù)據(jù)庫,肯定要把增刪改查學(xué)會了啊, 和sql幾乎一樣,只有一絲絲的區(qū)別,具體操作,大家可以參考官方的文檔。

      influx?進入命令行

      CREATE DATABASE test?創(chuàng)建數(shù)據(jù)庫

      show databases?查看數(shù)據(jù)庫

      use test?使用數(shù)據(jù)庫

      show series?看表

      select * from table_test?選擇數(shù)據(jù)

      DROP MEASUREMENT table_test?刪表

      6. 存數(shù)據(jù)

      InfluxDb數(shù)據(jù)庫的數(shù)據(jù)有一定的格式,因為我都是利用python庫進行相關(guān)操作,所以下面將在python中的格式展示一下:

      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 ? ????????} ????} ]

      其中:

      measurement, 表名

      time,時間

      tags,標(biāo)簽

      fields,字段

      可以看到,就是個列表里面,嵌套了一個字典。其中,對于時間字段,有特殊要求,可以參考這里, 下面是python實現(xiàn)方法:

      from?datetime?import?datetime ?current_time?=?datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')

      所以,到這里,如何將爬蟲的相關(guān)屬性存進去呢?以MongoDB為例

      mongodb_client?=?pymongo.MongoClient(uri) ????for?db_name,?collection_name?in?dbs_and_cos.iteritems(): ????????#?數(shù)據(jù)庫操作 ????????db?=?mongodb_client[db_name] ????????co?=?db[collection_name] ????????#?集合大小 ????????co_size?=?round(float(db.command("collstats",?collection_name).get('size'))?/?1024?/?1024,?2) ????????#?集合內(nèi)數(shù)據(jù)條數(shù) ????????current_count?=?co.count() ? ????????#?初始化,當(dāng)程序剛執(zhí)行時,初始量就設(shè)置為第一次執(zhí)行時獲取的數(shù)據(jù) ????????init_count?=?_count_dict.get(collection_name,?current_count) ????????#?初始化,當(dāng)程序剛執(zhí)行時,初始量就設(shè)置為第一次執(zhí)行時獲取的數(shù)據(jù)大小 ????????init_size?=?_size_dict.get(collection_name,?co_size) ? ????????#?條數(shù)增長量 ????????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)

      那么現(xiàn)在我們已經(jīng)往數(shù)據(jù)里存了數(shù)據(jù)了,那么接下來要做的就是把存的數(shù)據(jù)展示出來。

      快來學(xué)習(xí)怎么可視化監(jiān)控你的爬蟲

      7.展示數(shù)據(jù)

      7.1 配置數(shù)據(jù)源

      以admin登錄到Grafana的后臺后,我們首先需要配置一下數(shù)據(jù)源。點擊左邊欄的最下面的按鈕,然后點擊DATA SOURCES,這樣就可以進入下面的頁面:

      點擊ADD DATA SOURCE,進行配置即可,如下圖:

      其中,name自行設(shè)定;Type 選擇InfluxDB;url為默認(rèn)的http://localhost:8086, 其他的因為我前面沒有進行配置,所以默認(rèn)的即可。然后在InfluxDB Details里的填入Database名,最后點擊測試,如果沒有報錯的話,則可以進入下一步的展示數(shù)據(jù)了;

      7.2 展示數(shù)據(jù)

      點擊左邊欄的+號,然后點擊GRAPH

      接著點擊下圖中的edit進入編輯頁面:

      從上圖中可以發(fā)現(xiàn):

      中間板塊是最后的數(shù)據(jù)展示

      下面是數(shù)據(jù)的設(shè)置項

      右上角是展示時間的設(shè)置板塊,在這里可以選擇要展示多久的數(shù)據(jù)

      在Data Source中選擇剛剛在配置數(shù)據(jù)源的時候配置的NAME字段,而不是database名。

      接著在下面選擇要展示的數(shù)據(jù)。看著就很熟悉是不是,完全是sql語句的可視化。同時,當(dāng)我們的數(shù)據(jù)放到相關(guān)的字段上的時候,雙擊,就會把可以選擇的項展示出來了,我們要做的就是直接選擇即可;

      設(shè)置右上角的時間,則可以讓數(shù)據(jù)實時進行更新與展示

      因為下面的配置實質(zhì)就是sql查詢語句,所以大家按照自己的需求,進行選擇配置即可,當(dāng)配置完以后,就可以在中間的面板里面看到數(shù)據(jù)了。

      8. 總結(jié)

      到這里,本篇文章就結(jié)束了。其中,對于Grafana的操作我沒有介紹的很詳細(xì),因為本篇主要講的是怎么利用這幾個工具完成我們的任務(wù)。

      同時,里面的功能確實很多,還有可以安裝的插件。我自己目前還是僅僅對于用到的部分比較了解,所以大家可以查詢官方的或者別的教程資料來對Grafana進行更深入的了解,制作出更加好看的可視化作品來。

      數(shù)據(jù)可視化 python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:表格下拉排序問題(表格下拉順序排列)
      下一篇:如何給篩選后的內(nèi)容批量粘貼添加新的數(shù)據(jù)(新數(shù)據(jù)粘貼到篩選后的單元格)
      相關(guān)文章
      国产亚洲一卡2卡3卡4卡新区 | 久久亚洲AV永久无码精品| 亚洲国产精品无码专区影院| 亚洲成av人片天堂网老年人| 中文有码亚洲制服av片| 亚洲AV日韩AV高潮无码专区| 亚洲熟女少妇一区二区| 久久青青草原亚洲av无码| 国产91精品一区二区麻豆亚洲| 亚洲另类激情专区小说图片| 亚洲AV无码片一区二区三区| 亚洲日产乱码一二三区别| 久久亚洲精品国产亚洲老地址 | 国产亚洲成在线播放va| 最新亚洲人成网站在线观看| 色婷婷亚洲一区二区三区| 国产亚洲欧美日韩亚洲中文色| 亚洲精品成a人在线观看夫| 亚洲精品无码久久| 亚洲AⅤ男人的天堂在线观看| 亚洲aⅴ天堂av天堂无码麻豆| 一本久久综合亚洲鲁鲁五月天| 国产亚洲Av综合人人澡精品| 久久水蜜桃亚洲AV无码精品| 精品亚洲国产成人av| 亚洲成av人片在线观看天堂无码| 亚洲成av人片在线观看天堂无码| 久久精品国产精品亚洲人人| 亚洲综合日韩久久成人AV| 国产亚洲综合久久系列| 久久亚洲AV午夜福利精品一区| 亚洲男人都懂得羞羞网站| 亚洲第一页中文字幕| 亚洲伦理中文字幕| 亚洲AV永久无码精品放毛片| 免费观看亚洲人成网站| 国产偷窥女洗浴在线观看亚洲| 亚洲区小说区激情区图片区| 亚洲国产成人私人影院| 亚洲国产成人精品无码区在线秒播 | 亚洲国产精品无码久久久久久曰|