自動(dòng)采集編寫(xiě)
自動(dòng)采集編寫(xiě)(編程問(wèn)答:只要問(wèn)那邊站長(cháng)要就可以了再說(shuō)采集)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 123 次瀏覽 ? 2022-01-04 10:07
寫(xiě)個(gè)程序自動(dòng)采集VeryCD 標題,很多勵志,很好。來(lái)寫(xiě)個(gè)程序自動(dòng)采集VeryCD標題,很多勵志,很好---------- ----------編程問(wèn)答------- -------------其實(shí)問(wèn)問(wèn)那邊的站長(cháng)就知道了。
再說(shuō)了,采集這個(gè)也麻煩,過(guò)幾天換一個(gè),采集這種變化率很低的東西,不如去人力資源部采集- ----------- --------編程問(wèn)答--------------------up------ ------------- -編程問(wèn)答--------------------哈哈----------- ---------編程問(wèn)答--------------------up---------------- ----編程問(wèn)答----------- ---------幾分鐘換好幾個(gè)---------------- ----編程問(wèn)答------------ --------好吧,想一想,使用HttpWebRequest和HttpWebResponse進(jìn)行頁(yè)面請求和下載,使用常規規則取把之間的數據拿出來(lái),分析一下這個(gè)是不是最新的勵志詞,存入數據庫...
--------------------編程問(wèn)答 --------------------HttpWebRequest 和 HttpWebResponse
發(fā)帖
曲奇餅 查看全部
自動(dòng)采集編寫(xiě)(編程問(wèn)答:只要問(wèn)那邊站長(cháng)要就可以了再說(shuō)采集)
寫(xiě)個(gè)程序自動(dòng)采集VeryCD 標題,很多勵志,很好。來(lái)寫(xiě)個(gè)程序自動(dòng)采集VeryCD標題,很多勵志,很好---------- ----------編程問(wèn)答------- -------------其實(shí)問(wèn)問(wèn)那邊的站長(cháng)就知道了。
再說(shuō)了,采集這個(gè)也麻煩,過(guò)幾天換一個(gè),采集這種變化率很低的東西,不如去人力資源部采集- ----------- --------編程問(wèn)答--------------------up------ ------------- -編程問(wèn)答--------------------哈哈----------- ---------編程問(wèn)答--------------------up---------------- ----編程問(wèn)答----------- ---------幾分鐘換好幾個(gè)---------------- ----編程問(wèn)答------------ --------好吧,想一想,使用HttpWebRequest和HttpWebResponse進(jìn)行頁(yè)面請求和下載,使用常規規則取把之間的數據拿出來(lái),分析一下這個(gè)是不是最新的勵志詞,存入數據庫...
--------------------編程問(wèn)答 --------------------HttpWebRequest 和 HttpWebResponse
發(fā)帖
曲奇餅
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)+equery的方法,你知道嗎?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 120 次瀏覽 ? 2022-01-02 02:01
自動(dòng)采集編寫(xiě)爬蟲(chóng)本網(wǎng)站抓取速度慢,但是大家別灰心哈~我會(huì )繼續努力的,該爭取的還是要爭取,等你看到這篇文章時(shí),title已經(jīng)到了200多個(gè)圖片哦。你需要安裝phantomjs,varphantomjs=require('phantomjs');varhttp=require('http');varurl=http.urlopen();url.readystate=false;獲取圖片下載速度變慢,首先要觀(guān)察圖片列表頁(yè)的頁(yè)面源碼:[1,1,3,200,unkeymap][1,1,3,200,2]發(fā)現下載unkeymap的時(shí)候,下載了19個(gè)圖片,代碼暴露的信息越多,要下載的圖片越多,請求的時(shí)候請求數據也越多,使用phantomjs+equery的方式直接下載并沒(méi)有增加,看來(lái)是抓圖片需要加上http劫持。
來(lái)來(lái)來(lái),這里有一個(gè)phantomjs+equery的方法,現在我們來(lái)試試。equery.parse的結果如下:[1,1,3,19,2]表示我們的ajax請求的時(shí)候加上這個(gè)參數xh_xh_xh_yh_zh_jj_jj_jj_zh_jj_1,ok,下面是調試圖片下載代碼的時(shí)候的地址:[1,1,3,200,2][1,1,3,19,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,45,46,47,47,48,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,180,181,182,183,184,185,186,187,188,189,180,183,184,185,186,187,188,189,181,185,186,187,188,189,182,187,188,189,181,183,184,185。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)+equery的方法,你知道嗎?)
自動(dòng)采集編寫(xiě)爬蟲(chóng)本網(wǎng)站抓取速度慢,但是大家別灰心哈~我會(huì )繼續努力的,該爭取的還是要爭取,等你看到這篇文章時(shí),title已經(jīng)到了200多個(gè)圖片哦。你需要安裝phantomjs,varphantomjs=require('phantomjs');varhttp=require('http');varurl=http.urlopen();url.readystate=false;獲取圖片下載速度變慢,首先要觀(guān)察圖片列表頁(yè)的頁(yè)面源碼:[1,1,3,200,unkeymap][1,1,3,200,2]發(fā)現下載unkeymap的時(shí)候,下載了19個(gè)圖片,代碼暴露的信息越多,要下載的圖片越多,請求的時(shí)候請求數據也越多,使用phantomjs+equery的方式直接下載并沒(méi)有增加,看來(lái)是抓圖片需要加上http劫持。
來(lái)來(lái)來(lái),這里有一個(gè)phantomjs+equery的方法,現在我們來(lái)試試。equery.parse的結果如下:[1,1,3,19,2]表示我們的ajax請求的時(shí)候加上這個(gè)參數xh_xh_xh_yh_zh_jj_jj_jj_zh_jj_1,ok,下面是調試圖片下載代碼的時(shí)候的地址:[1,1,3,200,2][1,1,3,19,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,45,46,47,47,48,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,180,181,182,183,184,185,186,187,188,189,180,183,184,185,186,187,188,189,181,185,186,187,188,189,182,187,188,189,181,183,184,185。
自動(dòng)采集編寫(xiě)(蜂集采集器如何添加采集模塊?(圖)采集方法 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 469 次瀏覽 ? 2021-12-31 17:20
)
BeeJi采集 是一個(gè)全自動(dòng)的 wordpress采集 插件。如果你還沒(méi)有下載,可以到beeJi采集下載頁(yè)面下載。如果要采集,首先要添加采集模塊。本文將介紹如何在風(fēng)集采集器中添加采集模塊!
安裝風(fēng)記采集器后,后臺會(huì )新增一個(gè)名為“飛記”的菜單。依次進(jìn)入Bee Set->采集模塊,點(diǎn)擊“添加文章采集模塊”按鈕新建采集模塊。
需要設置一個(gè)完整的采集模塊:基本信息、列表規則、內容規則。
設置基本信息
基本信息由規則名稱(chēng)和網(wǎng)頁(yè)完整性檢查填寫(xiě),如下圖
規則的名稱(chēng)是必需的。這里我以采集騰訊新聞為例。規則名稱(chēng)中填寫(xiě)騰訊新聞采集。網(wǎng)頁(yè)完整性檢查是為了確保下載的網(wǎng)頁(yè)是完整的,避免采集失敗。一般不需要填寫(xiě),如果發(fā)現很多網(wǎng)頁(yè)在采集時(shí)沒(méi)有采集獲取到內容,那么就需要填寫(xiě)網(wǎng)頁(yè)完整性檢查或者一些標志性的文字在網(wǎng)頁(yè)的末尾。簡(jiǎn)單的說(shuō),一般不填寫(xiě),經(jīng)常出現網(wǎng)頁(yè)采集填寫(xiě)不完整
編輯列表規則
點(diǎn)擊列表規則進(jìn)入列表規則編輯欄。列表規則的作用是采集一些內容頁(yè)面的鏈接供我們跟進(jìn)采集。
以騰訊新聞為例,我們使用chrome打開(kāi)騰訊新聞首頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,打開(kāi)chrome開(kāi)發(fā)者工具(windows按F12或ctrl+shift+i,MAC按cmd+option+i),點(diǎn)擊開(kāi)發(fā)者工具左上角的小箭頭,然后放置鼠標如果要采集的鏈接,可以看到鏈接的區域和格式。
我們找到了列表頁(yè)中鏈接的特征,發(fā)現新聞鏈接都收錄和html。我們可以在URL收錄中寫(xiě)&&html,表示同時(shí)收錄和html。如果我們只需要采集的入口頁(yè)面地址,那么我們可以勾選停止列表獲取,這樣這個(gè)規則就不會(huì )對下一級網(wǎng)頁(yè)生效。在大多數情況下,您不需要填寫(xiě) URL 區域。一般來(lái)說(shuō),URL收錄/不收錄,標題收錄/不收錄足以覆蓋大多數場(chǎng)景。如果場(chǎng)景一定要填URL區,那么這里的URL區就是一個(gè)正則表達式。
最終效果如下圖,請按圖填寫(xiě)你的采集規則
接下來(lái)可以測試鏈接獲取是否正確。點(diǎn)擊爬蟲(chóng)測試,然后填寫(xiě)文章測試地址,在這里填寫(xiě),因為這是我們的入口頁(yè)面,所以級別為0(注意級別從0開(kāi)始,從0級頁(yè)面為1,從1級頁(yè)面得到的地址級為2,以此類(lèi)推...).
填寫(xiě)完成后,點(diǎn)擊爬蟲(chóng)測試,應該可以看到下面得到的鏈接和標題,如下圖。
編輯內容規則
我們最終都需要采集內容,所以?xún)热菀巹t與我們的內容采集有關(guān)。下圖中,內容規則左側為采集的字段名,默認覆蓋wordpress文章的基本信息字段,title為文章title,content為文章內容,Category為文章類(lèi)別,標簽為文章標簽,作者為文章作者。
采集標題:title
標題與h1匹配。系統已為您提供默認值。在大多數情況下,您不需要更改它,只需使用系統默認值即可。如下圖
如果網(wǎng)頁(yè)的標題不是h1,您可以通過(guò)多種方式來(lái)匹配您需要的內容。風(fēng)集支持三種方式:regular、xpath、fixed characters。
采集正文:內容
內容可以采用自動(dòng)獲取文本的方式,可以智能分析網(wǎng)頁(yè)中的文本,自動(dòng)獲取。馮基采集器已經(jīng)把這個(gè)選項默認設置為yes,如下圖:
一般情況下,大部分基于文本的網(wǎng)站都可以使用智能獲取來(lái)抓取文本。如果只能抓取,也可以使用正則,xpath。
如果此時(shí)使用的是regular或者xpath,那么Smart Get Text請選擇No,否則以下規則不會(huì )生效
同理,還需要設置category、tag、author,這里不再贅述。
測試采集
所有規則寫(xiě)好后,我們需要根據規則驗證采集器是否可以正確采集,進(jìn)入測試抓取標簽,填寫(xiě)鏈接和頁(yè)面級別,點(diǎn)擊抓取測試來(lái)查看效果,如下圖:
如果您對采集器的使用有任何疑問(wèn),可以到風(fēng)集的采集交流群(群號可在采集器的關(guān)于我們中找到)進(jìn)行交流。
您可能還喜歡以下內容文章
Bee Set采集器,一個(gè)全自動(dòng)的 wordpress采集插件
imwprobot (bee set) 是一個(gè) wordpress采集 插件。功能是什么? 1.全自動(dòng)無(wú)人值守,支持定時(shí)采集2.可自動(dòng)同步目標站更新3.AI自動(dòng)關(guān)鍵詞,自動(dòng)匯總生成4.@ > 直接發(fā)布到 wordpress,無(wú)需額外的界面支持。 5. 正文圖片和縮略圖可以本地化 6. 每個(gè)任務(wù) 文章 圖片可以設置獨立的水印 7. 采集 到達的內容支持常規和 css 選擇器替代品。 采集哪些站1.新聞資訊站2. 文章范文站< @3. BBS論壇4.@> 博客站5. 哪些資源站和下載站支持采集規則1.正則表達式2.XPath規則3.JQuery選擇器(CSS選擇器)代理支持1.HTTP代理2.Socks5代理哪些主機可以不受環(huán)境限制運行,虛擬主機可以運行蜜蜂設置功能
蜜蜂合集采集器視頻逐字草稿
歡迎來(lái)到蜜蜂套裝采集器,現在和大家分享蜜蜂套裝采集器的教程。接下來(lái)就可以開(kāi)始創(chuàng )建采集任務(wù)了。以lz13為例。添加任務(wù)名稱(chēng)并添加入口地址。入口頁(yè)間隔不需要更改,文本捕獲間隔不需要更改。選擇采集模塊,選擇發(fā)布模塊,選擇草稿,選擇要暫停的任務(wù),然后我們會(huì )選擇測試后自動(dòng)執行。
puretext 是一款純文本 wordpress cms主題,可支持數百萬(wàn)文章
經(jīng)過(guò)幾年的制作,純文字的cms風(fēng)格主題終于要和大家見(jiàn)面了。但是目前還沒(méi)有一個(gè)主題可以支持海量的文章,所以我只能自己做一個(gè)。輕松支持百萬(wàn)文章無(wú)卡,無(wú)論是前臺還是后臺。
Wordpress 小說(shuō)主題 imwpnovels
更強大的wordpress小說(shuō)主題imwpnovels讓創(chuàng )建小說(shuō)網(wǎng)站更容易!小說(shuō)閱讀頁(yè)面支持無(wú)限字體縮放、護眼模式、分頁(yè)模式、靜態(tài)緩存下刷新無(wú)閃爍,用戶(hù)體驗極佳。
蜜蜂套裝采集器快速入門(mén)
這篇文章文章可以幫助您快速入門(mén)“蜜蜂采集器”。如果你剛接觸采集器,我建議你仔細閱讀這篇文章。對你快速上手很有幫助采集器?,F在可以添加任務(wù)了,采集module和release module選擇我們剛剛創(chuàng )建的module,如下圖:
查看全部
自動(dòng)采集編寫(xiě)(蜂集采集器如何添加采集模塊?(圖)采集方法
)
BeeJi采集 是一個(gè)全自動(dòng)的 wordpress采集 插件。如果你還沒(méi)有下載,可以到beeJi采集下載頁(yè)面下載。如果要采集,首先要添加采集模塊。本文將介紹如何在風(fēng)集采集器中添加采集模塊!

安裝風(fēng)記采集器后,后臺會(huì )新增一個(gè)名為“飛記”的菜單。依次進(jìn)入Bee Set->采集模塊,點(diǎn)擊“添加文章采集模塊”按鈕新建采集模塊。
需要設置一個(gè)完整的采集模塊:基本信息、列表規則、內容規則。
設置基本信息
基本信息由規則名稱(chēng)和網(wǎng)頁(yè)完整性檢查填寫(xiě),如下圖
http://www.imwpweb.com/wp-cont ... 4.png 768w, http://www.imwpweb.com/wp-cont ... 9.png 1536w" />規則的名稱(chēng)是必需的。這里我以采集騰訊新聞為例。規則名稱(chēng)中填寫(xiě)騰訊新聞采集。網(wǎng)頁(yè)完整性檢查是為了確保下載的網(wǎng)頁(yè)是完整的,避免采集失敗。一般不需要填寫(xiě),如果發(fā)現很多網(wǎng)頁(yè)在采集時(shí)沒(méi)有采集獲取到內容,那么就需要填寫(xiě)網(wǎng)頁(yè)完整性檢查或者一些標志性的文字在網(wǎng)頁(yè)的末尾。簡(jiǎn)單的說(shuō),一般不填寫(xiě),經(jīng)常出現網(wǎng)頁(yè)采集填寫(xiě)不完整
編輯列表規則
點(diǎn)擊列表規則進(jìn)入列表規則編輯欄。列表規則的作用是采集一些內容頁(yè)面的鏈接供我們跟進(jìn)采集。
以騰訊新聞為例,我們使用chrome打開(kāi)騰訊新聞首頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,打開(kāi)chrome開(kāi)發(fā)者工具(windows按F12或ctrl+shift+i,MAC按cmd+option+i),點(diǎn)擊開(kāi)發(fā)者工具左上角的小箭頭,然后放置鼠標如果要采集的鏈接,可以看到鏈接的區域和格式。
http://www.imwpweb.com/wp-cont ... 7.png 768w, http://www.imwpweb.com/wp-cont ... 4.png 1536w, http://www.imwpweb.com/wp-cont ... 8.png 2048w" />我們找到了列表頁(yè)中鏈接的特征,發(fā)現新聞鏈接都收錄和html。我們可以在URL收錄中寫(xiě)&&html,表示同時(shí)收錄和html。如果我們只需要采集的入口頁(yè)面地址,那么我們可以勾選停止列表獲取,這樣這個(gè)規則就不會(huì )對下一級網(wǎng)頁(yè)生效。在大多數情況下,您不需要填寫(xiě) URL 區域。一般來(lái)說(shuō),URL收錄/不收錄,標題收錄/不收錄足以覆蓋大多數場(chǎng)景。如果場(chǎng)景一定要填URL區,那么這里的URL區就是一個(gè)正則表達式。
最終效果如下圖,請按圖填寫(xiě)你的采集規則
http://www.imwpweb.com/wp-cont ... 9.png 768w, http://www.imwpweb.com/wp-cont ... 8.png 1536w, http://www.imwpweb.com/wp-cont ... 4.png 2048w" />接下來(lái)可以測試鏈接獲取是否正確。點(diǎn)擊爬蟲(chóng)測試,然后填寫(xiě)文章測試地址,在這里填寫(xiě),因為這是我們的入口頁(yè)面,所以級別為0(注意級別從0開(kāi)始,從0級頁(yè)面為1,從1級頁(yè)面得到的地址級為2,以此類(lèi)推...).
填寫(xiě)完成后,點(diǎn)擊爬蟲(chóng)測試,應該可以看到下面得到的鏈接和標題,如下圖。
http://www.imwpweb.com/wp-cont ... 2.png 768w, http://www.imwpweb.com/wp-cont ... 4.png 1536w" />編輯內容規則
我們最終都需要采集內容,所以?xún)热菀巹t與我們的內容采集有關(guān)。下圖中,內容規則左側為采集的字段名,默認覆蓋wordpress文章的基本信息字段,title為文章title,content為文章內容,Category為文章類(lèi)別,標簽為文章標簽,作者為文章作者。
采集標題:title
標題與h1匹配。系統已為您提供默認值。在大多數情況下,您不需要更改它,只需使用系統默認值即可。如下圖
http://www.imwpweb.com/wp-cont ... 2.png 768w, http://www.imwpweb.com/wp-cont ... 4.png 1536w" />如果網(wǎng)頁(yè)的標題不是h1,您可以通過(guò)多種方式來(lái)匹配您需要的內容。風(fēng)集支持三種方式:regular、xpath、fixed characters。
采集正文:內容
內容可以采用自動(dòng)獲取文本的方式,可以智能分析網(wǎng)頁(yè)中的文本,自動(dòng)獲取。馮基采集器已經(jīng)把這個(gè)選項默認設置為yes,如下圖:
http://www.imwpweb.com/wp-cont ... 8.png 768w, http://www.imwpweb.com/wp-cont ... 6.png 1536w, http://www.imwpweb.com/wp-cont ... 1.png 2048w" />一般情況下,大部分基于文本的網(wǎng)站都可以使用智能獲取來(lái)抓取文本。如果只能抓取,也可以使用正則,xpath。
如果此時(shí)使用的是regular或者xpath,那么Smart Get Text請選擇No,否則以下規則不會(huì )生效
同理,還需要設置category、tag、author,這里不再贅述。
測試采集
所有規則寫(xiě)好后,我們需要根據規則驗證采集器是否可以正確采集,進(jìn)入測試抓取標簽,填寫(xiě)鏈接和頁(yè)面級別,點(diǎn)擊抓取測試來(lái)查看效果,如下圖:
http://www.imwpweb.com/wp-cont ... 8.png 768w, http://www.imwpweb.com/wp-cont ... 6.png 1536w, http://www.imwpweb.com/wp-cont ... 1.png 2048w" />如果您對采集器的使用有任何疑問(wèn),可以到風(fēng)集的采集交流群(群號可在采集器的關(guān)于我們中找到)進(jìn)行交流。
您可能還喜歡以下內容文章

Bee Set采集器,一個(gè)全自動(dòng)的 wordpress采集插件
imwprobot (bee set) 是一個(gè) wordpress采集 插件。功能是什么? 1.全自動(dòng)無(wú)人值守,支持定時(shí)采集2.可自動(dòng)同步目標站更新3.AI自動(dòng)關(guān)鍵詞,自動(dòng)匯總生成4.@ > 直接發(fā)布到 wordpress,無(wú)需額外的界面支持。 5. 正文圖片和縮略圖可以本地化 6. 每個(gè)任務(wù) 文章 圖片可以設置獨立的水印 7. 采集 到達的內容支持常規和 css 選擇器替代品。 采集哪些站1.新聞資訊站2. 文章范文站< @3. BBS論壇4.@> 博客站5. 哪些資源站和下載站支持采集規則1.正則表達式2.XPath規則3.JQuery選擇器(CSS選擇器)代理支持1.HTTP代理2.Socks5代理哪些主機可以不受環(huán)境限制運行,虛擬主機可以運行蜜蜂設置功能
蜜蜂合集采集器視頻逐字草稿
歡迎來(lái)到蜜蜂套裝采集器,現在和大家分享蜜蜂套裝采集器的教程。接下來(lái)就可以開(kāi)始創(chuàng )建采集任務(wù)了。以lz13為例。添加任務(wù)名稱(chēng)并添加入口地址。入口頁(yè)間隔不需要更改,文本捕獲間隔不需要更改。選擇采集模塊,選擇發(fā)布模塊,選擇草稿,選擇要暫停的任務(wù),然后我們會(huì )選擇測試后自動(dòng)執行。
puretext 是一款純文本 wordpress cms主題,可支持數百萬(wàn)文章
經(jīng)過(guò)幾年的制作,純文字的cms風(fēng)格主題終于要和大家見(jiàn)面了。但是目前還沒(méi)有一個(gè)主題可以支持海量的文章,所以我只能自己做一個(gè)。輕松支持百萬(wàn)文章無(wú)卡,無(wú)論是前臺還是后臺。

Wordpress 小說(shuō)主題 imwpnovels
更強大的wordpress小說(shuō)主題imwpnovels讓創(chuàng )建小說(shuō)網(wǎng)站更容易!小說(shuō)閱讀頁(yè)面支持無(wú)限字體縮放、護眼模式、分頁(yè)模式、靜態(tài)緩存下刷新無(wú)閃爍,用戶(hù)體驗極佳。
蜜蜂套裝采集器快速入門(mén)
這篇文章文章可以幫助您快速入門(mén)“蜜蜂采集器”。如果你剛接觸采集器,我建議你仔細閱讀這篇文章。對你快速上手很有幫助采集器?,F在可以添加任務(wù)了,采集module和release module選擇我們剛剛創(chuàng )建的module,如下圖:
自動(dòng)采集編寫(xiě)(actions文件夾自動(dòng)化測試框架一步)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 167 次瀏覽 ? 2021-12-30 16:18
這兩天用python2寫(xiě)了一個(gè)自動(dòng)化測試框架,名字叫Auty。它已準備好用于 Web 界面測試。下面是Auty框架的分步搭建過(guò)程——
首先感謝朱博大哥的指教、交流和幫助!
auty文件夾結構介紹
1. actions文件夾:收錄
業(yè)務(wù)相關(guān)的腳本文件,收錄
可復用的方法,可以根據不同的業(yè)務(wù)在actions文件夾下創(chuàng )建不同的業(yè)務(wù)文件夾;
2. 常量文件夾:收錄
常量初始化的python腳本文件。根據業(yè)務(wù)分工,可以創(chuàng )建子文件夾或多個(gè)常量文件;
3. 數據文件夾:收錄
用于測試的數據;
4. lib文件夾:收錄
支持框架運行的python文件;
5. 日志文件夾:收錄
運行測試過(guò)程中產(chǎn)生的日志文件;
6. results文件夾:收錄
測試結果文件;
7. 腳本文件夾:收錄
腳本文件夾和選擇文件夾;
1)scripts 文件夾收錄
測試腳本(可以根據業(yè)務(wù)分為多個(gè)子目錄);
2)selections 文件夾收錄
套件文件(包括需要執行的腳本路徑的集合);
8. utils文件夾:收錄
與業(yè)務(wù)邏輯無(wú)關(guān)的腳本文件,收錄
可復用的方法;
auty文件結構介紹
1. 在 Auty 文件夾下:
1)__init__.py 文件:包結構的必要文件(以下所有涉及可調用腳本的文件夾都需要該文件);
2)config.txt 文件:Auty 框架配置描述文件;
3)recovery.py 文件:垃圾代碼恢復文件(用于恢復由于測試執行過(guò)程中失敗而自動(dòng)刪除失敗的自動(dòng)生成代碼);
4)requirements 文件:收錄
框架需要安裝的python庫信息;
5)setup.py文件:執行腳本安裝需求文件中收錄
的python庫;
6)start.py 文件:執行腳本啟動(dòng)界面自動(dòng)化測試;
2. lib 文件夾:
1)exe_deco.py 文件:收錄
修改腳本運行時(shí)方法的文件;
2)execute_selection.py 文件:收錄
了suite集合下運行腳本方法的文件;
3)generate_html.py文件:收錄
根據生成的csv格式測試結果文件生成html類(lèi)型測試結果文件的方法的文件;
4)generate_result.py文件:收錄
生成csv格式測試結果方法的文件;
5)read_selection.py 文件:收錄
讀取可執行腳本列表的方法的文件;
6)recovery_code.py 文件:收錄
垃圾代碼恢復方法的文件;
7)write_log.py 文件:收錄
生成日志文件的方法的文件;
3. 腳本文件夾下:
1)create_selection.py 文件:收錄
創(chuàng )建套件文件的方法的文件(all_scripts_selection.txt);
自動(dòng)步驟
1. 運行Auty/setup.py文件;
2. 編寫(xiě)接口測試python腳本,放在A(yíng)uty/scripts/scripts目錄(或子目錄);
3. 運行Auty/scripts/create_selection.py文件,生成Auty/scripts/all_scripts_selection.txt文件;
4. 修改Auty/scripts/all_scripts_selection.txt文件,自定義test_selection.txt文件(任意名稱(chēng))放到Auty/scripts/selections文件夾下;
5. 運行Auty/start.py文件,啟動(dòng)接口自動(dòng)測試;
6. 在A(yíng)uty/results文件夾下生成的測試結果文件中查看測試結果。
寫(xiě)作過(guò)程
本框架中scripts、utils、actions、contants四個(gè)文件夾中的內容可以根據實(shí)際工作內容隨意更換。其他是Auty 接口自動(dòng)化測試框架的必要組件。由于后續開(kāi)發(fā)工作繁瑣,部分改動(dòng)代碼無(wú)法在后續文章中及時(shí)更新。最新代碼請見(jiàn):Github
第1部分-生成執行列表第2部分-讀取和執行腳本列表第3部分-添加異常處理和日志采集
第4部分-生成測試結果報告第5部分-調用支持、自動(dòng)安裝庫和配置說(shuō)明第6章-垃圾代碼恢復、添加套件支持第7章-添加動(dòng)作庫和常量文件庫Auty框架性能篇-Python flask框架實(shí)踐接口測試用例編寫(xiě)建議
從某種層面來(lái)說(shuō),框架的誕生也是為了讓編寫(xiě)的代碼更加規范。不管框架如何,對于接口測試用例的編寫(xiě),都應該給出以下建議:
1. 接口中涉及到url,不要寫(xiě)在case中,而是通過(guò)常量訪(fǎng)問(wèn),將url存放在指定的常量文件中(避免因接口域名變化等原因導致無(wú)法維護) );
2. 測試用例中不要收錄
測試數據等變量信息,設置為變量,在指定文件中完成變量的初始化;
3. 不要在測試用例中重復粘貼大段代碼邏輯(不利于代碼走查,會(huì )造成代碼冗余,增加出錯概率)。所有可以重用的流程都會(huì )被提取到方法中,并分類(lèi)放置在指定的存儲文件夾中的業(yè)務(wù)邏輯動(dòng)作中;
4. 關(guān)于評論:語(yǔ)言一定要正式,評論的意義更多的是給別人看,讓別人一目了然;一定要具體、詳細,不要說(shuō)一半;一定要準確,而且注釋下面的代碼邏輯一定要和注釋的內容一致,不能在注釋下面一段代碼之后,才啟動(dòng)注釋中收錄
的內容邏輯。 查看全部
自動(dòng)采集編寫(xiě)(actions文件夾自動(dòng)化測試框架一步)
這兩天用python2寫(xiě)了一個(gè)自動(dòng)化測試框架,名字叫Auty。它已準備好用于 Web 界面測試。下面是Auty框架的分步搭建過(guò)程——

首先感謝朱博大哥的指教、交流和幫助!
auty文件夾結構介紹
1. actions文件夾:收錄
業(yè)務(wù)相關(guān)的腳本文件,收錄
可復用的方法,可以根據不同的業(yè)務(wù)在actions文件夾下創(chuàng )建不同的業(yè)務(wù)文件夾;
2. 常量文件夾:收錄
常量初始化的python腳本文件。根據業(yè)務(wù)分工,可以創(chuàng )建子文件夾或多個(gè)常量文件;
3. 數據文件夾:收錄
用于測試的數據;
4. lib文件夾:收錄
支持框架運行的python文件;
5. 日志文件夾:收錄
運行測試過(guò)程中產(chǎn)生的日志文件;
6. results文件夾:收錄
測試結果文件;
7. 腳本文件夾:收錄
腳本文件夾和選擇文件夾;
1)scripts 文件夾收錄
測試腳本(可以根據業(yè)務(wù)分為多個(gè)子目錄);
2)selections 文件夾收錄
套件文件(包括需要執行的腳本路徑的集合);
8. utils文件夾:收錄
與業(yè)務(wù)邏輯無(wú)關(guān)的腳本文件,收錄
可復用的方法;
auty文件結構介紹
1. 在 Auty 文件夾下:
1)__init__.py 文件:包結構的必要文件(以下所有涉及可調用腳本的文件夾都需要該文件);
2)config.txt 文件:Auty 框架配置描述文件;
3)recovery.py 文件:垃圾代碼恢復文件(用于恢復由于測試執行過(guò)程中失敗而自動(dòng)刪除失敗的自動(dòng)生成代碼);
4)requirements 文件:收錄
框架需要安裝的python庫信息;
5)setup.py文件:執行腳本安裝需求文件中收錄
的python庫;
6)start.py 文件:執行腳本啟動(dòng)界面自動(dòng)化測試;
2. lib 文件夾:
1)exe_deco.py 文件:收錄
修改腳本運行時(shí)方法的文件;
2)execute_selection.py 文件:收錄
了suite集合下運行腳本方法的文件;
3)generate_html.py文件:收錄
根據生成的csv格式測試結果文件生成html類(lèi)型測試結果文件的方法的文件;
4)generate_result.py文件:收錄
生成csv格式測試結果方法的文件;
5)read_selection.py 文件:收錄
讀取可執行腳本列表的方法的文件;
6)recovery_code.py 文件:收錄
垃圾代碼恢復方法的文件;
7)write_log.py 文件:收錄
生成日志文件的方法的文件;
3. 腳本文件夾下:
1)create_selection.py 文件:收錄
創(chuàng )建套件文件的方法的文件(all_scripts_selection.txt);
自動(dòng)步驟
1. 運行Auty/setup.py文件;
2. 編寫(xiě)接口測試python腳本,放在A(yíng)uty/scripts/scripts目錄(或子目錄);
3. 運行Auty/scripts/create_selection.py文件,生成Auty/scripts/all_scripts_selection.txt文件;
4. 修改Auty/scripts/all_scripts_selection.txt文件,自定義test_selection.txt文件(任意名稱(chēng))放到Auty/scripts/selections文件夾下;
5. 運行Auty/start.py文件,啟動(dòng)接口自動(dòng)測試;
6. 在A(yíng)uty/results文件夾下生成的測試結果文件中查看測試結果。
寫(xiě)作過(guò)程
本框架中scripts、utils、actions、contants四個(gè)文件夾中的內容可以根據實(shí)際工作內容隨意更換。其他是Auty 接口自動(dòng)化測試框架的必要組件。由于后續開(kāi)發(fā)工作繁瑣,部分改動(dòng)代碼無(wú)法在后續文章中及時(shí)更新。最新代碼請見(jiàn):Github
第1部分-生成執行列表第2部分-讀取和執行腳本列表第3部分-添加異常處理和日志采集
第4部分-生成測試結果報告第5部分-調用支持、自動(dòng)安裝庫和配置說(shuō)明第6章-垃圾代碼恢復、添加套件支持第7章-添加動(dòng)作庫和常量文件庫Auty框架性能篇-Python flask框架實(shí)踐接口測試用例編寫(xiě)建議
從某種層面來(lái)說(shuō),框架的誕生也是為了讓編寫(xiě)的代碼更加規范。不管框架如何,對于接口測試用例的編寫(xiě),都應該給出以下建議:
1. 接口中涉及到url,不要寫(xiě)在case中,而是通過(guò)常量訪(fǎng)問(wèn),將url存放在指定的常量文件中(避免因接口域名變化等原因導致無(wú)法維護) );
2. 測試用例中不要收錄
測試數據等變量信息,設置為變量,在指定文件中完成變量的初始化;
3. 不要在測試用例中重復粘貼大段代碼邏輯(不利于代碼走查,會(huì )造成代碼冗余,增加出錯概率)。所有可以重用的流程都會(huì )被提取到方法中,并分類(lèi)放置在指定的存儲文件夾中的業(yè)務(wù)邏輯動(dòng)作中;
4. 關(guān)于評論:語(yǔ)言一定要正式,評論的意義更多的是給別人看,讓別人一目了然;一定要具體、詳細,不要說(shuō)一半;一定要準確,而且注釋下面的代碼邏輯一定要和注釋的內容一致,不能在注釋下面一段代碼之后,才啟動(dòng)注釋中收錄
的內容邏輯。
自動(dòng)采集編寫(xiě)(用考拉SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇高質(zhì)量SEO文章!)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 136 次瀏覽 ? 2021-12-29 11:12
看到本文內容請不要驚訝,因為本文由考拉SEO平臺批量編譯,僅用于SEO引流。有了考拉SEO,一天可以輕松產(chǎn)出數萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
這些天,網(wǎng)友們一直在關(guān)注ai偽原創(chuàng )內容的自動(dòng)視頻采集和上傳,質(zhì)疑我們的人太多了。其實(shí)在關(guān)注這個(gè)信息之前,大家應該先來(lái)這里探討一下關(guān)鍵詞如何優(yōu)化自編信息!對于圈子里思考的SEOer來(lái)說(shuō),文字質(zhì)量絕不是主要目標,這些人最關(guān)心的是權重值和訪(fǎng)問(wèn)量。一篇高質(zhì)量的搜索優(yōu)化文章寫(xiě)在一個(gè)新的站點(diǎn)上,并推送到一個(gè)高權重的門(mén)戶(hù)站點(diǎn)。最后排名和流量差別很大!
一直在咨詢(xún)AI偽原創(chuàng )視頻自動(dòng)采集上傳的客戶(hù),歸根結底大家超級關(guān)注的還是之前文章討論的內容。編輯一篇流量大的搜索落地文章很容易,但一篇文章產(chǎn)生的流量其實(shí)很小。如果要設置內容達到引流的目的,絕對關(guān)鍵是自動(dòng)化!如果1篇SEO文章可以收獲1個(gè)UV(每天),那么假設可以寫(xiě)10000篇文章,那么平均每天的客戶(hù)量可以增加10000。但是,簡(jiǎn)單來(lái)說(shuō),在現實(shí)生活中編輯時(shí),一個(gè)人一天只能產(chǎn)出30篇文章,最多60篇。即使使用偽原創(chuàng )工具,也只能維持一百!看到這個(gè),
杜娘想的人工造物是什么?原創(chuàng )文章不僅僅是逐段原創(chuàng )編輯!在各大搜索者的算法定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的句子。換句話(huà)說(shuō),只要我們的碼字和別人的碼字不完全一樣,就可以增加收錄
的可能性。一篇熱點(diǎn)文章,核心足夠搶眼,保持同一個(gè)中心思想,只要保證沒(méi)有同款,就說(shuō)明這篇文章還是很有可能被搜索引擎收錄的,甚至成為引流的好文章。就像這篇文章,你可能在搜索引擎搜索視頻,自動(dòng)采集
ai偽原創(chuàng )上傳,然后點(diǎn)進(jìn)去。其實(shí),下一篇就是發(fā)揮考拉SEO平臺智能編輯文章系統的作用。從!
本站智能原創(chuàng )平臺應為原創(chuàng )文章系統,精準表達。一天可以寫(xiě)好幾萬(wàn)個(gè)靠譜的SEO文案。只要您的網(wǎng)站足夠大,收錄率就可以高達 80%。詳細的操作方法,個(gè)人中心有視頻展示和初學(xué)者指南。讓我們免費試用吧!很抱歉沒(méi)有給大家帶來(lái)關(guān)于自動(dòng)抓拍ai偽原創(chuàng )上傳的全面講解,或許能讓大家看完這篇通用的系統語(yǔ)言。但如果我們喜歡這個(gè)系統,只需點(diǎn)擊導航欄,就能讓您的網(wǎng)頁(yè)每天達到數百次瀏覽量。這不是壞事嗎? 查看全部
自動(dòng)采集編寫(xiě)(用考拉SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇高質(zhì)量SEO文章!)
看到本文內容請不要驚訝,因為本文由考拉SEO平臺批量編譯,僅用于SEO引流。有了考拉SEO,一天可以輕松產(chǎn)出數萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
這些天,網(wǎng)友們一直在關(guān)注ai偽原創(chuàng )內容的自動(dòng)視頻采集和上傳,質(zhì)疑我們的人太多了。其實(shí)在關(guān)注這個(gè)信息之前,大家應該先來(lái)這里探討一下關(guān)鍵詞如何優(yōu)化自編信息!對于圈子里思考的SEOer來(lái)說(shuō),文字質(zhì)量絕不是主要目標,這些人最關(guān)心的是權重值和訪(fǎng)問(wèn)量。一篇高質(zhì)量的搜索優(yōu)化文章寫(xiě)在一個(gè)新的站點(diǎn)上,并推送到一個(gè)高權重的門(mén)戶(hù)站點(diǎn)。最后排名和流量差別很大!

一直在咨詢(xún)AI偽原創(chuàng )視頻自動(dòng)采集上傳的客戶(hù),歸根結底大家超級關(guān)注的還是之前文章討論的內容。編輯一篇流量大的搜索落地文章很容易,但一篇文章產(chǎn)生的流量其實(shí)很小。如果要設置內容達到引流的目的,絕對關(guān)鍵是自動(dòng)化!如果1篇SEO文章可以收獲1個(gè)UV(每天),那么假設可以寫(xiě)10000篇文章,那么平均每天的客戶(hù)量可以增加10000。但是,簡(jiǎn)單來(lái)說(shuō),在現實(shí)生活中編輯時(shí),一個(gè)人一天只能產(chǎn)出30篇文章,最多60篇。即使使用偽原創(chuàng )工具,也只能維持一百!看到這個(gè),
杜娘想的人工造物是什么?原創(chuàng )文章不僅僅是逐段原創(chuàng )編輯!在各大搜索者的算法定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的句子。換句話(huà)說(shuō),只要我們的碼字和別人的碼字不完全一樣,就可以增加收錄
的可能性。一篇熱點(diǎn)文章,核心足夠搶眼,保持同一個(gè)中心思想,只要保證沒(méi)有同款,就說(shuō)明這篇文章還是很有可能被搜索引擎收錄的,甚至成為引流的好文章。就像這篇文章,你可能在搜索引擎搜索視頻,自動(dòng)采集
ai偽原創(chuàng )上傳,然后點(diǎn)進(jìn)去。其實(shí),下一篇就是發(fā)揮考拉SEO平臺智能編輯文章系統的作用。從!

本站智能原創(chuàng )平臺應為原創(chuàng )文章系統,精準表達。一天可以寫(xiě)好幾萬(wàn)個(gè)靠譜的SEO文案。只要您的網(wǎng)站足夠大,收錄率就可以高達 80%。詳細的操作方法,個(gè)人中心有視頻展示和初學(xué)者指南。讓我們免費試用吧!很抱歉沒(méi)有給大家帶來(lái)關(guān)于自動(dòng)抓拍ai偽原創(chuàng )上傳的全面講解,或許能讓大家看完這篇通用的系統語(yǔ)言。但如果我們喜歡這個(gè)系統,只需點(diǎn)擊導航欄,就能讓您的網(wǎng)頁(yè)每天達到數百次瀏覽量。這不是壞事嗎?
自動(dòng)采集編寫(xiě)(安裝Python自動(dòng)化測試的腳本是用Python3寫(xiě)的嗎)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 177 次瀏覽 ? 2021-12-29 09:07
寫(xiě)在前面
本文主要介紹一個(gè)基于uiautomator2封裝的Python庫android-catcher。該庫的功能主要包括Android設備的UI自動(dòng)化測試和手機性能數據的采集。適用于列表滑動(dòng)、視頻錄制等各種測試場(chǎng)景。 CPU,內存、幀率等信息的抓取方便后續分析。
Github地址:
安裝 Python
自動(dòng)化測試腳本使用Python 3編寫(xiě),運行腳本需要安裝Python 3環(huán)境。
下載鏈接:
Python 3.6.5
安裝 android-catcher 依賴(lài)
打開(kāi)腳本目錄,執行以下命令安裝依賴(lài)
pip install -r requirements.txt
使用方法 uiautomator2
安裝uiautomator2后,一般只需要執行以下命令來(lái)初始化設備并在設備上安裝uiautomator2服務(wù)
python -m uiautomator2 init
如果出現如下提示,則安裝成功
更多uiautomator2的使用請參考:
腳本文件說(shuō)明
這個(gè)腳本庫根目錄下的主要文件有
參數說(shuō)明 生成的文件說(shuō)明
采集到的信息根據信息類(lèi)型存儲在指定輸出目錄下的cpu_stats、mem_stats、fps_stats、net_stats四個(gè)子目錄中。文件名為信息類(lèi)型_設備號_應用程序ID_版本號_測試場(chǎng)景名稱(chēng)_時(shí)間戳,如cpu_d3c2edaa_video。like_RecordVideo_1.9.9_1524122928.csv.csv,實(shí)際效果大致如下
輸出文件為csv文件,直接打開(kāi)和用Excel打開(kāi)的效果如下:
此外,您可以為測試的每個(gè)階段添加節點(diǎn)描述
task.period = "idle"
生成類(lèi)似于下圖的圖形
如何使用無(wú)自定義測試場(chǎng)景
適用于沒(méi)有特定測試場(chǎng)景,腳本運行一段時(shí)間后腳本處于采集狀態(tài)的情況。時(shí)長(cháng)可以通過(guò)配置參數指定,用戶(hù)可以在此過(guò)程中隨意操作手機。直接通過(guò)命令行運行_main_.py腳本文件并指定相關(guān)參數
比如我想采集applicationId為video.like的應用程序10s內的cpu信息和內存信息,采樣間隔為200ms,輸出目錄為當前目錄,那么可以在所在目錄下執行如下命令腳本位于
python _main_.py -s 設備號-a video.like -f 0.2 -d 10 -i mem,cpu -o .
腳本運行后,在根目錄下可以看到如下圖的文件生成
注意:要帶-d參數指定采集的持續時(shí)間,否則腳本默認運行10s,不需要-t參數。默認測試場(chǎng)景命名為 Random
如何使用自定義測試場(chǎng)景
自定義測試場(chǎng)景不能直接調用_main_.py 腳本。需要新建一個(gè)腳本,繼承task.py#Task并重寫(xiě)Task#execute方法,在Task#execute中實(shí)現自定義測試場(chǎng)景的邏輯,如下圖所示:
在這里創(chuàng )建一個(gè)名為 start_app.py 的腳本,運行命令:
python start_app.py -s 設備號-a 進(jìn)程名 -f 0.1 -i cpu,mem -o .
可以啟動(dòng)相應的APP,采集CPU信息和內存信息,采樣間隔100ms,輸出到當前目錄。注意這里沒(méi)有-d參數,因為采集的時(shí)長(cháng)以測試任務(wù)的時(shí)長(cháng)為準。設置的參數必須按照說(shuō)明進(jìn)行,否則無(wú)法采集數據
如果要采集
自定義信息,可以繼承 info.py#Info 并重寫(xiě) Info#get_start_info 和 Info#get_end_info 方法??梢詤⒖家呀?jīng)實(shí)現的四種信息集合,最后通過(guò)Task#add_info方法進(jìn)行添加。
自定義測試場(chǎng)景后,調用_main_#main方法,傳入測試場(chǎng)景實(shí)例。測試場(chǎng)景的名稱(chēng)將用作輸出文件命名的一部分。最好取一個(gè)能準確表達測試場(chǎng)景的名字,比如一個(gè)APP錄制視頻 測試場(chǎng)景的名字是RecordVideo
采集
到的信息可以通過(guò)Excel制作成圖表。以下是完整視頻錄制測試場(chǎng)景的CPU比例和內存變化
通過(guò)圖表,可以直觀(guān)地分析應用程序不同版本、不同場(chǎng)景的性能狀態(tài)
寫(xiě)在最后
以上是對該庫使用的一些介紹。由于工作經(jīng)驗還比較少,所以現在也在學(xué)習和使用Python。在編寫(xiě)這個(gè)庫的時(shí)候,可能會(huì )有很多考慮不周或不完善的地方。有能力的朋友可以直接修改庫實(shí)現更多的自定義功能。另外也希望大家多多使用,多發(fā)現問(wèn)題,歡迎issue,歡迎star,歡迎新的使用需求和想法。后續會(huì )繼續完善,謝謝!
Github地址: 查看全部
自動(dòng)采集編寫(xiě)(安裝Python自動(dòng)化測試的腳本是用Python3寫(xiě)的嗎)
寫(xiě)在前面
本文主要介紹一個(gè)基于uiautomator2封裝的Python庫android-catcher。該庫的功能主要包括Android設備的UI自動(dòng)化測試和手機性能數據的采集。適用于列表滑動(dòng)、視頻錄制等各種測試場(chǎng)景。 CPU,內存、幀率等信息的抓取方便后續分析。
Github地址:
安裝 Python
自動(dòng)化測試腳本使用Python 3編寫(xiě),運行腳本需要安裝Python 3環(huán)境。
下載鏈接:
Python 3.6.5
安裝 android-catcher 依賴(lài)
打開(kāi)腳本目錄,執行以下命令安裝依賴(lài)
pip install -r requirements.txt
使用方法 uiautomator2
安裝uiautomator2后,一般只需要執行以下命令來(lái)初始化設備并在設備上安裝uiautomator2服務(wù)
python -m uiautomator2 init
如果出現如下提示,則安裝成功
更多uiautomator2的使用請參考:
腳本文件說(shuō)明
這個(gè)腳本庫根目錄下的主要文件有
參數說(shuō)明 生成的文件說(shuō)明
采集到的信息根據信息類(lèi)型存儲在指定輸出目錄下的cpu_stats、mem_stats、fps_stats、net_stats四個(gè)子目錄中。文件名為信息類(lèi)型_設備號_應用程序ID_版本號_測試場(chǎng)景名稱(chēng)_時(shí)間戳,如cpu_d3c2edaa_video。like_RecordVideo_1.9.9_1524122928.csv.csv,實(shí)際效果大致如下
輸出文件為csv文件,直接打開(kāi)和用Excel打開(kāi)的效果如下:
此外,您可以為測試的每個(gè)階段添加節點(diǎn)描述
task.period = "idle"
生成類(lèi)似于下圖的圖形
如何使用無(wú)自定義測試場(chǎng)景
適用于沒(méi)有特定測試場(chǎng)景,腳本運行一段時(shí)間后腳本處于采集狀態(tài)的情況。時(shí)長(cháng)可以通過(guò)配置參數指定,用戶(hù)可以在此過(guò)程中隨意操作手機。直接通過(guò)命令行運行_main_.py腳本文件并指定相關(guān)參數
比如我想采集applicationId為video.like的應用程序10s內的cpu信息和內存信息,采樣間隔為200ms,輸出目錄為當前目錄,那么可以在所在目錄下執行如下命令腳本位于
python _main_.py -s 設備號-a video.like -f 0.2 -d 10 -i mem,cpu -o .
腳本運行后,在根目錄下可以看到如下圖的文件生成
注意:要帶-d參數指定采集的持續時(shí)間,否則腳本默認運行10s,不需要-t參數。默認測試場(chǎng)景命名為 Random
如何使用自定義測試場(chǎng)景
自定義測試場(chǎng)景不能直接調用_main_.py 腳本。需要新建一個(gè)腳本,繼承task.py#Task并重寫(xiě)Task#execute方法,在Task#execute中實(shí)現自定義測試場(chǎng)景的邏輯,如下圖所示:
在這里創(chuàng )建一個(gè)名為 start_app.py 的腳本,運行命令:
python start_app.py -s 設備號-a 進(jìn)程名 -f 0.1 -i cpu,mem -o .
可以啟動(dòng)相應的APP,采集CPU信息和內存信息,采樣間隔100ms,輸出到當前目錄。注意這里沒(méi)有-d參數,因為采集的時(shí)長(cháng)以測試任務(wù)的時(shí)長(cháng)為準。設置的參數必須按照說(shuō)明進(jìn)行,否則無(wú)法采集數據
如果要采集
自定義信息,可以繼承 info.py#Info 并重寫(xiě) Info#get_start_info 和 Info#get_end_info 方法??梢詤⒖家呀?jīng)實(shí)現的四種信息集合,最后通過(guò)Task#add_info方法進(jìn)行添加。
自定義測試場(chǎng)景后,調用_main_#main方法,傳入測試場(chǎng)景實(shí)例。測試場(chǎng)景的名稱(chēng)將用作輸出文件命名的一部分。最好取一個(gè)能準確表達測試場(chǎng)景的名字,比如一個(gè)APP錄制視頻 測試場(chǎng)景的名字是RecordVideo
采集
到的信息可以通過(guò)Excel制作成圖表。以下是完整視頻錄制測試場(chǎng)景的CPU比例和內存變化
通過(guò)圖表,可以直觀(guān)地分析應用程序不同版本、不同場(chǎng)景的性能狀態(tài)
寫(xiě)在最后
以上是對該庫使用的一些介紹。由于工作經(jīng)驗還比較少,所以現在也在學(xué)習和使用Python。在編寫(xiě)這個(gè)庫的時(shí)候,可能會(huì )有很多考慮不周或不完善的地方。有能力的朋友可以直接修改庫實(shí)現更多的自定義功能。另外也希望大家多多使用,多發(fā)現問(wèn)題,歡迎issue,歡迎star,歡迎新的使用需求和想法。后續會(huì )繼續完善,謝謝!
Github地址:
自動(dòng)采集編寫(xiě)(個(gè)人信息采集小程序模板解決你制作個(gè)人信息報表(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 277 次瀏覽 ? 2021-12-28 16:09
個(gè)人信息采集小程序制作平臺網(wǎng)站
>自建定制【個(gè)人信息采集小程序】立即注冊開(kāi)始>
?微信、百度、抖音、今日頭條小程序
?抽獎、答題、投票、展示等多元化小程序。
?同城、社區、查詢(xún)、咨詢(xún)等熱門(mén)小程序
?覆蓋70+行業(yè),400+套免費小程序模板即刻制作>
?超劃算的小程序開(kāi)發(fā)方案,買(mǎi)兩年送兩年,每天只需花1元√
個(gè)人信息采集
小程序*熱門(mén)功能
*服務(wù)抽獎——適用于美容、餐飲、保養等店內服務(wù)的個(gè)人信息采集小程序。
*同城社區-適用于小區、社區等領(lǐng)域采集
個(gè)人信息的小程序
* 留言如回復-適用于需要此服務(wù)的個(gè)人信息采集
小程序
*在線(xiàn)投票-適用于需要使用投票功能的個(gè)人信息采集小程序
*在線(xiàn)答題——適用于需要使用答題功能的個(gè)人信息采集小程序
*簽到和簽到-適用于需要使用簽到功能的個(gè)人信息采集
小程序
提供個(gè)人信息采集小程序定制服務(wù),或自帶模板自建模板
個(gè)人信息采集小程序制作平臺網(wǎng)站提供免費的個(gè)人信息采集小程序模板
平臺提供免費的個(gè)人信息采集小程序模板
解決你在制作個(gè)人信息采集小程序的路上遇到的所有煩惱
個(gè)人信息采集小程序制作平臺網(wǎng)站有哪些優(yōu)勢
定制2種服務(wù),以及多功能服務(wù),助您減少后顧之憂(yōu)
▽無(wú)需自己寫(xiě)代碼
▽小程序制作,全程拖拽操作簡(jiǎn)單
▽無(wú)需編寫(xiě)任何代碼即可完成個(gè)人信息采集小程序的開(kāi)發(fā)
▽個(gè)人信息采集小程序自主開(kāi)發(fā)即刻啟動(dòng)
▽一鍵免費注冊開(kāi)發(fā)個(gè)人信息采集小程序
▽微信、百度小程序、今日頭條、抖音
▽一次擁有四大平臺網(wǎng)站小程序
▽搶占移動(dòng)終端流量,提升企業(yè)移動(dòng)終端服務(wù)水平
▽可視化個(gè)人信息采集小程序設計界面
▽步驟搭建簡(jiǎn)單好用的個(gè)人信息采集小程序
▽0代碼庫也可以用來(lái)制作個(gè)人信息采集小程序
▽省時(shí)、省力、省錢(qián),高效完成個(gè)人信息采集小程序的開(kāi)發(fā)
▽詳細的數據分析報告
▽多維度、多方位的個(gè)人信息采集小程序數據解讀
▽全面了解用戶(hù)喜好和賺錢(qián)秘訣
▽大數據時(shí)代,用數據做更正確的決策 查看全部
自動(dòng)采集編寫(xiě)(個(gè)人信息采集小程序模板解決你制作個(gè)人信息報表(組圖))
個(gè)人信息采集小程序制作平臺網(wǎng)站
>自建定制【個(gè)人信息采集小程序】立即注冊開(kāi)始>
?微信、百度、抖音、今日頭條小程序
?抽獎、答題、投票、展示等多元化小程序。
?同城、社區、查詢(xún)、咨詢(xún)等熱門(mén)小程序
?覆蓋70+行業(yè),400+套免費小程序模板即刻制作>
?超劃算的小程序開(kāi)發(fā)方案,買(mǎi)兩年送兩年,每天只需花1元√


個(gè)人信息采集
小程序*熱門(mén)功能
*服務(wù)抽獎——適用于美容、餐飲、保養等店內服務(wù)的個(gè)人信息采集小程序。
*同城社區-適用于小區、社區等領(lǐng)域采集
個(gè)人信息的小程序
* 留言如回復-適用于需要此服務(wù)的個(gè)人信息采集
小程序
*在線(xiàn)投票-適用于需要使用投票功能的個(gè)人信息采集小程序
*在線(xiàn)答題——適用于需要使用答題功能的個(gè)人信息采集小程序
*簽到和簽到-適用于需要使用簽到功能的個(gè)人信息采集
小程序

提供個(gè)人信息采集小程序定制服務(wù),或自帶模板自建模板
個(gè)人信息采集小程序制作平臺網(wǎng)站提供免費的個(gè)人信息采集小程序模板
平臺提供免費的個(gè)人信息采集小程序模板
解決你在制作個(gè)人信息采集小程序的路上遇到的所有煩惱


個(gè)人信息采集小程序制作平臺網(wǎng)站有哪些優(yōu)勢
定制2種服務(wù),以及多功能服務(wù),助您減少后顧之憂(yōu)

▽無(wú)需自己寫(xiě)代碼
▽小程序制作,全程拖拽操作簡(jiǎn)單
▽無(wú)需編寫(xiě)任何代碼即可完成個(gè)人信息采集小程序的開(kāi)發(fā)
▽個(gè)人信息采集小程序自主開(kāi)發(fā)即刻啟動(dòng)

▽一鍵免費注冊開(kāi)發(fā)個(gè)人信息采集小程序
▽微信、百度小程序、今日頭條、抖音
▽一次擁有四大平臺網(wǎng)站小程序
▽搶占移動(dòng)終端流量,提升企業(yè)移動(dòng)終端服務(wù)水平

▽可視化個(gè)人信息采集小程序設計界面
▽步驟搭建簡(jiǎn)單好用的個(gè)人信息采集小程序
▽0代碼庫也可以用來(lái)制作個(gè)人信息采集小程序
▽省時(shí)、省力、省錢(qián),高效完成個(gè)人信息采集小程序的開(kāi)發(fā)

▽詳細的數據分析報告
▽多維度、多方位的個(gè)人信息采集小程序數據解讀
▽全面了解用戶(hù)喜好和賺錢(qián)秘訣
▽大數據時(shí)代,用數據做更正確的決策
自動(dòng)采集編寫(xiě)( 有關(guān)自動(dòng)采集inlistIoutthe)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 200 次瀏覽 ? 2021-12-28 06:11
有關(guān)自動(dòng)采集inlistIoutthe)
Firefox 自動(dòng)采集
url
在我開(kāi)始測試有關(guān)在地址欄中啟用內聯(lián)自動(dòng)完成功能的最后一個(gè)提示后,我突然想到,盡管來(lái)自我的瀏覽器歷史記錄的鏈接一直顯示在列表中,但我可能永遠不會(huì )輸入它們。
在我開(kāi)始測試關(guān)于在地址欄中啟用內聯(lián)自動(dòng)完成的最后一個(gè)技巧后,我想雖然瀏覽器歷史記錄中的鏈接總是顯示在列表中,但我可能永遠不會(huì )輸入它們。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您在地址欄中使用大量書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您從地址欄中使用許多書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
請記住,此設置并不適合所有人,但了解工作原理很有好處。
請記住,此設置并不適合所有人,但最好了解它的工作原理。
要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
browser.urlbar.matchOnlyTyped
browser.urlbar.matchOnlyTyped
雙擊該值將其更改為 true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:
雙擊該值將其更改為true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:
當然,您手動(dòng)輸入的鏈接將繼續自動(dòng)完成:
當然,您手動(dòng)輸入的鏈接會(huì )繼續自動(dòng)完成:
擁有一個(gè)每個(gè)人都可以選擇自己設置的瀏覽器真是太好了。
有了瀏覽器,每個(gè)人都可以選擇自己的設置,這很棒。
翻譯自:
Firefox 自動(dòng)采集
url 查看全部
自動(dòng)采集編寫(xiě)(
有關(guān)自動(dòng)采集inlistIoutthe)

Firefox 自動(dòng)采集
url
在我開(kāi)始測試有關(guān)在地址欄中啟用內聯(lián)自動(dòng)完成功能的最后一個(gè)提示后,我突然想到,盡管來(lái)自我的瀏覽器歷史記錄的鏈接一直顯示在列表中,但我可能永遠不會(huì )輸入它們。
在我開(kāi)始測試關(guān)于在地址欄中啟用內聯(lián)自動(dòng)完成的最后一個(gè)技巧后,我想雖然瀏覽器歷史記錄中的鏈接總是顯示在列表中,但我可能永遠不會(huì )輸入它們。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您在地址欄中使用大量書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您從地址欄中使用許多書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
請記住,此設置并不適合所有人,但了解工作原理很有好處。
請記住,此設置并不適合所有人,但最好了解它的工作原理。

要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
browser.urlbar.matchOnlyTyped
browser.urlbar.matchOnlyTyped

雙擊該值將其更改為 true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:
雙擊該值將其更改為true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:

當然,您手動(dòng)輸入的鏈接將繼續自動(dòng)完成:
當然,您手動(dòng)輸入的鏈接會(huì )繼續自動(dòng)完成:

擁有一個(gè)每個(gè)人都可以選擇自己設置的瀏覽器真是太好了。
有了瀏覽器,每個(gè)人都可以選擇自己的設置,這很棒。
翻譯自:
Firefox 自動(dòng)采集
url
自動(dòng)采集編寫(xiě)(iOS開(kāi)發(fā)交流技術(shù)群:1.數據采集SDK是如何工作的)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 201 次瀏覽 ? 2021-12-28 06:09
GrowingIO 是一個(gè)基于用戶(hù)行為數據的增長(cháng)平臺。準確采集用戶(hù)行為數據是公司業(yè)務(wù)的基石。只有及時(shí)、準確、可靠的數據采集,才能支撐上層的數據分析、用戶(hù)畫(huà)像、運營(yíng)等服務(wù)。因此,公司一直非常重視數據采集SDK(Software Development Kit)的質(zhì)量保證工作。
iOS開(kāi)發(fā)與通信技術(shù)群:【563513413】(跳躍),無(wú)論你是大牛還是新手,歡迎加入,分享BAT,阿里巴巴面試題,面試經(jīng)驗,討論技術(shù),讓大家交流、學(xué)習、成長(cháng)!
為了滿(mǎn)足客戶(hù)的各種業(yè)務(wù)和技術(shù)需求,GrowingIO提供Web、Android、iOS、Hybrid等各種平臺,各種小程序(微信、支付寶、今日頭條等)、微信內嵌頁(yè)面,以及React Native 、Flutter、Cordova、Weex、API Cloud、AppCan等眾多開(kāi)發(fā)框架SDK,這無(wú)疑給SDK測試帶來(lái)了巨大的挑戰。
本文主要介紹GrowingIO在iOS SDK測試中的具體實(shí)踐,希望能為從事iOS測試的同學(xué)提供一些參考。
1. 數據采集SDK是如何工作的?
要測試一個(gè)軟件或系統,首先要了解它的業(yè)務(wù)邏輯和技術(shù)實(shí)現。接下來(lái)我們簡(jiǎn)單的看一下數據采集SDK的工作原理。
GrowingIO的數據采集SDK支持非埋點(diǎn)(全埋點(diǎn))數據采集和埋點(diǎn)數據采集,滿(mǎn)足不同業(yè)務(wù)需求。其簡(jiǎn)單的結構如下:
當用戶(hù)打開(kāi)App、瀏覽不同頁(yè)面、點(diǎn)擊不同元素(如按鈕、文本框、圖片)、關(guān)閉App時(shí),非嵌入式事件采集模塊會(huì )自動(dòng)采集并保存用戶(hù)的具體行為手機本地存儲(關(guān)于非埋點(diǎn)數據采集的具體實(shí)現,請關(guān)注GrowigIO的后續文章分享,這里不再詳述)。
埋點(diǎn)事件采集類(lèi)似,不同的是埋點(diǎn)事件是由App主動(dòng)調用SDK的埋點(diǎn)API觸發(fā)的。當然,不同事件的具體數據格式是不同的。
接下來(lái)是數據發(fā)送模塊,主要負責通過(guò)HTTP API向數據接收服務(wù)上報數據。
需要注意的是,為了節省用戶(hù)的數據流量和電量,發(fā)送程序不是實(shí)時(shí)上報的。它會(huì )根據設備的功率、網(wǎng)絡(luò )類(lèi)型和數據量來(lái)選擇發(fā)送時(shí)序,數據在發(fā)送前會(huì )被壓縮。并進(jìn)行混淆處理,減少傳輸數據量,提高數據安全性。
當然,數據發(fā)送程序也會(huì )對數據報告中的各種數據發(fā)送失敗、網(wǎng)絡(luò )異常等錯誤進(jìn)行處理,并采用適當的重試機制。
2. 如何測試?
通過(guò)以上結構分析可以看出,數據發(fā)送模塊與核心數據采集業(yè)務(wù)關(guān)系不大,非常穩定,幾乎沒(méi)有變化,所以我們測試的重點(diǎn)主要是數據采集部分,尤其是數據采集部分無(wú)埋點(diǎn)。
要測試數據采集,首先需要有一個(gè)收錄
各種頁(yè)面和元素的Demo App,然后在不同頁(yè)面之間切換,操作頁(yè)面上的元素或者觸發(fā)一個(gè)埋藏事件,然后檢查采集的事件數據是否正確。
有兩種方法可以檢查事件數據。一種是通過(guò)日志打印出詳細的事件數據,觀(guān)察日志檢查;另一種是通過(guò)抓包程序獲取數據并發(fā)送,然后檢查。
后者一般需要配置復雜的代理工具,數據量大,還需要考慮數據的解壓和解密。更難準確定位事件數據。因此,在實(shí)際測試中一般采用前者。
上圖是采集數據的日志截圖。通過(guò)圖中的事件數據,我們發(fā)現字段較多,有些字段可讀性不高,人工檢查耗時(shí)較長(cháng)。
另外,SDK數據采集的主要邏輯基本不變,但每次修改都要覆蓋足夠的回歸,避免遺漏錯誤。
一旦缺陷在線(xiàn)上被遺漏,造成的損失是極其昂貴的。即使缺陷在后續版本中修復,影響也難以消除,因為移動(dòng)應用程序的升級周期難以控制。
此外,GrowingIO 數據采集 SDK 兼容 iOS 8 及以上版本。需要測試系統各個(gè)版本的兼容性,測試工作量明顯。
好在SDK的業(yè)務(wù)變化很少,斷言?xún)热荼容^機械,特別適合自動(dòng)化測試。而且回歸測試的工作量巨大,使用自動(dòng)化測試可以大大提高生產(chǎn)力和質(zhì)量。
3. 選擇一個(gè)測試框架
工人要想做好本職工作,首先要磨礪工具,選擇合適的自動(dòng)化測試框架,再進(jìn)行自動(dòng)化測試。選擇框架時(shí)需要考慮幾個(gè)方面:
目前支持iOS UI自動(dòng)化測試的主要框架對比如下:
考慮影響測試框架選擇的幾個(gè)因素。
首先,使用的語(yǔ)言和框架決定了測試人員的持續學(xué)習成本。iOS SDK 測試人員對Objective-C 有高度的熟悉和掌握,不需要消耗額外的學(xué)習成本。測試和開(kāi)發(fā)相同的技術(shù)堆棧。
其次,根據需要不時(shí)調整測試App程序。使用開(kāi)發(fā)效率高、調試方便的測試框架,可以讓我們在適應新的UI變化和新的需求時(shí),獲得更小的投入產(chǎn)出比。
基于以上考慮,KIF框架已經(jīng)展示了它的優(yōu)勢,而KIF使用XCTest框架,使得iOS程序的測試過(guò)程和單測一樣,可以完全復用單測持續集成過(guò)程,維護持續集成的成本相對降低;此外,KIF 是一個(gè)活躍的開(kāi)源測試框架,具有良好的可擴展性和快速升級。有活躍的社區來(lái)討論和解決使用過(guò)程中遇到的問(wèn)題。
鑒于以上優(yōu)勢,我們選擇KIF作為iOS的UI自動(dòng)化測試框架。
KIF的全稱(chēng)是Keep it Functional,是一個(gè)建立在XCTest之上的UI測試框架,通過(guò)Accessibility定位特定的控件,然后使用私有的API來(lái)操作UI。由于它是建立在 XCTest 之上的,所以你可以完美的使用 XCode 的測試相關(guān)工具。
4. 自動(dòng)化測試的實(shí)現
語(yǔ)言和工具
建立測試環(huán)境
要將Target實(shí)現添加到現有項目中,選擇File → New → Target…菜單項,在iOS → Test中選擇UI Testing Bundle模板,如下圖:
點(diǎn)擊下一步進(jìn)入Target選項頁(yè)面,設置測試項目的相關(guān)項
完成Target設置后,點(diǎn)擊“Finish”按鈕,創(chuàng )建成功。
要安裝 pod,請在命令行終端中輸入以下命令。
sudo gem 安裝 cocoapods
修改或創(chuàng )建項目的pod文件Podfile。
目標'GrowingIOTest'做
pod'SDCycleScrollView','~> 1.75'
pod'MJRefresh'
pod'MBProgressHUD'
結尾
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
其中,新增以下一段
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
在項目目錄下執行如下安裝命令安裝對應的依賴(lài),測試項目就準備完成了。
吊艙安裝
準備待測程序,在測試Demo工程中集成待測版本的數據采集SDK。
編寫(xiě)測試用例
測試環(huán)境搭建好后,下一步就是編寫(xiě)具體的測試用例。一般測試用例的主要步驟是:
準備測試環(huán)境,執行測試步驟,測試結果,斷言測試結果,報告,清理測試環(huán)境
下面以SDK的unburied元素的點(diǎn)擊事件的自動(dòng)化測試用例為例,說(shuō)明自動(dòng)化用例的準備。
測試用例:
啟動(dòng)App,模擬用戶(hù)滾動(dòng)屏幕找到對話(huà)框按鈕,然后點(diǎn)擊對話(huà)框按鈕。彈出對話(huà)框后,點(diǎn)擊關(guān)閉按鈕,驗證點(diǎn)擊事件是否發(fā)送數據,內容是否正確。
代碼:
-(無(wú)效)設置{
// 一些初始化操作
}
-(void)tearDown{
// 一些結束動(dòng)作
}
-(無(wú)效)testDialogBtnCheck{
/**
功能:點(diǎn)擊對話(huà)框按鈕檢測點(diǎn)擊事件,
**/
[[viewTester usingLabel:@"UIinterface"] 點(diǎn)擊];
//添加向下滾動(dòng)操作
[tester scrollViewWithAccessibilityLabel:@"采集
View" byFractionOfSizeHorizo??ntal:0.0f vertical:10.0f];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"LabelAttribute"] tap];
[[viewTester usingLabel:@"ShowAlert"] 點(diǎn)擊];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"Cancel"] tap];
[測試員waitForTimeInterval:3];
NSArray *clckEventArray = [MockEventQueue eventsFor:@"clck"];
//是否發(fā)送clck事件
if(clckEventArray.count>=2)
{
//判斷點(diǎn)擊事件是否正確發(fā)送
NSDictionary *chevent=[clckEventArray objectAtIndex:clckEventArray.count-1];
NSDictionary *clkchr=[NoburPoMeaProCheck ClckEventCheck:chevent];
//NSLog(@"檢查結果:%@",clkchr);
XCTAssertEqual(clkchr[@"KeysCheck"][@"chres"], @"Passed");
NSLog(@"點(diǎn)擊對話(huà)框按鈕檢測clck事件測試通過(guò)---Passed!");
}
別的
{
NSLog(@"對話(huà)框按鈕被點(diǎn)擊,clck事件測試失?。?@!",clckEventArray);
XCTAssertEqual(1, 0);
}
}
由于我們主要測試SDK的功能,所以測試Demo是我們自己設計的,主要涵蓋了各種UI元素和事件。它的業(yè)務(wù)邏輯比大多數業(yè)務(wù)類(lèi)應用都簡(jiǎn)單,沒(méi)有特別的介紹。
這里介紹斷言的設計。上一篇提到,我們自動(dòng)化測試的重點(diǎn)是數據采集規則是否正確,不關(guān)心數據的存儲和傳輸。
SDK在采集數據時(shí),先將所有的事件加入到一個(gè)隊列中,然后再保存到DB中,所以在進(jìn)行測試的時(shí)候,只需要監聽(tīng)事件隊列,就可以保存和檢索需要的事件根據需要在受監視的事件隊列中斷言。點(diǎn)擊事件發(fā)送的數據結構大致如下:
驗證事件數據,首先要保證字段完整,每個(gè)字段不為空,即數據模式正確;其次,根據需要驗證事件的具體字段,例如點(diǎn)擊事件的類(lèi)型t應該是clck。這些檢查被封裝在一個(gè)單獨的Check方法中,如果檢查通過(guò),該方法返回Passed。
這里通過(guò)ClckEventCheck方法完成具體的業(yè)務(wù)驗證。
執行測試用例
主要介紹如何通過(guò)命令行執行測試。
安裝Command Line Tools(命令行工具包),App Store安裝Xcode默認不會(huì )安裝Command Line Tools,可以在命令行輸入以下命令單獨安裝。
xcode-select --install
在使用命令行執行測試之前,還需要將項目設置為 Shared。打開(kāi)產(chǎn)品→方案→管理方案,勾選項目是否共享,如果不是,勾選后面的復選框進(jìn)行共享。
從命令行執行所有測試用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
執行單個(gè)用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-only-testing:GIOAutoTests/ClckEventsTest/test7DialogBtnCheck \
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
xcodebuild 的更多使用請參考其使用說(shuō)明。
人 xcodebuild
美化檢測報告
xcodebuild 的輸出讀起來(lái)不是很直觀(guān)。使用xcpretty可以解決這個(gè)問(wèn)題,同時(shí)也可以完成測試報告的生成。
xcpretty 是一種高速靈活的 xcodebuild 輸出格式化工具。其用法如下:
# 從命令行安裝 xcpretty
gem 安裝 xcpretty
命令行執行
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11' \
| xcpretty --report html
生成的測試報告如下:
默認輸出 html 報告在 build/reports/tests.html
5. 覆蓋率統計
在進(jìn)行自動(dòng)化測試時(shí),我們通常希望獲得測試覆蓋率報告來(lái)衡量自動(dòng)化測試的覆蓋率。由于 KIF 是直接基于 XCTest 實(shí)現的,因此您可以輕松使用 Xcode 自帶的覆蓋率統計工具。設置如下:
Product → Scheme → Edit Scheme, Code Coverage 將需要統計覆蓋的被測程序添加到Targets中。
測試完成后,可以獲得覆蓋率統計報告。
6. 持續集成
自動(dòng)化測試的最大價(jià)值在于它可以代替人工進(jìn)行更高效、更頻繁的測試。因此,要充分發(fā)揮自動(dòng)化測試的價(jià)值,最理想的解決方案就是在持續集成環(huán)節加入自動(dòng)化測試。每當有代碼更改時(shí),都會(huì )自動(dòng)執行測試并快速反饋結果。
我們使用Jenkins來(lái)監控代碼倉庫的變化。當有新的commit提交時(shí),Jenkins會(huì )自動(dòng)拉取最新的代碼,調用命令行執行相應的自動(dòng)化測試用例,采集
相應的測試報告,并將測試結果通過(guò)釘釘機器人及時(shí)通知相關(guān)開(kāi)發(fā)人員和測試人員。
當測試失敗時(shí),相關(guān)人員可以第一時(shí)間收到結果并及時(shí)解決。
7. 總結
本文以iOS平臺為例,系統介紹GrowingIO數據采集SDK的主要工作原理、測試方案的設計、自動(dòng)化測試框架的選擇以及自動(dòng)化測試的實(shí)現。希望對從事SDK測試的同學(xué)有所啟發(fā)。
后面我們還會(huì )分享GrowingIO用戶(hù)觸摸SDK的自動(dòng)化測試、Android SDK的自動(dòng)化測試等相關(guān)內容。請繼續關(guān)注我們。 查看全部
自動(dòng)采集編寫(xiě)(iOS開(kāi)發(fā)交流技術(shù)群:1.數據采集SDK是如何工作的)
GrowingIO 是一個(gè)基于用戶(hù)行為數據的增長(cháng)平臺。準確采集用戶(hù)行為數據是公司業(yè)務(wù)的基石。只有及時(shí)、準確、可靠的數據采集,才能支撐上層的數據分析、用戶(hù)畫(huà)像、運營(yíng)等服務(wù)。因此,公司一直非常重視數據采集SDK(Software Development Kit)的質(zhì)量保證工作。
iOS開(kāi)發(fā)與通信技術(shù)群:【563513413】(跳躍),無(wú)論你是大牛還是新手,歡迎加入,分享BAT,阿里巴巴面試題,面試經(jīng)驗,討論技術(shù),讓大家交流、學(xué)習、成長(cháng)!
為了滿(mǎn)足客戶(hù)的各種業(yè)務(wù)和技術(shù)需求,GrowingIO提供Web、Android、iOS、Hybrid等各種平臺,各種小程序(微信、支付寶、今日頭條等)、微信內嵌頁(yè)面,以及React Native 、Flutter、Cordova、Weex、API Cloud、AppCan等眾多開(kāi)發(fā)框架SDK,這無(wú)疑給SDK測試帶來(lái)了巨大的挑戰。
本文主要介紹GrowingIO在iOS SDK測試中的具體實(shí)踐,希望能為從事iOS測試的同學(xué)提供一些參考。
1. 數據采集SDK是如何工作的?
要測試一個(gè)軟件或系統,首先要了解它的業(yè)務(wù)邏輯和技術(shù)實(shí)現。接下來(lái)我們簡(jiǎn)單的看一下數據采集SDK的工作原理。
GrowingIO的數據采集SDK支持非埋點(diǎn)(全埋點(diǎn))數據采集和埋點(diǎn)數據采集,滿(mǎn)足不同業(yè)務(wù)需求。其簡(jiǎn)單的結構如下:

當用戶(hù)打開(kāi)App、瀏覽不同頁(yè)面、點(diǎn)擊不同元素(如按鈕、文本框、圖片)、關(guān)閉App時(shí),非嵌入式事件采集模塊會(huì )自動(dòng)采集并保存用戶(hù)的具體行為手機本地存儲(關(guān)于非埋點(diǎn)數據采集的具體實(shí)現,請關(guān)注GrowigIO的后續文章分享,這里不再詳述)。
埋點(diǎn)事件采集類(lèi)似,不同的是埋點(diǎn)事件是由App主動(dòng)調用SDK的埋點(diǎn)API觸發(fā)的。當然,不同事件的具體數據格式是不同的。
接下來(lái)是數據發(fā)送模塊,主要負責通過(guò)HTTP API向數據接收服務(wù)上報數據。
需要注意的是,為了節省用戶(hù)的數據流量和電量,發(fā)送程序不是實(shí)時(shí)上報的。它會(huì )根據設備的功率、網(wǎng)絡(luò )類(lèi)型和數據量來(lái)選擇發(fā)送時(shí)序,數據在發(fā)送前會(huì )被壓縮。并進(jìn)行混淆處理,減少傳輸數據量,提高數據安全性。
當然,數據發(fā)送程序也會(huì )對數據報告中的各種數據發(fā)送失敗、網(wǎng)絡(luò )異常等錯誤進(jìn)行處理,并采用適當的重試機制。
2. 如何測試?
通過(guò)以上結構分析可以看出,數據發(fā)送模塊與核心數據采集業(yè)務(wù)關(guān)系不大,非常穩定,幾乎沒(méi)有變化,所以我們測試的重點(diǎn)主要是數據采集部分,尤其是數據采集部分無(wú)埋點(diǎn)。
要測試數據采集,首先需要有一個(gè)收錄
各種頁(yè)面和元素的Demo App,然后在不同頁(yè)面之間切換,操作頁(yè)面上的元素或者觸發(fā)一個(gè)埋藏事件,然后檢查采集的事件數據是否正確。

有兩種方法可以檢查事件數據。一種是通過(guò)日志打印出詳細的事件數據,觀(guān)察日志檢查;另一種是通過(guò)抓包程序獲取數據并發(fā)送,然后檢查。
后者一般需要配置復雜的代理工具,數據量大,還需要考慮數據的解壓和解密。更難準確定位事件數據。因此,在實(shí)際測試中一般采用前者。

上圖是采集數據的日志截圖。通過(guò)圖中的事件數據,我們發(fā)現字段較多,有些字段可讀性不高,人工檢查耗時(shí)較長(cháng)。
另外,SDK數據采集的主要邏輯基本不變,但每次修改都要覆蓋足夠的回歸,避免遺漏錯誤。
一旦缺陷在線(xiàn)上被遺漏,造成的損失是極其昂貴的。即使缺陷在后續版本中修復,影響也難以消除,因為移動(dòng)應用程序的升級周期難以控制。
此外,GrowingIO 數據采集 SDK 兼容 iOS 8 及以上版本。需要測試系統各個(gè)版本的兼容性,測試工作量明顯。
好在SDK的業(yè)務(wù)變化很少,斷言?xún)热荼容^機械,特別適合自動(dòng)化測試。而且回歸測試的工作量巨大,使用自動(dòng)化測試可以大大提高生產(chǎn)力和質(zhì)量。
3. 選擇一個(gè)測試框架
工人要想做好本職工作,首先要磨礪工具,選擇合適的自動(dòng)化測試框架,再進(jìn)行自動(dòng)化測試。選擇框架時(shí)需要考慮幾個(gè)方面:
目前支持iOS UI自動(dòng)化測試的主要框架對比如下:

考慮影響測試框架選擇的幾個(gè)因素。
首先,使用的語(yǔ)言和框架決定了測試人員的持續學(xué)習成本。iOS SDK 測試人員對Objective-C 有高度的熟悉和掌握,不需要消耗額外的學(xué)習成本。測試和開(kāi)發(fā)相同的技術(shù)堆棧。
其次,根據需要不時(shí)調整測試App程序。使用開(kāi)發(fā)效率高、調試方便的測試框架,可以讓我們在適應新的UI變化和新的需求時(shí),獲得更小的投入產(chǎn)出比。
基于以上考慮,KIF框架已經(jīng)展示了它的優(yōu)勢,而KIF使用XCTest框架,使得iOS程序的測試過(guò)程和單測一樣,可以完全復用單測持續集成過(guò)程,維護持續集成的成本相對降低;此外,KIF 是一個(gè)活躍的開(kāi)源測試框架,具有良好的可擴展性和快速升級。有活躍的社區來(lái)討論和解決使用過(guò)程中遇到的問(wèn)題。
鑒于以上優(yōu)勢,我們選擇KIF作為iOS的UI自動(dòng)化測試框架。
KIF的全稱(chēng)是Keep it Functional,是一個(gè)建立在XCTest之上的UI測試框架,通過(guò)Accessibility定位特定的控件,然后使用私有的API來(lái)操作UI。由于它是建立在 XCTest 之上的,所以你可以完美的使用 XCode 的測試相關(guān)工具。
4. 自動(dòng)化測試的實(shí)現
語(yǔ)言和工具
建立測試環(huán)境
要將Target實(shí)現添加到現有項目中,選擇File → New → Target…菜單項,在iOS → Test中選擇UI Testing Bundle模板,如下圖:

點(diǎn)擊下一步進(jìn)入Target選項頁(yè)面,設置測試項目的相關(guān)項

完成Target設置后,點(diǎn)擊“Finish”按鈕,創(chuàng )建成功。
要安裝 pod,請在命令行終端中輸入以下命令。
sudo gem 安裝 cocoapods
修改或創(chuàng )建項目的pod文件Podfile。
目標'GrowingIOTest'做
pod'SDCycleScrollView','~> 1.75'
pod'MJRefresh'
pod'MBProgressHUD'
結尾
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
其中,新增以下一段
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
在項目目錄下執行如下安裝命令安裝對應的依賴(lài),測試項目就準備完成了。
吊艙安裝
準備待測程序,在測試Demo工程中集成待測版本的數據采集SDK。
編寫(xiě)測試用例
測試環(huán)境搭建好后,下一步就是編寫(xiě)具體的測試用例。一般測試用例的主要步驟是:
準備測試環(huán)境,執行測試步驟,測試結果,斷言測試結果,報告,清理測試環(huán)境
下面以SDK的unburied元素的點(diǎn)擊事件的自動(dòng)化測試用例為例,說(shuō)明自動(dòng)化用例的準備。
測試用例:
啟動(dòng)App,模擬用戶(hù)滾動(dòng)屏幕找到對話(huà)框按鈕,然后點(diǎn)擊對話(huà)框按鈕。彈出對話(huà)框后,點(diǎn)擊關(guān)閉按鈕,驗證點(diǎn)擊事件是否發(fā)送數據,內容是否正確。
代碼:
-(無(wú)效)設置{
// 一些初始化操作
}
-(void)tearDown{
// 一些結束動(dòng)作
}
-(無(wú)效)testDialogBtnCheck{
/**
功能:點(diǎn)擊對話(huà)框按鈕檢測點(diǎn)擊事件,
**/
[[viewTester usingLabel:@"UIinterface"] 點(diǎn)擊];
//添加向下滾動(dòng)操作
[tester scrollViewWithAccessibilityLabel:@"采集
View" byFractionOfSizeHorizo??ntal:0.0f vertical:10.0f];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"LabelAttribute"] tap];
[[viewTester usingLabel:@"ShowAlert"] 點(diǎn)擊];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"Cancel"] tap];
[測試員waitForTimeInterval:3];
NSArray *clckEventArray = [MockEventQueue eventsFor:@"clck"];
//是否發(fā)送clck事件
if(clckEventArray.count>=2)
{
//判斷點(diǎn)擊事件是否正確發(fā)送
NSDictionary *chevent=[clckEventArray objectAtIndex:clckEventArray.count-1];
NSDictionary *clkchr=[NoburPoMeaProCheck ClckEventCheck:chevent];
//NSLog(@"檢查結果:%@",clkchr);
XCTAssertEqual(clkchr[@"KeysCheck"][@"chres"], @"Passed");
NSLog(@"點(diǎn)擊對話(huà)框按鈕檢測clck事件測試通過(guò)---Passed!");
}
別的
{
NSLog(@"對話(huà)框按鈕被點(diǎn)擊,clck事件測試失?。?@!",clckEventArray);
XCTAssertEqual(1, 0);
}
}
由于我們主要測試SDK的功能,所以測試Demo是我們自己設計的,主要涵蓋了各種UI元素和事件。它的業(yè)務(wù)邏輯比大多數業(yè)務(wù)類(lèi)應用都簡(jiǎn)單,沒(méi)有特別的介紹。
這里介紹斷言的設計。上一篇提到,我們自動(dòng)化測試的重點(diǎn)是數據采集規則是否正確,不關(guān)心數據的存儲和傳輸。
SDK在采集數據時(shí),先將所有的事件加入到一個(gè)隊列中,然后再保存到DB中,所以在進(jìn)行測試的時(shí)候,只需要監聽(tīng)事件隊列,就可以保存和檢索需要的事件根據需要在受監視的事件隊列中斷言。點(diǎn)擊事件發(fā)送的數據結構大致如下:

驗證事件數據,首先要保證字段完整,每個(gè)字段不為空,即數據模式正確;其次,根據需要驗證事件的具體字段,例如點(diǎn)擊事件的類(lèi)型t應該是clck。這些檢查被封裝在一個(gè)單獨的Check方法中,如果檢查通過(guò),該方法返回Passed。
這里通過(guò)ClckEventCheck方法完成具體的業(yè)務(wù)驗證。
執行測試用例
主要介紹如何通過(guò)命令行執行測試。
安裝Command Line Tools(命令行工具包),App Store安裝Xcode默認不會(huì )安裝Command Line Tools,可以在命令行輸入以下命令單獨安裝。
xcode-select --install
在使用命令行執行測試之前,還需要將項目設置為 Shared。打開(kāi)產(chǎn)品→方案→管理方案,勾選項目是否共享,如果不是,勾選后面的復選框進(jìn)行共享。

從命令行執行所有測試用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
執行單個(gè)用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-only-testing:GIOAutoTests/ClckEventsTest/test7DialogBtnCheck \
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
xcodebuild 的更多使用請參考其使用說(shuō)明。
人 xcodebuild
美化檢測報告
xcodebuild 的輸出讀起來(lái)不是很直觀(guān)。使用xcpretty可以解決這個(gè)問(wèn)題,同時(shí)也可以完成測試報告的生成。
xcpretty 是一種高速靈活的 xcodebuild 輸出格式化工具。其用法如下:
# 從命令行安裝 xcpretty
gem 安裝 xcpretty
命令行執行
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11' \
| xcpretty --report html
生成的測試報告如下:

默認輸出 html 報告在 build/reports/tests.html
5. 覆蓋率統計
在進(jìn)行自動(dòng)化測試時(shí),我們通常希望獲得測試覆蓋率報告來(lái)衡量自動(dòng)化測試的覆蓋率。由于 KIF 是直接基于 XCTest 實(shí)現的,因此您可以輕松使用 Xcode 自帶的覆蓋率統計工具。設置如下:
Product → Scheme → Edit Scheme, Code Coverage 將需要統計覆蓋的被測程序添加到Targets中。

測試完成后,可以獲得覆蓋率統計報告。
6. 持續集成
自動(dòng)化測試的最大價(jià)值在于它可以代替人工進(jìn)行更高效、更頻繁的測試。因此,要充分發(fā)揮自動(dòng)化測試的價(jià)值,最理想的解決方案就是在持續集成環(huán)節加入自動(dòng)化測試。每當有代碼更改時(shí),都會(huì )自動(dòng)執行測試并快速反饋結果。
我們使用Jenkins來(lái)監控代碼倉庫的變化。當有新的commit提交時(shí),Jenkins會(huì )自動(dòng)拉取最新的代碼,調用命令行執行相應的自動(dòng)化測試用例,采集
相應的測試報告,并將測試結果通過(guò)釘釘機器人及時(shí)通知相關(guān)開(kāi)發(fā)人員和測試人員。
當測試失敗時(shí),相關(guān)人員可以第一時(shí)間收到結果并及時(shí)解決。
7. 總結
本文以iOS平臺為例,系統介紹GrowingIO數據采集SDK的主要工作原理、測試方案的設計、自動(dòng)化測試框架的選擇以及自動(dòng)化測試的實(shí)現。希望對從事SDK測試的同學(xué)有所啟發(fā)。
后面我們還會(huì )分享GrowingIO用戶(hù)觸摸SDK的自動(dòng)化測試、Android SDK的自動(dòng)化測試等相關(guān)內容。請繼續關(guān)注我們。
自動(dòng)采集編寫(xiě)(網(wǎng)頁(yè)采集是什么,又是如何采集的呢?(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2021-12-27 20:08
在網(wǎng)頁(yè)設計中,什么是網(wǎng)頁(yè)采集
以及它是如何采集
的?
網(wǎng)頁(yè)采集
作為政府網(wǎng)站網(wǎng)頁(yè)在線(xiàn)歸檔的首要環(huán)節,就是利用相關(guān)工具,按照既定的頻率和方法,及時(shí)篩選出值得保存的政府網(wǎng)頁(yè)內容。網(wǎng)頁(yè)采集
的第一步是確定采集
對象。政府網(wǎng)頁(yè)檔案中存儲的信息采集對象為域名帶有“”的政府網(wǎng)站。為了保證政府網(wǎng)頁(yè)的采集質(zhì)量,需要對目標網(wǎng)站進(jìn)行評估,信息量大。, 選擇原創(chuàng )
信息多、更新頻繁的政府網(wǎng)站作為采集對象。確定要采集的目標政府網(wǎng)站后,
完整性采集和選擇性采集是目前比較常用的網(wǎng)絡(luò )資源采集方式。他們有自己的優(yōu)點(diǎn)和缺點(diǎn)。為了彌補各自的不足,可以通過(guò)結合兩者優(yōu)點(diǎn)的混合采集方式來(lái)補充兩種采集方式的優(yōu)點(diǎn)。,在采集
入選政府網(wǎng)站所有網(wǎng)頁(yè)完整性的同時(shí),通過(guò)人工干預篩選網(wǎng)頁(yè)內容,有選擇地對具有證據價(jià)值、歷史價(jià)值、研究?jì)r(jià)值的重要網(wǎng)頁(yè)進(jìn)行深度挖掘。分級頻繁采集,既兼顧了政府網(wǎng)頁(yè)采集的廣度,又兼顧了重要網(wǎng)頁(yè)的采集深度。
網(wǎng)頁(yè)的采集和抓取最終需要依賴(lài)相應的網(wǎng)絡(luò )爬蟲(chóng)工具。目前,有很多用于網(wǎng)頁(yè)歸檔的爬蟲(chóng)工具。其中Heritrix和HTTrack是最常用的。這些工具可用于定位政府網(wǎng)站頁(yè)面。自動(dòng)批量在線(xiàn)采集。 查看全部
自動(dòng)采集編寫(xiě)(網(wǎng)頁(yè)采集是什么,又是如何采集的呢?(圖))
在網(wǎng)頁(yè)設計中,什么是網(wǎng)頁(yè)采集
以及它是如何采集
的?
網(wǎng)頁(yè)采集
作為政府網(wǎng)站網(wǎng)頁(yè)在線(xiàn)歸檔的首要環(huán)節,就是利用相關(guān)工具,按照既定的頻率和方法,及時(shí)篩選出值得保存的政府網(wǎng)頁(yè)內容。網(wǎng)頁(yè)采集
的第一步是確定采集
對象。政府網(wǎng)頁(yè)檔案中存儲的信息采集對象為域名帶有“”的政府網(wǎng)站。為了保證政府網(wǎng)頁(yè)的采集質(zhì)量,需要對目標網(wǎng)站進(jìn)行評估,信息量大。, 選擇原創(chuàng )
信息多、更新頻繁的政府網(wǎng)站作為采集對象。確定要采集的目標政府網(wǎng)站后,
完整性采集和選擇性采集是目前比較常用的網(wǎng)絡(luò )資源采集方式。他們有自己的優(yōu)點(diǎn)和缺點(diǎn)。為了彌補各自的不足,可以通過(guò)結合兩者優(yōu)點(diǎn)的混合采集方式來(lái)補充兩種采集方式的優(yōu)點(diǎn)。,在采集
入選政府網(wǎng)站所有網(wǎng)頁(yè)完整性的同時(shí),通過(guò)人工干預篩選網(wǎng)頁(yè)內容,有選擇地對具有證據價(jià)值、歷史價(jià)值、研究?jì)r(jià)值的重要網(wǎng)頁(yè)進(jìn)行深度挖掘。分級頻繁采集,既兼顧了政府網(wǎng)頁(yè)采集的廣度,又兼顧了重要網(wǎng)頁(yè)的采集深度。
網(wǎng)頁(yè)的采集和抓取最終需要依賴(lài)相應的網(wǎng)絡(luò )爬蟲(chóng)工具。目前,有很多用于網(wǎng)頁(yè)歸檔的爬蟲(chóng)工具。其中Heritrix和HTTrack是最常用的。這些工具可用于定位政府網(wǎng)站頁(yè)面。自動(dòng)批量在線(xiàn)采集。
自動(dòng)采集編寫(xiě)(瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 162 次瀏覽 ? 2021-12-27 04:01
自動(dòng)采集編寫(xiě)腳本是有一些小學(xué)生小老板的,不過(guò)真正的全自動(dòng)采集是需要程序輔助配合的,如采集網(wǎng)頁(yè)中的alt+tab標簽,通過(guò)發(fā)php代碼請求或者asp代碼請求來(lái)達到自動(dòng)化查詢(xún)操作而已。
瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理
你所要做的,即無(wú)需翻墻,地址全部被爬取了,只需要將他們的url傳入sae就可以調用阿里的接口獲取商品信息了。
我有開(kāi)發(fā)過(guò)一個(gè),地址是:-trade/,一個(gè)簡(jiǎn)單的、基于python的商品采集器,包括如下功能:1.采集網(wǎng)頁(yè)商品信息2.采集京東、、知乎等平臺商品信息3.抓取處理京東、、知乎等平臺用戶(hù)發(fā)布商品信息4.抓取商品詳情頁(yè)采集方法:先用python做出一個(gè)標準的采集url,然后讓aba插件抓取標準的采集url,寫(xiě)一個(gè)爬蟲(chóng)程序,如下,編寫(xiě)程序大概一兩個(gè)小時(shí),后端爬蟲(chóng)程序兩三天,然后請求aba爬蟲(chóng)的html頁(yè)面,完成所有商品信息的抓取,返回實(shí)時(shí)頁(yè)面,把抓取好的html發(fā)布到,或者在網(wǎng)站上安裝上selenium和requests模塊,用這兩個(gè)模塊訪(fǎng)問(wèn)抓取好的商品,用瀏覽器的自動(dòng)抓取腳本功能,用瀏覽器按照cookie找商品id抓取商品信息,將抓取完成的數據返回,然后用aba的javascript頁(yè)面獲取,再用爬蟲(chóng)程序進(jìn)行后續的商品信息獲取和后續的頁(yè)面處理。
補充下以上程序實(shí)現流程:商品采集完成后我會(huì )檢查javascript頁(yè)面和頁(yè)面請求是否加載正常(加載正?;蛘叱鲥e我會(huì )告訴大家這個(gè)必須出了一定的bug才會(huì )這樣),并且頁(yè)面數據返回是否正確,如果返回正確我會(huì )保存一個(gè)log,這樣就能隨時(shí)把任何需要抓取商品信息的請求都通過(guò)code把抓取的商品信息發(fā)布到了aba的后端服務(wù)器,然后從aba后端服務(wù)器抓取數據或者對數據進(jìn)行處理,對數據做出頁(yè)面頁(yè)面顯示處理等。
如果從這個(gè)方法實(shí)現的話(huà),前端抓取只需要安裝javascript模塊,后端服務(wù)器配置網(wǎng)頁(yè)編程對象即可。如果大家覺(jué)得我寫(xiě)的程序不錯的話(huà),請點(diǎn)個(gè)贊,謝謝大家!。 查看全部
自動(dòng)采集編寫(xiě)(瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理方法)
自動(dòng)采集編寫(xiě)腳本是有一些小學(xué)生小老板的,不過(guò)真正的全自動(dòng)采集是需要程序輔助配合的,如采集網(wǎng)頁(yè)中的alt+tab標簽,通過(guò)發(fā)php代碼請求或者asp代碼請求來(lái)達到自動(dòng)化查詢(xún)操作而已。
瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理
你所要做的,即無(wú)需翻墻,地址全部被爬取了,只需要將他們的url傳入sae就可以調用阿里的接口獲取商品信息了。
我有開(kāi)發(fā)過(guò)一個(gè),地址是:-trade/,一個(gè)簡(jiǎn)單的、基于python的商品采集器,包括如下功能:1.采集網(wǎng)頁(yè)商品信息2.采集京東、、知乎等平臺商品信息3.抓取處理京東、、知乎等平臺用戶(hù)發(fā)布商品信息4.抓取商品詳情頁(yè)采集方法:先用python做出一個(gè)標準的采集url,然后讓aba插件抓取標準的采集url,寫(xiě)一個(gè)爬蟲(chóng)程序,如下,編寫(xiě)程序大概一兩個(gè)小時(shí),后端爬蟲(chóng)程序兩三天,然后請求aba爬蟲(chóng)的html頁(yè)面,完成所有商品信息的抓取,返回實(shí)時(shí)頁(yè)面,把抓取好的html發(fā)布到,或者在網(wǎng)站上安裝上selenium和requests模塊,用這兩個(gè)模塊訪(fǎng)問(wèn)抓取好的商品,用瀏覽器的自動(dòng)抓取腳本功能,用瀏覽器按照cookie找商品id抓取商品信息,將抓取完成的數據返回,然后用aba的javascript頁(yè)面獲取,再用爬蟲(chóng)程序進(jìn)行后續的商品信息獲取和后續的頁(yè)面處理。
補充下以上程序實(shí)現流程:商品采集完成后我會(huì )檢查javascript頁(yè)面和頁(yè)面請求是否加載正常(加載正?;蛘叱鲥e我會(huì )告訴大家這個(gè)必須出了一定的bug才會(huì )這樣),并且頁(yè)面數據返回是否正確,如果返回正確我會(huì )保存一個(gè)log,這樣就能隨時(shí)把任何需要抓取商品信息的請求都通過(guò)code把抓取的商品信息發(fā)布到了aba的后端服務(wù)器,然后從aba后端服務(wù)器抓取數據或者對數據進(jìn)行處理,對數據做出頁(yè)面頁(yè)面顯示處理等。
如果從這個(gè)方法實(shí)現的話(huà),前端抓取只需要安裝javascript模塊,后端服務(wù)器配置網(wǎng)頁(yè)編程對象即可。如果大家覺(jué)得我寫(xiě)的程序不錯的話(huà),請點(diǎn)個(gè)贊,謝謝大家!。
自動(dòng)采集編寫(xiě)(純Qt編寫(xiě),支持任意Qt版本+任意編譯器+枚舉)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 114 次瀏覽 ? 2021-12-25 14:19
一、前言
數據庫用作數據源,并在許多組態(tài)軟件中使用。指定數據庫類(lèi)型,填寫(xiě)數據庫連接信息,指定對應的數據庫表和字段,以及采集間隔。程序根據采集間隔自動(dòng)采集數據庫數據并綁定到界面控件分配顯示即可。使用數據庫作為數據源有一個(gè)非常大的好處,不需要寫(xiě)額外的通訊代碼,與對方的語(yǔ)言或平臺無(wú)關(guān),也不會(huì )出現不規范、不規范等爭吵不準確的通信協(xié)議導致不正確的分析。情況是它支持任何語(yǔ)言和平臺。畢竟有數據庫作為中間載體過(guò)渡,
體驗地址:提取碼:877p 文件:可執行文件.zip
二、 實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認自帶120多個(gè)控件。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得。在右側的中文屬性欄上,更改相應的屬性會(huì )立即應用到相應的選中控件上,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性列文本翻譯映射機制,效率極高,可以非常方便的擴展其他語(yǔ)言的屬性列。所有控件的屬性都會(huì )自動(dòng)提取出來(lái)并顯示在右側的屬性欄中,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件??梢詫斍爱?huà)布的所有控件配置信息導出到一個(gè)xml文件中??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件??梢酝ㄟ^(guò)拉動(dòng)滑動(dòng)條、勾選模擬數據復選框、輸入文本框三種方式生成數據并應用所有控件??丶С职藗€(gè)方向調節大小,自適應任意分辨率,鍵盤(pán)可上下左右微調位置。以三種方式設置數據:串口采集、網(wǎng)絡(luò )采集、數據庫采集。代碼極其簡(jiǎn)潔,注釋也很詳細,可作為配置原型,自行擴展更多功能。純Qt編寫(xiě),支持任意Qt版本+任意編譯器+任意系統。三、效果圖
四、核心代碼
void frmData::initServer()
{
//實(shí)例化串口類(lèi),綁定信號槽
com = new QextSerialPort(QextSerialPort::EventDriven, this);
connect(com, SIGNAL(readyRead()), this, SLOT(readDataCom()));
//實(shí)例化網(wǎng)絡(luò )通信客戶(hù)端類(lèi),綁定信號槽
tcpClient = new QTcpSocket(this);
connect(tcpClient, SIGNAL(readyRead()), this, SLOT(readDataClient()));
//實(shí)例化網(wǎng)絡(luò )通信服務(wù)端類(lèi),綁定信號槽
tcpSocket = NULL;
tcpServer = new QTcpServer(this);
connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
//開(kāi)啟定時(shí)器讀取數據庫采集數據
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(readDataDb()));
timer->setInterval(1000);
}
void frmData::on_btnOpenDb_clicked()
{
if (ui->btnOpenDb->text() == "打開(kāi)") {
if (App::DbType == "sqlite") {
//先檢查數據庫文件是否存在
QString dbPath = qApp->applicationDirPath() + "/" + App::DbPath;
QFile file(dbPath);
if (file.size() == 0) {
return;
}
dbConn = QSqlDatabase::addDatabase("QSQLITE");
dbConn.setDatabaseName(dbPath);
} else if (App::DbType == "mysql") {
//先檢查數據庫服務(wù)器IP是否通,不檢查直接連接,不存在的IP會(huì )卡很久
QTcpSocket socket;
socket.connectToHost(App::DbPath, App::DbPort);
if (!socket.waitForConnected(2000)) {
return;
} else {
socket.disconnectFromHost();
}
dbConn = QSqlDatabase::addDatabase("QMYSQL");
dbConn.setHostName(App::DbPath);
dbConn.setPort(App::DbPort);
dbConn.setDatabaseName(App::DbName);
dbConn.setUserName(App::DbUser);
dbConn.setPassword(App::DbPwd);
} else {
//暫未支持其他數據庫,可以自行加入
return;
}
bool ok = dbConn.open();
if (ok) {
setEnable(ui->btnOpenDb, false);
ui->btnOpenDb->setText("關(guān)閉");
timer->start();
}
} else {
if (dbConn.isOpen()) {
dbConn.close();
}
setEnable(ui->btnOpenDb, true);
ui->btnOpenDb->setText("打開(kāi)");
timer->stop();
}
}
void frmData::readDataDb()
{
QString sql = QString("select %1 from %2").arg(App::DbColumn).arg(App::DbTable);
QSqlQuery query;
if (query.exec(sql)) {
if (query.next()) {
double value = query.value(0).toDouble();
ui->txtValue->setText(QString::number(value));
append(4, QString("當前值: %1").arg(value));
}
}
}
五、控件引入了150多個(gè)漂亮的控件,涵蓋了各種儀表盤(pán)、進(jìn)度條、進(jìn)度球、指南針、圖表、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)可以獨立成一個(gè)單獨的控件,零耦合,每個(gè)控件都有一個(gè)頭文件和一個(gè)實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,用更少的代碼。qwt 的控制類(lèi)是相互關(guān)聯(lián)且高度耦合的。如果要使用其中一種控件,則必須收錄
所有代碼。全部用純Qt編寫(xiě),QWidget+QPainter繪圖,支持從Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,和內置控件一樣使用,效果最只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。
一些控件提供多種樣式可供選擇,以及多種指示器樣式可供選擇。所有控件都適應窗體的拉伸和變化。集成自定義控件屬性設計器,支持拖動(dòng)設計,所見(jiàn)即所得,支持導入導出xml格式。自帶activex控件演示,所有控件都可以直接在ie瀏覽器中運行。集成fontawesome圖形字體+阿里巴巴iconfont采集
的數百種圖形字體,享受圖形字體的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll等),可以直接集成到qtcreator中進(jìn)行拖動(dòng)設計使用。已經(jīng)有qml版本了,如果用戶(hù)需求大,以后會(huì )考慮pyqt版本。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 查看全部
自動(dòng)采集編寫(xiě)(純Qt編寫(xiě),支持任意Qt版本+任意編譯器+枚舉)
一、前言
數據庫用作數據源,并在許多組態(tài)軟件中使用。指定數據庫類(lèi)型,填寫(xiě)數據庫連接信息,指定對應的數據庫表和字段,以及采集間隔。程序根據采集間隔自動(dòng)采集數據庫數據并綁定到界面控件分配顯示即可。使用數據庫作為數據源有一個(gè)非常大的好處,不需要寫(xiě)額外的通訊代碼,與對方的語(yǔ)言或平臺無(wú)關(guān),也不會(huì )出現不規范、不規范等爭吵不準確的通信協(xié)議導致不正確的分析。情況是它支持任何語(yǔ)言和平臺。畢竟有數據庫作為中間載體過(guò)渡,
體驗地址:提取碼:877p 文件:可執行文件.zip
二、 實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認自帶120多個(gè)控件。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得。在右側的中文屬性欄上,更改相應的屬性會(huì )立即應用到相應的選中控件上,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性列文本翻譯映射機制,效率極高,可以非常方便的擴展其他語(yǔ)言的屬性列。所有控件的屬性都會(huì )自動(dòng)提取出來(lái)并顯示在右側的屬性欄中,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件??梢詫斍爱?huà)布的所有控件配置信息導出到一個(gè)xml文件中??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件??梢酝ㄟ^(guò)拉動(dòng)滑動(dòng)條、勾選模擬數據復選框、輸入文本框三種方式生成數據并應用所有控件??丶С职藗€(gè)方向調節大小,自適應任意分辨率,鍵盤(pán)可上下左右微調位置。以三種方式設置數據:串口采集、網(wǎng)絡(luò )采集、數據庫采集。代碼極其簡(jiǎn)潔,注釋也很詳細,可作為配置原型,自行擴展更多功能。純Qt編寫(xiě),支持任意Qt版本+任意編譯器+任意系統。三、效果圖

四、核心代碼
void frmData::initServer()
{
//實(shí)例化串口類(lèi),綁定信號槽
com = new QextSerialPort(QextSerialPort::EventDriven, this);
connect(com, SIGNAL(readyRead()), this, SLOT(readDataCom()));
//實(shí)例化網(wǎng)絡(luò )通信客戶(hù)端類(lèi),綁定信號槽
tcpClient = new QTcpSocket(this);
connect(tcpClient, SIGNAL(readyRead()), this, SLOT(readDataClient()));
//實(shí)例化網(wǎng)絡(luò )通信服務(wù)端類(lèi),綁定信號槽
tcpSocket = NULL;
tcpServer = new QTcpServer(this);
connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
//開(kāi)啟定時(shí)器讀取數據庫采集數據
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(readDataDb()));
timer->setInterval(1000);
}
void frmData::on_btnOpenDb_clicked()
{
if (ui->btnOpenDb->text() == "打開(kāi)") {
if (App::DbType == "sqlite") {
//先檢查數據庫文件是否存在
QString dbPath = qApp->applicationDirPath() + "/" + App::DbPath;
QFile file(dbPath);
if (file.size() == 0) {
return;
}
dbConn = QSqlDatabase::addDatabase("QSQLITE");
dbConn.setDatabaseName(dbPath);
} else if (App::DbType == "mysql") {
//先檢查數據庫服務(wù)器IP是否通,不檢查直接連接,不存在的IP會(huì )卡很久
QTcpSocket socket;
socket.connectToHost(App::DbPath, App::DbPort);
if (!socket.waitForConnected(2000)) {
return;
} else {
socket.disconnectFromHost();
}
dbConn = QSqlDatabase::addDatabase("QMYSQL");
dbConn.setHostName(App::DbPath);
dbConn.setPort(App::DbPort);
dbConn.setDatabaseName(App::DbName);
dbConn.setUserName(App::DbUser);
dbConn.setPassword(App::DbPwd);
} else {
//暫未支持其他數據庫,可以自行加入
return;
}
bool ok = dbConn.open();
if (ok) {
setEnable(ui->btnOpenDb, false);
ui->btnOpenDb->setText("關(guān)閉");
timer->start();
}
} else {
if (dbConn.isOpen()) {
dbConn.close();
}
setEnable(ui->btnOpenDb, true);
ui->btnOpenDb->setText("打開(kāi)");
timer->stop();
}
}
void frmData::readDataDb()
{
QString sql = QString("select %1 from %2").arg(App::DbColumn).arg(App::DbTable);
QSqlQuery query;
if (query.exec(sql)) {
if (query.next()) {
double value = query.value(0).toDouble();
ui->txtValue->setText(QString::number(value));
append(4, QString("當前值: %1").arg(value));
}
}
}
五、控件引入了150多個(gè)漂亮的控件,涵蓋了各種儀表盤(pán)、進(jìn)度條、進(jìn)度球、指南針、圖表、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)可以獨立成一個(gè)單獨的控件,零耦合,每個(gè)控件都有一個(gè)頭文件和一個(gè)實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,用更少的代碼。qwt 的控制類(lèi)是相互關(guān)聯(lián)且高度耦合的。如果要使用其中一種控件,則必須收錄
所有代碼。全部用純Qt編寫(xiě),QWidget+QPainter繪圖,支持從Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,和內置控件一樣使用,效果最只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。
一些控件提供多種樣式可供選擇,以及多種指示器樣式可供選擇。所有控件都適應窗體的拉伸和變化。集成自定義控件屬性設計器,支持拖動(dòng)設計,所見(jiàn)即所得,支持導入導出xml格式。自帶activex控件演示,所有控件都可以直接在ie瀏覽器中運行。集成fontawesome圖形字體+阿里巴巴iconfont采集
的數百種圖形字體,享受圖形字體的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll等),可以直接集成到qtcreator中進(jìn)行拖動(dòng)設計使用。已經(jīng)有qml版本了,如果用戶(hù)需求大,以后會(huì )考慮pyqt版本。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p
自動(dòng)采集編寫(xiě)(2.工具介紹與設計工具實(shí)現的基本思想是逐個(gè)掃描指定路徑)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2021-12-22 18:09
1.背景
在性能測試的過(guò)程中,往往需要對服務(wù)器的性能進(jìn)行監控,并記錄這些性能指標的結果。無(wú)論是數據庫服務(wù)器還是云下的應用服務(wù)器,都可以通過(guò)nmon進(jìn)行監控,設置點(diǎn)間隔和點(diǎn)數,將性能指標保存成nmon文件,使用Excel插件等工具Nmon_Analyzer、Java GUI工具nmon visualizer等。讀取nmon文件的內容,分析采集的結果。但是,當監控的服務(wù)器數量較多時(shí),性能指標導致多個(gè) nmon 文件依次排列會(huì )很耗時(shí)。同時(shí),手動(dòng)讀取和記錄數據也可能因記錄錯誤而導致意外錯誤。因此,我們可以嘗試使用我們熟悉的編程語(yǔ)言,
2. 工具介紹與設計
該工具實(shí)現的基本思想是將指定路徑下的nmon文件逐一掃描,根據nmon文件的內部格式提取目標性能指標數據,然后對提取的數據進(jìn)行處理,得到結果,并自動(dòng)將結果保存到新一代結果在一個(gè) Excel 文件中。為了更直觀(guān)的獲取用戶(hù)輸入的nmon文件路徑和結果的保存路徑,我們可以編寫(xiě)GUI界面,使用界面上的文本輸入框獲取用戶(hù)的輸入,使用界面上的按鈕觸發(fā)這個(gè) 采集 事件。
圖1 工具設計流程圖
3. 工具實(shí)現
(1)導入需要的模塊
由于我們的工具收錄對文件和路徑的操作,這需要由 os 模塊來(lái)實(shí)現。逐行讀取nmon文件內容時(shí),使用codecs提供的open方法指定打開(kāi)文件的語(yǔ)言編碼,讀取時(shí)會(huì )自動(dòng)轉換為內部unicode。re 模塊是 Python 中用于匹配字符串的唯一模塊。它使用正則表達式對字符串進(jìn)行模糊匹配,并提取出您需要的字符串部分。使用該模塊,您可以實(shí)現逐行掃描進(jìn)行模糊匹配,以找到 CPU 和內存之間的相關(guān)性。表現。xlwt 庫的作用是將數據寫(xiě)入 Excel 表格。Tkinter 是 Python 的標準 GUI 庫。導入 Tkinter 模塊后,您可以使用控件快速創(chuàng )建 GUI 應用程序。特金特。
圖2 Code-導入需要的模塊
(2)窗口的實(shí)現
使用Tkinter模塊創(chuàng )建窗口,插入輸入框控件,獲取用戶(hù)輸入的路徑信息。輸入框的內容存放在StringVar中,按鈕Button設置為綁定鼠標點(diǎn)擊事件。
圖3 窗口代碼實(shí)現
圖3 窗口實(shí)現圖
?。?)寫(xiě)事件代碼-一個(gè)函數,求平均CPU利用率
不同版本的 nmon 文件的內部格式略有不同。因此,在編寫(xiě)程序時(shí),首先要了解目標版本的內部結構,以確定字符串模式匹配時(shí)需要使用nmon文件中性能指標相關(guān)內容的哪些特征。
為了計算平均值,您需要獲取 nmon 文件中記錄的點(diǎn)數。通過(guò)了解 nmon 文件中的 AAA 參數是關(guān)于操作系統和 nmon 本身的一些信息,您可以找到將其提取的行。
圖4 代碼-獲取點(diǎn)數和點(diǎn)間隔
CPU_ALL 參數是所有 CPU 的概覽,顯示所有 CPU 的平均占用率。將記錄的CPU占用率一一取出存儲在數組中,并計算數組元素的平均值,即整個(gè)監控期間CPU的平均使用率。該函數將返回值。
圖 5 Code-Find 平均 CPU 使用率
(4)寫(xiě)事件代碼-一個(gè)函數來(lái)求平均內存使用
同理,內存使用情況是通過(guò)MEM參數獲取的。與CPU情況不同的是,該參數行收錄多個(gè)內存相關(guān)的指標。在監控性能指標時(shí),我們經(jīng)常使用公式1來(lái)計算內存使用情況,所以需要從MEM中獲取內存使用情況,從參數中提取相關(guān)指標,包括memtotal、memfree、cached、buffers,根據公式計算,返回內存使用情況。
公式1 常用的內存占用計算公式
圖 6 Code-Seeking 內存使用
(5)寫(xiě)事件代碼-鼠標點(diǎn)擊事件
該事件用于綁定界面上的按鈕,實(shí)現按鈕點(diǎn)擊時(shí)的一系列操作:從輸入框中取出nmon文件路徑和目標保存路徑,生成Excel文件并創(chuàng )建工作表,并寫(xiě)入進(jìn)入默認的header Contents,調用獲取平均CPU使用率函數和獲取平均內存占用率函數,將返回值寫(xiě)入Excel文件并保存。
圖7 Code-鼠標點(diǎn)擊事件
4. 總結
該工具是一種基于Python語(yǔ)言的簡(jiǎn)單實(shí)踐,可以自動(dòng)批量提取nmon文件中的性能指標結果,并可以利用這個(gè)思路根據需要修改或擴展該工具的功能。使用此工具自動(dòng)獲取性能結果采集相比手動(dòng)讀取值節省了時(shí)間,并避免了記錄錯誤時(shí)的意外錯誤,有助于提高準確性和測試效率。 查看全部
自動(dòng)采集編寫(xiě)(2.工具介紹與設計工具實(shí)現的基本思想是逐個(gè)掃描指定路徑)
1.背景
在性能測試的過(guò)程中,往往需要對服務(wù)器的性能進(jìn)行監控,并記錄這些性能指標的結果。無(wú)論是數據庫服務(wù)器還是云下的應用服務(wù)器,都可以通過(guò)nmon進(jìn)行監控,設置點(diǎn)間隔和點(diǎn)數,將性能指標保存成nmon文件,使用Excel插件等工具Nmon_Analyzer、Java GUI工具nmon visualizer等。讀取nmon文件的內容,分析采集的結果。但是,當監控的服務(wù)器數量較多時(shí),性能指標導致多個(gè) nmon 文件依次排列會(huì )很耗時(shí)。同時(shí),手動(dòng)讀取和記錄數據也可能因記錄錯誤而導致意外錯誤。因此,我們可以嘗試使用我們熟悉的編程語(yǔ)言,
2. 工具介紹與設計
該工具實(shí)現的基本思想是將指定路徑下的nmon文件逐一掃描,根據nmon文件的內部格式提取目標性能指標數據,然后對提取的數據進(jìn)行處理,得到結果,并自動(dòng)將結果保存到新一代結果在一個(gè) Excel 文件中。為了更直觀(guān)的獲取用戶(hù)輸入的nmon文件路徑和結果的保存路徑,我們可以編寫(xiě)GUI界面,使用界面上的文本輸入框獲取用戶(hù)的輸入,使用界面上的按鈕觸發(fā)這個(gè) 采集 事件。
圖1 工具設計流程圖
3. 工具實(shí)現
(1)導入需要的模塊
由于我們的工具收錄對文件和路徑的操作,這需要由 os 模塊來(lái)實(shí)現。逐行讀取nmon文件內容時(shí),使用codecs提供的open方法指定打開(kāi)文件的語(yǔ)言編碼,讀取時(shí)會(huì )自動(dòng)轉換為內部unicode。re 模塊是 Python 中用于匹配字符串的唯一模塊。它使用正則表達式對字符串進(jìn)行模糊匹配,并提取出您需要的字符串部分。使用該模塊,您可以實(shí)現逐行掃描進(jìn)行模糊匹配,以找到 CPU 和內存之間的相關(guān)性。表現。xlwt 庫的作用是將數據寫(xiě)入 Excel 表格。Tkinter 是 Python 的標準 GUI 庫。導入 Tkinter 模塊后,您可以使用控件快速創(chuàng )建 GUI 應用程序。特金特。
圖2 Code-導入需要的模塊
(2)窗口的實(shí)現
使用Tkinter模塊創(chuàng )建窗口,插入輸入框控件,獲取用戶(hù)輸入的路徑信息。輸入框的內容存放在StringVar中,按鈕Button設置為綁定鼠標點(diǎn)擊事件。
圖3 窗口代碼實(shí)現
圖3 窗口實(shí)現圖
?。?)寫(xiě)事件代碼-一個(gè)函數,求平均CPU利用率
不同版本的 nmon 文件的內部格式略有不同。因此,在編寫(xiě)程序時(shí),首先要了解目標版本的內部結構,以確定字符串模式匹配時(shí)需要使用nmon文件中性能指標相關(guān)內容的哪些特征。
為了計算平均值,您需要獲取 nmon 文件中記錄的點(diǎn)數。通過(guò)了解 nmon 文件中的 AAA 參數是關(guān)于操作系統和 nmon 本身的一些信息,您可以找到將其提取的行。
圖4 代碼-獲取點(diǎn)數和點(diǎn)間隔
CPU_ALL 參數是所有 CPU 的概覽,顯示所有 CPU 的平均占用率。將記錄的CPU占用率一一取出存儲在數組中,并計算數組元素的平均值,即整個(gè)監控期間CPU的平均使用率。該函數將返回值。
圖 5 Code-Find 平均 CPU 使用率
(4)寫(xiě)事件代碼-一個(gè)函數來(lái)求平均內存使用
同理,內存使用情況是通過(guò)MEM參數獲取的。與CPU情況不同的是,該參數行收錄多個(gè)內存相關(guān)的指標。在監控性能指標時(shí),我們經(jīng)常使用公式1來(lái)計算內存使用情況,所以需要從MEM中獲取內存使用情況,從參數中提取相關(guān)指標,包括memtotal、memfree、cached、buffers,根據公式計算,返回內存使用情況。
公式1 常用的內存占用計算公式
圖 6 Code-Seeking 內存使用
(5)寫(xiě)事件代碼-鼠標點(diǎn)擊事件
該事件用于綁定界面上的按鈕,實(shí)現按鈕點(diǎn)擊時(shí)的一系列操作:從輸入框中取出nmon文件路徑和目標保存路徑,生成Excel文件并創(chuàng )建工作表,并寫(xiě)入進(jìn)入默認的header Contents,調用獲取平均CPU使用率函數和獲取平均內存占用率函數,將返回值寫(xiě)入Excel文件并保存。
圖7 Code-鼠標點(diǎn)擊事件
4. 總結
該工具是一種基于Python語(yǔ)言的簡(jiǎn)單實(shí)踐,可以自動(dòng)批量提取nmon文件中的性能指標結果,并可以利用這個(gè)思路根據需要修改或擴展該工具的功能。使用此工具自動(dòng)獲取性能結果采集相比手動(dòng)讀取值節省了時(shí)間,并避免了記錄錯誤時(shí)的意外錯誤,有助于提高準確性和測試效率。
自動(dòng)采集編寫(xiě)(優(yōu)采云V8.2.0版新增邊點(diǎn)擊邊采集示例: )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 237 次瀏覽 ? 2021-12-17 20:09
)
網(wǎng)站有很多,點(diǎn)擊【加載更多】或【顯示20多】按鈕可以翻頁(yè)。搜狗微信首頁(yè)和其他頁(yè)面都是這種情況。
對于此類(lèi)網(wǎng)頁(yè),新版優(yōu)采云V8.2.0 增加了【點(diǎn)擊和點(diǎn)擊采集】的功能,您可以點(diǎn)擊【加載更多】 button] 加載一個(gè)新數據,edge 采集 每次加載新數據。
示例:設置為5次點(diǎn)擊,然后1次點(diǎn)擊后,采集第一次點(diǎn)擊后加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊后加載的數據... ...最多20次點(diǎn)擊,采集 20次點(diǎn)擊后加載的數據。
使用智能識別和自行配置的采集規則,可以實(shí)現【點(diǎn)擊后采集】。具體設置方法如下。
一、使用智能識別實(shí)現【點(diǎn)擊和點(diǎn)擊采集】
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,選擇【智能識別網(wǎng)頁(yè)】,等待智能識別完成。
智能識別結束后,可以看到它自動(dòng)識別了頁(yè)面的【滾動(dòng)】、【加載更多按鈕】和【列表數據】。
鼠標移到圖片上右擊,選擇【在新標簽頁(yè)中打開(kāi)圖片】,即可查看高清大圖
Step2:點(diǎn)擊【生成采集設置】自動(dòng)生成對應的采集流程,方便用戶(hù)編輯修改。
Step3:如圖所示,通過(guò)流程中生成的【循環(huán)加載更多按鈕】+嵌入【循環(huán)列表】的步驟,可以邊點(diǎn)擊數據邊點(diǎn)擊。
但是這個(gè)過(guò)程還是存在一些問(wèn)題,需要我們手動(dòng)修改。
?、僮⒁庥^(guān)察頁(yè)面,這個(gè)頁(yè)面點(diǎn)擊5次到最后,100條數據全部加載完畢,所以我們設置翻頁(yè)次數為5次。進(jìn)入【循環(huán)加載更多按鈕】設置頁(yè)面,發(fā)現優(yōu)采云已經(jīng)為我們自動(dòng)設置好了。
?、谠倏础痉?yè)】這一步,因為這個(gè)網(wǎng)頁(yè)不需要翻頁(yè),所以這一步是多余的,需要刪除。注意在刪除【滾動(dòng)頁(yè)面】之前需要先刪除【循環(huán)列表】,以免誤刪。
Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。
二、自行配置采集 任務(wù)實(shí)現【點(diǎn)擊采集】
如果不使用智能識別,如何自己配置采集任務(wù)實(shí)現【點(diǎn)擊側采集】?下面是詳細的解釋。
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。關(guān)閉智能識別,我們自己配置采集任務(wù)。
Step2:根據需求配置提取數據。在示例中,我們提取列表數據。提取方法請參考采集列表數據教程。
Step3:提取列表數據,過(guò)程中會(huì )自動(dòng)生成【循環(huán)列表】步驟。自動(dòng)生成的【循環(huán)列表】不能收錄所有 100 個(gè) 文章 列表。我們需要修改XPath。
進(jìn)入【循環(huán)列表】設置頁(yè)面,修改XPath為:.//*[@id='pc_0_d']//li.
Step4:找到并選擇【加載更多內容】按鈕,在彈出的操作提示框中選擇【循環(huán)點(diǎn)擊單個(gè)元素】,自動(dòng)生成【循環(huán)翻頁(yè)】步驟。
【循環(huán)翻頁(yè)】在步驟中嵌入了【循環(huán)列表】的步驟,方便我們點(diǎn)擊采集數據。
再次注意頁(yè)面,這個(gè)頁(yè)面會(huì )被點(diǎn)擊5次到最后,100條數據全部加載,所以我們設置翻頁(yè)次數為5次。
Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。
查看全部
自動(dòng)采集編寫(xiě)(優(yōu)采云V8.2.0版新增邊點(diǎn)擊邊采集示例:
)
網(wǎng)站有很多,點(diǎn)擊【加載更多】或【顯示20多】按鈕可以翻頁(yè)。搜狗微信首頁(yè)和其他頁(yè)面都是這種情況。
對于此類(lèi)網(wǎng)頁(yè),新版優(yōu)采云V8.2.0 增加了【點(diǎn)擊和點(diǎn)擊采集】的功能,您可以點(diǎn)擊【加載更多】 button] 加載一個(gè)新數據,edge 采集 每次加載新數據。
示例:設置為5次點(diǎn)擊,然后1次點(diǎn)擊后,采集第一次點(diǎn)擊后加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊后加載的數據... ...最多20次點(diǎn)擊,采集 20次點(diǎn)擊后加載的數據。
使用智能識別和自行配置的采集規則,可以實(shí)現【點(diǎn)擊后采集】。具體設置方法如下。
一、使用智能識別實(shí)現【點(diǎn)擊和點(diǎn)擊采集】
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,選擇【智能識別網(wǎng)頁(yè)】,等待智能識別完成。
智能識別結束后,可以看到它自動(dòng)識別了頁(yè)面的【滾動(dòng)】、【加載更多按鈕】和【列表數據】。

鼠標移到圖片上右擊,選擇【在新標簽頁(yè)中打開(kāi)圖片】,即可查看高清大圖
Step2:點(diǎn)擊【生成采集設置】自動(dòng)生成對應的采集流程,方便用戶(hù)編輯修改。

Step3:如圖所示,通過(guò)流程中生成的【循環(huán)加載更多按鈕】+嵌入【循環(huán)列表】的步驟,可以邊點(diǎn)擊數據邊點(diǎn)擊。
但是這個(gè)過(guò)程還是存在一些問(wèn)題,需要我們手動(dòng)修改。
?、僮⒁庥^(guān)察頁(yè)面,這個(gè)頁(yè)面點(diǎn)擊5次到最后,100條數據全部加載完畢,所以我們設置翻頁(yè)次數為5次。進(jìn)入【循環(huán)加載更多按鈕】設置頁(yè)面,發(fā)現優(yōu)采云已經(jīng)為我們自動(dòng)設置好了。
?、谠倏础痉?yè)】這一步,因為這個(gè)網(wǎng)頁(yè)不需要翻頁(yè),所以這一步是多余的,需要刪除。注意在刪除【滾動(dòng)頁(yè)面】之前需要先刪除【循環(huán)列表】,以免誤刪。

Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。

二、自行配置采集 任務(wù)實(shí)現【點(diǎn)擊采集】
如果不使用智能識別,如何自己配置采集任務(wù)實(shí)現【點(diǎn)擊側采集】?下面是詳細的解釋。
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。關(guān)閉智能識別,我們自己配置采集任務(wù)。

Step2:根據需求配置提取數據。在示例中,我們提取列表數據。提取方法請參考采集列表數據教程。

Step3:提取列表數據,過(guò)程中會(huì )自動(dòng)生成【循環(huán)列表】步驟。自動(dòng)生成的【循環(huán)列表】不能收錄所有 100 個(gè) 文章 列表。我們需要修改XPath。
進(jìn)入【循環(huán)列表】設置頁(yè)面,修改XPath為:.//*[@id='pc_0_d']//li.

Step4:找到并選擇【加載更多內容】按鈕,在彈出的操作提示框中選擇【循環(huán)點(diǎn)擊單個(gè)元素】,自動(dòng)生成【循環(huán)翻頁(yè)】步驟。
【循環(huán)翻頁(yè)】在步驟中嵌入了【循環(huán)列表】的步驟,方便我們點(diǎn)擊采集數據。
再次注意頁(yè)面,這個(gè)頁(yè)面會(huì )被點(diǎn)擊5次到最后,100條數據全部加載,所以我們設置翻頁(yè)次數為5次。

Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。
自動(dòng)采集編寫(xiě)( 如何抓取遠程網(wǎng)頁(yè)?遠程HTML的二進(jìn)制代碼主要語(yǔ)句)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 154 次瀏覽 ? 2021-12-16 23:50
如何抓取遠程網(wǎng)頁(yè)?遠程HTML的二進(jìn)制代碼主要語(yǔ)句)
如何用asp編寫(xiě)網(wǎng)站data采集程序?
引用:如果你想自動(dòng)從網(wǎng)上采集 數據寫(xiě)入本地數據庫,那么看看本文介紹的方法。為了解決這個(gè)問(wèn)題,作者花了三天時(shí)間,終于完成了。下面是完整的ASP代碼,可以讓你隨意存儲來(lái)自互聯(lián)網(wǎng)的數據采集,非常實(shí)用!
一、網(wǎng)站數據采集方法
目前網(wǎng)站data采集的方法主要有兩種,一種是使用現成的軟件,另一種是自己編寫(xiě)采集程序。
1、使用現成的軟件
很多軟件(如網(wǎng)絡(luò )信息采集大師、BK通用信息采集系統等)都可以采集在線(xiàn)數據,只要你去百度、谷歌、“數據< @采集搜索關(guān)鍵詞的“軟件”即可找到,現在這類(lèi)軟件很多,都是用C、DEPHI或VB編寫(xiě)的,一般都提供免費版本給你下載試試。雖然他們也可以采集在線(xiàn)數據,但是采集之后的數據要么不能存入數據庫,要么只能存入前10項;如果你想突破這個(gè)限制,你現在必須花錢(qián)購買(mǎi)官方數據版。筆者嘗試了所有數據采集軟件,發(fā)現都一樣!
2、編寫(xiě)自己的ASP采集程序
由于現成的軟件不能免費使用,為了省錢(qián),只能自己寫(xiě)ASP網(wǎng)站data采集程序!以下是程序的代碼,如果你想要免費的采集網(wǎng)站數據,直接運行即可。
二、網(wǎng)站數據采集進(jìn)程
編寫(xiě)ASP網(wǎng)站data采集程序,首先需要抓取遠程網(wǎng)頁(yè)的源碼。微軟serverXMLHTTP組件可以幫你抓取遠程頁(yè)面的二進(jìn)制代碼,然后將代碼轉換成字符,進(jìn)行攔截和替換處理,就可以得到你想要的數據;最后,顯示數據或將其寫(xiě)入數據庫。采集工作完成。
三、如何抓取遠程網(wǎng)頁(yè)?
抓取遠程HTML的二進(jìn)制代碼主要語(yǔ)句如下: 查看全部
自動(dòng)采集編寫(xiě)(
如何抓取遠程網(wǎng)頁(yè)?遠程HTML的二進(jìn)制代碼主要語(yǔ)句)
如何用asp編寫(xiě)網(wǎng)站data采集程序?
引用:如果你想自動(dòng)從網(wǎng)上采集 數據寫(xiě)入本地數據庫,那么看看本文介紹的方法。為了解決這個(gè)問(wèn)題,作者花了三天時(shí)間,終于完成了。下面是完整的ASP代碼,可以讓你隨意存儲來(lái)自互聯(lián)網(wǎng)的數據采集,非常實(shí)用!
一、網(wǎng)站數據采集方法
目前網(wǎng)站data采集的方法主要有兩種,一種是使用現成的軟件,另一種是自己編寫(xiě)采集程序。
1、使用現成的軟件
很多軟件(如網(wǎng)絡(luò )信息采集大師、BK通用信息采集系統等)都可以采集在線(xiàn)數據,只要你去百度、谷歌、“數據< @采集搜索關(guān)鍵詞的“軟件”即可找到,現在這類(lèi)軟件很多,都是用C、DEPHI或VB編寫(xiě)的,一般都提供免費版本給你下載試試。雖然他們也可以采集在線(xiàn)數據,但是采集之后的數據要么不能存入數據庫,要么只能存入前10項;如果你想突破這個(gè)限制,你現在必須花錢(qián)購買(mǎi)官方數據版。筆者嘗試了所有數據采集軟件,發(fā)現都一樣!
2、編寫(xiě)自己的ASP采集程序
由于現成的軟件不能免費使用,為了省錢(qián),只能自己寫(xiě)ASP網(wǎng)站data采集程序!以下是程序的代碼,如果你想要免費的采集網(wǎng)站數據,直接運行即可。
二、網(wǎng)站數據采集進(jìn)程
編寫(xiě)ASP網(wǎng)站data采集程序,首先需要抓取遠程網(wǎng)頁(yè)的源碼。微軟serverXMLHTTP組件可以幫你抓取遠程頁(yè)面的二進(jìn)制代碼,然后將代碼轉換成字符,進(jìn)行攔截和替換處理,就可以得到你想要的數據;最后,顯示數據或將其寫(xiě)入數據庫。采集工作完成。
三、如何抓取遠程網(wǎng)頁(yè)?
抓取遠程HTML的二進(jìn)制代碼主要語(yǔ)句如下:
自動(dòng)采集編寫(xiě)(IT圈內巡檢日志(一):人工巡檢的制勝法寶)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2021-12-15 08:09
前言:先寫(xiě)
如果只檢查一兩個(gè)庫,則無(wú)需使用此方法。這種方式適用于獲取大量的檢測日志(比如使用腳本從服務(wù)器采集更多的服務(wù)器檢測日志信息),一般我們需要一份拷貝來(lái)寫(xiě)報告,其中的內容檢查日志需要填詞然后分析,真的很累。
一、前言:還需要人工檢查嗎?
說(shuō)到檢驗,很多人嗤之以鼻:現在監控產(chǎn)品遍布全球,比如Zabbix、Prometheus、Graphite等,還需要檢驗嗎?
答案是肯定的,更何況每個(gè)監控產(chǎn)品都有運維盲點(diǎn)。從知識庫的使用來(lái)看,監控產(chǎn)品還是不能替代人工巡檢的一些經(jīng)驗(當然,未來(lái)可能很快會(huì )被替代,但不知道什么時(shí)候)。當不規則的、異常的零星字符經(jīng)過(guò)一個(gè)運維人員身邊時(shí),他敏銳的鬢角被拉長(cháng),眉毛揚起,大腦快速檢索自己的知識庫,用一個(gè)可能只有1%相似度的對比成功率,第一時(shí)間確定異常的基本原因,這已經(jīng)是IT圈最常見(jiàn)的場(chǎng)景了。所以,必須強調的是,人工檢查仍然是保證系統穩定性的最關(guān)鍵手段之一。在日常監控的基礎上,保持一定的人工巡檢頻率,是保證穩定運行的法寶。
二、以前的檢驗報告怎么寫(xiě)
一般流程是這樣的:
第一步:進(jìn)入用戶(hù)系統采集信息。通常通過(guò)腳本、自動(dòng)化采集和少量的手工勞動(dòng)采集來(lái)完成。采集 腳本(或程序)是每個(gè)公司的秘密武器。他們檢查同一個(gè)對象。90%的企業(yè)采集擁有相同的信息,剩下的10%是他們的“內部信息”。畢竟在一個(gè)專(zhuān)業(yè)修煉多年,掌握一些“核心技術(shù)”是理所當然的。
第二步:根據用戶(hù)系統分類(lèi)或機器分類(lèi),各系統按一定格式出具檢測報告。
上報是運維人員最頭疼的事。比如用戶(hù)數據庫系統有上百套,每套報表都要下發(fā)。從采集的日志文件,Ctrl+C,Ctrl+V,我把原來(lái)的日志采集復制到了檢查報告中,非常不爽和痛苦。另外,采集的原木密密麻麻,久了眼睛不舒服。
三、Python 幫忙寫(xiě)報告
大概的概念:
按照指定格式到客戶(hù)端服務(wù)器上的采集日志(分隔符可自定義),將日志下載到本地,放到指定目錄下,運行python程序自動(dòng)生成word檢測報告。
它具有以下特點(diǎn):
1、 批量讀取巡檢日志文件,每個(gè)日志文件生成一個(gè)word文件,從日志文件名中截取word文件名。
2、 可以先填寫(xiě)檢查意見(jiàn)
3、 還是需要打開(kāi)文檔,手動(dòng)填寫(xiě)其他意見(jiàn)(畢竟這些意見(jiàn)是我們的財富,當然如果知識庫功能用得好,就省略了)。
安裝python,安裝pip,然后安裝pip install python-docx,省略。
第一步:導入包:
import re # 正則表達式使用
from docx import Document #word 文檔使用
import os #用于遍歷目錄
從 docx.oxml.ns 導入 nsdecls #word 樣式
from docx.oxml import parse_xml # 文字樣式
步驟 2:定義四個(gè)函數。第一個(gè)函數:數字大小寫(xiě)轉換函數:num_to_char
該函數主要用于將阿拉伯數字轉換為中文大寫(xiě)。例如,如果是一級標題,則使用“一、patrol content”,這是相對于“1、patrol content”的標準寫(xiě)法。
代碼顯示如下:
第二個(gè)函數:get_title函數
這個(gè)功能就是檢驗項目的“標題功能”。例如,“檢查文件系統”就是“主機文件系統檢查”。畢竟我們不是歪的,標題應該還是中文的。
第三個(gè)函數:get_knowledge知識庫函數
該函數為知識庫函數,即當確定采集的結果存在一定問(wèn)題時(shí),利用知識庫輸出初步分析結果。其實(shí)對于動(dòng)態(tài)比較和各種相似度分析,python是很擅長(cháng)的,這里只是一個(gè)函數展示。
第四個(gè)函數:list_dir
該函數用于獲取指定目錄下的所有特定文件。比如這里指定的check*.log格式的文件就是要處理的文件。
因為python代碼有嚴格的縮進(jìn)限制,所有截圖都是給大家看的。部分代碼源碼網(wǎng)絡(luò )。
源碼:由于編輯器的原因,以下可復現的代碼沒(méi)有出現縮進(jìn),請參考圖片:
第一個(gè)函數源碼(參考):
def num_to_char(num):
"""數字轉中文"""
數量 = str(數量)
new_str = ""
num_dict = {"0": u"0", "1": u"one", "2": u"二", "3": u"三", "4": u"四", "5 ": u"五", "6": u"六", "7": u"七", "8": u"八",
"9": 你"九"}
列表編號 = 列表(編號)
# 打?。斜砭幪枺?br /> 舒 = []
對于列表編號中的 i:
# 打?。╪um_dict[i])
shu.append(num_dict[i])
new_str = “”.join(shu)
# 打?。╪ew_str)
返回 new_str
第二個(gè)函數的源碼(參考):
def get_title(flag_fg):# flag_fg是傳入的分隔段,其實(shí)就是英文標題
如果在 flag_fg 中“檢查文件系統”:
xj_title_hs ='主機文件系統檢查'
elif'Check CPU &MEM' in flag_fg:
xj_title_hs ='CPU,內存檢查'
elif'Check ETH' 在 flag_fg 中:
xj_title_hs ='網(wǎng)卡狀態(tài)檢查'
elif'檢查 /var/log/message' 在 flag_fg 中:
xj_title_hs ='主機日志檢查'
elif'檢查transparent_hugepage'在flag_fg:
xj_title_hs ='LINUX系統透明大頁(yè)面檢查'
elif'Check nr_hugepages' 在 flag_fg 中:
xj_title_hs ='Linux系統大頁(yè)面打開(kāi)狀態(tài)檢查'
elif'檢查內存信息'在 flag_fg 中:
xj_title_hs ='PLNOCHECK'
###...
別的:
xj_title_hs = flag_fg #防止無(wú)休止的英文標題很重要
返回 xj_title_hs
第三個(gè)函數源碼(參考):
def get_knowledge(str_input):
str_output = [] # 如果什么都沒(méi)有發(fā)現,首先輸出和檢查是正常的。
str_output_text='檢查正常'
如果在 str_input 中“[always] madvise never”:
str_output = ['Linux 沒(méi)有關(guān)閉透明大頁(yè)面。根據ORACLE安裝要求,應該關(guān)閉透明大頁(yè)面,提高ORACLE內存和IO讀寫(xiě)性能','1111111']
elif'always madvise [never]' 在 str_input 中:
str_output = ['檢查正常:Linux 已關(guān)閉透明大頁(yè)面','000000']
別的:
str_output = ['檢查正常','000000']
返回 str_output
#這個(gè)例子是靜態(tài)比較。其實(shí)就是進(jìn)行動(dòng)態(tài)比較和各種相似度分析。Python非常擅長(cháng)
#知識庫分析,應該能夠區分正常檢查結果和異常檢查結果。本例中'000000'表示正常,'1111111'表示異常
第四個(gè)函數源碼(參考):
def list_dir(file_dir):
dir_list = os.listdir(file_dir)
file_r = []
對于 dir_list 中的 cur_file:
# 準確獲取一個(gè)txt的位置,并使用字符串拼接
路徑 = os.path.join(file_dir, cur_file)
如果 cur_file.startswith("check") & path.endswith(".log"):
file_r.append(路徑)
返回文件_r
后續:主要功能介紹。主要功能實(shí)現文件讀取、文件切分、詞表操作等,是實(shí)現檢查日志自動(dòng)生成詞文件的主要部門(mén)。 查看全部
自動(dòng)采集編寫(xiě)(IT圈內巡檢日志(一):人工巡檢的制勝法寶)
前言:先寫(xiě)
如果只檢查一兩個(gè)庫,則無(wú)需使用此方法。這種方式適用于獲取大量的檢測日志(比如使用腳本從服務(wù)器采集更多的服務(wù)器檢測日志信息),一般我們需要一份拷貝來(lái)寫(xiě)報告,其中的內容檢查日志需要填詞然后分析,真的很累。
一、前言:還需要人工檢查嗎?
說(shuō)到檢驗,很多人嗤之以鼻:現在監控產(chǎn)品遍布全球,比如Zabbix、Prometheus、Graphite等,還需要檢驗嗎?
答案是肯定的,更何況每個(gè)監控產(chǎn)品都有運維盲點(diǎn)。從知識庫的使用來(lái)看,監控產(chǎn)品還是不能替代人工巡檢的一些經(jīng)驗(當然,未來(lái)可能很快會(huì )被替代,但不知道什么時(shí)候)。當不規則的、異常的零星字符經(jīng)過(guò)一個(gè)運維人員身邊時(shí),他敏銳的鬢角被拉長(cháng),眉毛揚起,大腦快速檢索自己的知識庫,用一個(gè)可能只有1%相似度的對比成功率,第一時(shí)間確定異常的基本原因,這已經(jīng)是IT圈最常見(jiàn)的場(chǎng)景了。所以,必須強調的是,人工檢查仍然是保證系統穩定性的最關(guān)鍵手段之一。在日常監控的基礎上,保持一定的人工巡檢頻率,是保證穩定運行的法寶。
二、以前的檢驗報告怎么寫(xiě)
一般流程是這樣的:
第一步:進(jìn)入用戶(hù)系統采集信息。通常通過(guò)腳本、自動(dòng)化采集和少量的手工勞動(dòng)采集來(lái)完成。采集 腳本(或程序)是每個(gè)公司的秘密武器。他們檢查同一個(gè)對象。90%的企業(yè)采集擁有相同的信息,剩下的10%是他們的“內部信息”。畢竟在一個(gè)專(zhuān)業(yè)修煉多年,掌握一些“核心技術(shù)”是理所當然的。
第二步:根據用戶(hù)系統分類(lèi)或機器分類(lèi),各系統按一定格式出具檢測報告。
上報是運維人員最頭疼的事。比如用戶(hù)數據庫系統有上百套,每套報表都要下發(fā)。從采集的日志文件,Ctrl+C,Ctrl+V,我把原來(lái)的日志采集復制到了檢查報告中,非常不爽和痛苦。另外,采集的原木密密麻麻,久了眼睛不舒服。
三、Python 幫忙寫(xiě)報告
大概的概念:
按照指定格式到客戶(hù)端服務(wù)器上的采集日志(分隔符可自定義),將日志下載到本地,放到指定目錄下,運行python程序自動(dòng)生成word檢測報告。
它具有以下特點(diǎn):
1、 批量讀取巡檢日志文件,每個(gè)日志文件生成一個(gè)word文件,從日志文件名中截取word文件名。
2、 可以先填寫(xiě)檢查意見(jiàn)
3、 還是需要打開(kāi)文檔,手動(dòng)填寫(xiě)其他意見(jiàn)(畢竟這些意見(jiàn)是我們的財富,當然如果知識庫功能用得好,就省略了)。
安裝python,安裝pip,然后安裝pip install python-docx,省略。
第一步:導入包:
import re # 正則表達式使用
from docx import Document #word 文檔使用
import os #用于遍歷目錄
從 docx.oxml.ns 導入 nsdecls #word 樣式
from docx.oxml import parse_xml # 文字樣式
步驟 2:定義四個(gè)函數。第一個(gè)函數:數字大小寫(xiě)轉換函數:num_to_char
該函數主要用于將阿拉伯數字轉換為中文大寫(xiě)。例如,如果是一級標題,則使用“一、patrol content”,這是相對于“1、patrol content”的標準寫(xiě)法。
代碼顯示如下:

第二個(gè)函數:get_title函數
這個(gè)功能就是檢驗項目的“標題功能”。例如,“檢查文件系統”就是“主機文件系統檢查”。畢竟我們不是歪的,標題應該還是中文的。

第三個(gè)函數:get_knowledge知識庫函數
該函數為知識庫函數,即當確定采集的結果存在一定問(wèn)題時(shí),利用知識庫輸出初步分析結果。其實(shí)對于動(dòng)態(tài)比較和各種相似度分析,python是很擅長(cháng)的,這里只是一個(gè)函數展示。

第四個(gè)函數:list_dir
該函數用于獲取指定目錄下的所有特定文件。比如這里指定的check*.log格式的文件就是要處理的文件。

因為python代碼有嚴格的縮進(jìn)限制,所有截圖都是給大家看的。部分代碼源碼網(wǎng)絡(luò )。
源碼:由于編輯器的原因,以下可復現的代碼沒(méi)有出現縮進(jìn),請參考圖片:
第一個(gè)函數源碼(參考):
def num_to_char(num):
"""數字轉中文"""
數量 = str(數量)
new_str = ""
num_dict = {"0": u"0", "1": u"one", "2": u"二", "3": u"三", "4": u"四", "5 ": u"五", "6": u"六", "7": u"七", "8": u"八",
"9": 你"九"}
列表編號 = 列表(編號)
# 打?。斜砭幪枺?br /> 舒 = []
對于列表編號中的 i:
# 打?。╪um_dict[i])
shu.append(num_dict[i])
new_str = “”.join(shu)
# 打?。╪ew_str)
返回 new_str
第二個(gè)函數的源碼(參考):
def get_title(flag_fg):# flag_fg是傳入的分隔段,其實(shí)就是英文標題
如果在 flag_fg 中“檢查文件系統”:
xj_title_hs ='主機文件系統檢查'
elif'Check CPU &MEM' in flag_fg:
xj_title_hs ='CPU,內存檢查'
elif'Check ETH' 在 flag_fg 中:
xj_title_hs ='網(wǎng)卡狀態(tài)檢查'
elif'檢查 /var/log/message' 在 flag_fg 中:
xj_title_hs ='主機日志檢查'
elif'檢查transparent_hugepage'在flag_fg:
xj_title_hs ='LINUX系統透明大頁(yè)面檢查'
elif'Check nr_hugepages' 在 flag_fg 中:
xj_title_hs ='Linux系統大頁(yè)面打開(kāi)狀態(tài)檢查'
elif'檢查內存信息'在 flag_fg 中:
xj_title_hs ='PLNOCHECK'
###...
別的:
xj_title_hs = flag_fg #防止無(wú)休止的英文標題很重要
返回 xj_title_hs
第三個(gè)函數源碼(參考):
def get_knowledge(str_input):
str_output = [] # 如果什么都沒(méi)有發(fā)現,首先輸出和檢查是正常的。
str_output_text='檢查正常'
如果在 str_input 中“[always] madvise never”:
str_output = ['Linux 沒(méi)有關(guān)閉透明大頁(yè)面。根據ORACLE安裝要求,應該關(guān)閉透明大頁(yè)面,提高ORACLE內存和IO讀寫(xiě)性能','1111111']
elif'always madvise [never]' 在 str_input 中:
str_output = ['檢查正常:Linux 已關(guān)閉透明大頁(yè)面','000000']
別的:
str_output = ['檢查正常','000000']
返回 str_output
#這個(gè)例子是靜態(tài)比較。其實(shí)就是進(jìn)行動(dòng)態(tài)比較和各種相似度分析。Python非常擅長(cháng)
#知識庫分析,應該能夠區分正常檢查結果和異常檢查結果。本例中'000000'表示正常,'1111111'表示異常
第四個(gè)函數源碼(參考):
def list_dir(file_dir):
dir_list = os.listdir(file_dir)
file_r = []
對于 dir_list 中的 cur_file:
# 準確獲取一個(gè)txt的位置,并使用字符串拼接
路徑 = os.path.join(file_dir, cur_file)
如果 cur_file.startswith("check") & path.endswith(".log"):
file_r.append(路徑)
返回文件_r
后續:主要功能介紹。主要功能實(shí)現文件讀取、文件切分、詞表操作等,是實(shí)現檢查日志自動(dòng)生成詞文件的主要部門(mén)。
自動(dòng)采集編寫(xiě)( 出售友情鏈接網(wǎng)站收錄上1000基本你在友情鏈接交易平臺鏈是沒(méi)問(wèn)題了)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 132 次瀏覽 ? 2021-12-12 18:07
出售友情鏈接網(wǎng)站收錄上1000基本你在友情鏈接交易平臺鏈是沒(méi)問(wèn)題了)
用戶(hù)演示站:
源碼使用環(huán)境
支持環(huán)境:WindowsnuxPHP5.3/4/5/67.1mysql5.
推薦環(huán)境:linuxphp7.1mysql5.6
源代碼功能詳情
1、內置大量?jì)热?,安裝后可省時(shí)省力;
2、內置高效采集插件,每天自動(dòng)采集一次(間隔可自行修改),真正無(wú)人值守;
3、7 內置 采集 規則;
4、內置緩存插件,減輕前端訪(fǎng)問(wèn)壓力;
5、網(wǎng)站管理簡(jiǎn)單快捷,后臺基本可以修改前端顯示信息,無(wú)需代碼;
6、程序完全開(kāi)源,無(wú)任何加密,不定期提供升級;
7、采用前端HTML5 CSS3響應式布局,兼容多終端(PC手機和平板),數據同步,管理方便;
8、采集規則失效不用擔心,我們有強大的技術(shù)團隊,會(huì )提供升級服務(wù)的規則;
9、圖片默認使用遠程地址,節省磁盤(pán)空間,可以在本地設置和保存。
源碼適合人群
1、上班族
白天上班,晚上休息。這個(gè)程序滿(mǎn)足你。安裝完成后配置無(wú)誤即可坐等升級網(wǎng)站,真正無(wú)人值守。
2、做站群
有些人有幾百個(gè)站,要花錢(qián)招人。最好設置一個(gè)無(wú)人值守的采集站,這樣既省時(shí)又省錢(qián)。
源代碼盈利方法
1、廣告聯(lián)盟/網(wǎng)站廣告/淘客
說(shuō)說(shuō)吧,它需要流量上來(lái)。
2、出售友情鏈接
網(wǎng)站收錄多達1000個(gè)基礎,你在友情鏈接交易平臺上賣(mài)朋友沒(méi)問(wèn)題。
3、銷(xiāo)售網(wǎng)站二級目錄
網(wǎng)站收錄好吧,有些人只需要收錄,他們自然會(huì )找到你。
4、賣(mài)站
網(wǎng)站收錄上去賣(mài)一個(gè)5、600 沒(méi)問(wèn)題,重量上來(lái)賣(mài)多。
程序安裝文檔
詳見(jiàn)源碼中付費安裝文檔 查看全部
自動(dòng)采集編寫(xiě)(
出售友情鏈接網(wǎng)站收錄上1000基本你在友情鏈接交易平臺鏈是沒(méi)問(wèn)題了)


用戶(hù)演示站:
源碼使用環(huán)境
支持環(huán)境:WindowsnuxPHP5.3/4/5/67.1mysql5.
推薦環(huán)境:linuxphp7.1mysql5.6
源代碼功能詳情
1、內置大量?jì)热?,安裝后可省時(shí)省力;
2、內置高效采集插件,每天自動(dòng)采集一次(間隔可自行修改),真正無(wú)人值守;
3、7 內置 采集 規則;
4、內置緩存插件,減輕前端訪(fǎng)問(wèn)壓力;
5、網(wǎng)站管理簡(jiǎn)單快捷,后臺基本可以修改前端顯示信息,無(wú)需代碼;
6、程序完全開(kāi)源,無(wú)任何加密,不定期提供升級;
7、采用前端HTML5 CSS3響應式布局,兼容多終端(PC手機和平板),數據同步,管理方便;
8、采集規則失效不用擔心,我們有強大的技術(shù)團隊,會(huì )提供升級服務(wù)的規則;
9、圖片默認使用遠程地址,節省磁盤(pán)空間,可以在本地設置和保存。
源碼適合人群
1、上班族
白天上班,晚上休息。這個(gè)程序滿(mǎn)足你。安裝完成后配置無(wú)誤即可坐等升級網(wǎng)站,真正無(wú)人值守。
2、做站群
有些人有幾百個(gè)站,要花錢(qián)招人。最好設置一個(gè)無(wú)人值守的采集站,這樣既省時(shí)又省錢(qián)。
源代碼盈利方法
1、廣告聯(lián)盟/網(wǎng)站廣告/淘客
說(shuō)說(shuō)吧,它需要流量上來(lái)。
2、出售友情鏈接
網(wǎng)站收錄多達1000個(gè)基礎,你在友情鏈接交易平臺上賣(mài)朋友沒(méi)問(wèn)題。
3、銷(xiāo)售網(wǎng)站二級目錄
網(wǎng)站收錄好吧,有些人只需要收錄,他們自然會(huì )找到你。
4、賣(mài)站
網(wǎng)站收錄上去賣(mài)一個(gè)5、600 沒(méi)問(wèn)題,重量上來(lái)賣(mài)多。
程序安裝文檔
詳見(jiàn)源碼中付費安裝文檔
自動(dòng)采集編寫(xiě)(自動(dòng)采集腳本1.利用pythonexplorer調用githubgithub安裝python模塊)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 133 次瀏覽 ? 2021-12-12 01:01
自動(dòng)采集編寫(xiě)腳本1.利用pythonexplorer調用github安裝python模塊2.如何下載github-square/python:gitclone:操作系統(windows/mac)執行:pipinstallpython-pipmodule版本2.1安裝完成后,記得設置路徑path環(huán)境變量,然后python安裝路徑在“\python\scripts”:cd$path$pipinstallgit2.2是個(gè)坑。
我遇到的git2.3已經(jīng)好了,但是復現時(shí)就出錯了,各位自己理解...2.3.1為什么能復現,但就是不知道為什么不能復現,后來(lái)想起,是命令行那邊的問(wèn)題,因為有可能那邊有錯,正好被轉發(fā)了,然后就復現了,但是無(wú)法打印出cmd的內容2.4這種情況,可以放棄python,用其他語(yǔ)言去驗證的,沒(méi)有這么蛋疼,或者去看python編譯器的幫助文檔2.5最好多問(wèn)一下相關(guān)人員。
必須到不同的sdlds版本下驗證,
用python插件k-lab查看目錄結構,
如果環(huán)境都跟python版本一樣的話(huà),看下python的pdb環(huán)境變量配置是否正確,
python2的話(huà)將/usr/local/bin/替換成/usr/local/bin/python2#python3的話(huà)將/usr/local/bin/替換成/usr/local/bin/python3 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集腳本1.利用pythonexplorer調用githubgithub安裝python模塊)
自動(dòng)采集編寫(xiě)腳本1.利用pythonexplorer調用github安裝python模塊2.如何下載github-square/python:gitclone:操作系統(windows/mac)執行:pipinstallpython-pipmodule版本2.1安裝完成后,記得設置路徑path環(huán)境變量,然后python安裝路徑在“\python\scripts”:cd$path$pipinstallgit2.2是個(gè)坑。
我遇到的git2.3已經(jīng)好了,但是復現時(shí)就出錯了,各位自己理解...2.3.1為什么能復現,但就是不知道為什么不能復現,后來(lái)想起,是命令行那邊的問(wèn)題,因為有可能那邊有錯,正好被轉發(fā)了,然后就復現了,但是無(wú)法打印出cmd的內容2.4這種情況,可以放棄python,用其他語(yǔ)言去驗證的,沒(méi)有這么蛋疼,或者去看python編譯器的幫助文檔2.5最好多問(wèn)一下相關(guān)人員。
必須到不同的sdlds版本下驗證,
用python插件k-lab查看目錄結構,
如果環(huán)境都跟python版本一樣的話(huà),看下python的pdb環(huán)境變量配置是否正確,
python2的話(huà)將/usr/local/bin/替換成/usr/local/bin/python2#python3的話(huà)將/usr/local/bin/替換成/usr/local/bin/python3
自動(dòng)采集編寫(xiě)( 這是網(wǎng)站源碼制作的電子書(shū)網(wǎng)站版面:網(wǎng)上在線(xiàn)報名(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 138 次瀏覽 ? 2021-12-10 12:11
這是網(wǎng)站源碼制作的電子書(shū)網(wǎng)站版面:網(wǎng)上在線(xiàn)報名(組圖))
具有自動(dòng)功能的響應式電子書(shū)采集網(wǎng)站源代碼
源碼介紹
這是一個(gè)帶有自動(dòng)采集功能的電子書(shū)網(wǎng)站源代碼。用本源代碼制作的電子書(shū)網(wǎng)站具有響應功能,可以適配電腦和手機。瀏覽。源碼安裝好后就可以后臺發(fā)布數據采集。
以下是用電子書(shū)網(wǎng)站的源代碼制作的電子書(shū)網(wǎng)站版面:
源代碼下載
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼,購買(mǎi)后請點(diǎn)擊下方下載!
源碼安裝方法下載響應式電子書(shū)網(wǎng)站源碼;解壓壓縮包,獲取源碼文件夾,通過(guò)FTP軟件上傳到自己的網(wǎng)站空間根目錄;使用網(wǎng)站域名/安裝路徑安裝源碼;安裝后使用網(wǎng)站域名/admin登錄網(wǎng)站后臺。
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼主色調,兼容IE、FF、Opera、Safari、chrome等瀏覽器,手機WAP布局,源碼代碼操作需要服務(wù)器環(huán)境為php5.3及以上,mysql數據庫。
購買(mǎi)帶有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源價(jià):¥160
什么是網(wǎng)站源代碼
網(wǎng)站 源碼是將網(wǎng)站程序、網(wǎng)站模板、網(wǎng)站后臺管理、網(wǎng)站數據庫數據打包在一起。用戶(hù)購買(mǎi)網(wǎng)站源碼后,只需直接上傳到網(wǎng)站空間,即可制作并演示網(wǎng)站一模一板網(wǎng)站。
上一課:在線(xiàn)登記管理系統通用源碼 下一課:適合房產(chǎn)中介做的源碼網(wǎng)站
發(fā)布:學(xué)做網(wǎng)站論壇最后更新:2021-11-27 瀏覽次數:115504次
學(xué)會(huì )做網(wǎng)站論壇致力于打造網(wǎng)站在線(xiàn)培訓誠信平臺,讓零基礎學(xué)員學(xué)習做網(wǎng)站,最終可以自主搭建網(wǎng)站.
通過(guò)原創(chuàng )建站教程+講師在線(xiàn)輔導學(xué)習做網(wǎng)站論壇搭建培訓,對各種網(wǎng)站制作方法的講解非常詳細,哪怕是零基礎初學(xué)者可以看懂了就學(xué)會(huì )了。 查看全部
自動(dòng)采集編寫(xiě)(
這是網(wǎng)站源碼制作的電子書(shū)網(wǎng)站版面:網(wǎng)上在線(xiàn)報名(組圖))
具有自動(dòng)功能的響應式電子書(shū)采集網(wǎng)站源代碼
源碼介紹
這是一個(gè)帶有自動(dòng)采集功能的電子書(shū)網(wǎng)站源代碼。用本源代碼制作的電子書(shū)網(wǎng)站具有響應功能,可以適配電腦和手機。瀏覽。源碼安裝好后就可以后臺發(fā)布數據采集。
以下是用電子書(shū)網(wǎng)站的源代碼制作的電子書(shū)網(wǎng)站版面:
https://www.xuewangzhan.net/wp ... 7.jpg 768w" />源代碼下載
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼,購買(mǎi)后請點(diǎn)擊下方下載!
源碼安裝方法下載響應式電子書(shū)網(wǎng)站源碼;解壓壓縮包,獲取源碼文件夾,通過(guò)FTP軟件上傳到自己的網(wǎng)站空間根目錄;使用網(wǎng)站域名/安裝路徑安裝源碼;安裝后使用網(wǎng)站域名/admin登錄網(wǎng)站后臺。
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼主色調,兼容IE、FF、Opera、Safari、chrome等瀏覽器,手機WAP布局,源碼代碼操作需要服務(wù)器環(huán)境為php5.3及以上,mysql數據庫。
購買(mǎi)帶有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源價(jià):¥160
什么是網(wǎng)站源代碼
網(wǎng)站 源碼是將網(wǎng)站程序、網(wǎng)站模板、網(wǎng)站后臺管理、網(wǎng)站數據庫數據打包在一起。用戶(hù)購買(mǎi)網(wǎng)站源碼后,只需直接上傳到網(wǎng)站空間,即可制作并演示網(wǎng)站一模一板網(wǎng)站。
上一課:在線(xiàn)登記管理系統通用源碼 下一課:適合房產(chǎn)中介做的源碼網(wǎng)站
發(fā)布:學(xué)做網(wǎng)站論壇最后更新:2021-11-27 瀏覽次數:115504次
學(xué)會(huì )做網(wǎng)站論壇致力于打造網(wǎng)站在線(xiàn)培訓誠信平臺,讓零基礎學(xué)員學(xué)習做網(wǎng)站,最終可以自主搭建網(wǎng)站.
通過(guò)原創(chuàng )建站教程+講師在線(xiàn)輔導學(xué)習做網(wǎng)站論壇搭建培訓,對各種網(wǎng)站制作方法的講解非常詳細,哪怕是零基礎初學(xué)者可以看懂了就學(xué)會(huì )了。
自動(dòng)采集編寫(xiě)(神策Android全埋點(diǎn)插件的含義及含義插件介紹)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 209 次瀏覽 ? 2021-12-10 08:00
一、前言
在上一篇文章《神測Android全插件介紹》中,我們了解到神測Android插件其實(shí)就是一個(gè)自定義的Gradle插件。Gradle 是一個(gè)專(zhuān)注于靈活性和性能的開(kāi)源自動(dòng)化構建工具,插件的作用是打包模塊化、可重用的構建邏輯。您可以通過(guò)插件實(shí)現特定的邏輯,并打包分享給他人。例如,神測Android全埋點(diǎn)插件在編譯時(shí)利用該插件處理特定功能,從而實(shí)現控件點(diǎn)擊和Fragment頁(yè)面瀏覽的全埋點(diǎn)采集。
在本文中,我們將首先介紹Gradle 的基礎知識,然后舉例說(shuō)明如何實(shí)現自定義Gradle 插件。這里需要注意的是,文章使用./gradlew來(lái)執行Gradle命令,如果你是Windows用戶(hù),需要將它改成gradlew.bat。
二、Gradle 基礎知識
Gradle 有兩個(gè)重要的概念:Project 和 Task。本節將介紹它們各自的功能以及它們之間的關(guān)系。
2.1 項目介紹
項目是與 Gradle 交互中最重要的 API。我們可以通過(guò)Android Studio的項目結構來(lái)理解Project的含義,如圖2-1所示:
圖2-1 Android Studio 項目結構圖
圖2-1是編寫(xiě)過(guò)程中用到的一個(gè)項目(名為BlogDemo),收錄兩個(gè)Module,app和plugin。在這里,“Project”和“Module”在構建過(guò)程中都會(huì )被Gradle抽象為Project對象。他們的主要關(guān)系是:
1、Android Studio 結構中的項目相當于一個(gè)父項目,一個(gè)項目中的所有模塊都是父項目的子項目;
2、 每個(gè)Project都會(huì )對應一個(gè)build.gradle配置文件,所以在使用Android Studio創(chuàng )建項目時(shí),根目錄下有一個(gè)build.gradle文件,每個(gè)Module的目錄下都有一個(gè)build . gradle 文件;
3、Gradle 使用 settings.gradle 文件來(lái)構建多個(gè)項目。項目之間的關(guān)系也可以從圖2-1看出。
父Project對象可以獲取所有子Project對象,這樣就可以在父Project對應的build.gradle文件中做一些統一的配置,例如:管理依賴(lài)的Maven中心庫:
...
allprojects {
repositories {
google()
jcenter()
}
}
...
2.2 任務(wù)介紹
Project 將在施工過(guò)程中執行一系列任務(wù)。Task的中文翻譯是“任務(wù)”,它的作用其實(shí)就是抽象出一系列有意義的任務(wù),用Gradle官方的話(huà)說(shuō):每個(gè)任務(wù)執行一些基本的工作。例如:當您點(diǎn)擊 Android Studio 的 Run 按鈕時(shí),Android Studio 將編譯并運行該項目。其實(shí)這個(gè)過(guò)程是通過(guò)執行一系列的Task來(lái)完成的??赡馨ǎ壕幾gJava源代碼的任務(wù)、編譯Android資源的任務(wù)、編譯JNI的任務(wù)、混淆任務(wù)、生成Apk文件的任務(wù)、運行App的任務(wù)等。你還可以在Build中看到實(shí)際運行了哪些任務(wù)Android Studio的輸出,如圖2-2所示:
圖 2-2 Android Studio Build 輸出日志
從圖中右側,我們可以看到Task由兩部分組成:任務(wù)所在的Module名稱(chēng)和任務(wù)名稱(chēng)。在運行Task時(shí),也需要通過(guò)這種方式指定一個(gè)Task。
此外,您可以自定義您自己的任務(wù)。讓我們創(chuàng )建最簡(jiǎn)單的任務(wù):
// add to build.gradle
task hello {
println 'Hello World!'
}
這段代碼的意思是創(chuàng )建一個(gè)名為“hello”的Task。如果想單獨執行Task,可以在A(yíng)ndroid Studio的Terminal中輸入“./gradlew hello”,執行后就可以看到控制臺輸出了。你好世界!”。
三、Gradle 插件構建3.1 插件介紹
Plugin和Task其實(shí)和它們的功能沒(méi)有太大區別。它們都封裝了一些業(yè)務(wù)邏輯。Plugin適用于打包需要復用的編譯邏輯的場(chǎng)景(即模塊化部分編譯邏輯)。您可以自定義 Gradle 插件,實(shí)現必要的邏輯并將其發(fā)布到遠程倉庫或作為本地 JAR 包共享。這樣,以后想再次使用或者分享給別人的時(shí)候,可以直接引用遠程倉庫包或者引用本地JAR包。
最常見(jiàn)的 Plugin 應該是 Android 官方提供的 Android Gradle Plugin??梢栽陧椖恐髂K的build.gradle文件第一行看到:“apply plugin:'com.android.application'”,就是Android Gradle Plugin?!癱om.android.application”指的是插件id,插件的作用是幫你生成一個(gè)可運行的APK文件。
該插件還可以讀取 build.gradle 文件中寫(xiě)入的配置。在main Module的build.gradle文件中會(huì )有一個(gè)名為“android”的block,里面定義了一些屬性,比如App支持的最低系統版本,App的版本號等,大家可以比較一下“ android" android 塊在這里作為數據類(lèi)或基類(lèi),定義的屬性類(lèi)似于類(lèi)成員變量。Android Gradle Plugin 可以在運行時(shí)獲取“android”塊實(shí)例化的對象,然后根據對象的屬性值運行不同的編譯邏輯。
3.2 為獨立項目構建 Gradle 插件
Gradle插件的實(shí)現方式有3種,分別是Build腳本、buildSrc項目和Standalone項目:
1、Build 腳本會(huì )直接在 build.gradle 文件中寫(xiě)入邏輯,Plugin 只對當前 build.gradle 文件可見(jiàn);
2、buildSrc項目就是在rootProjectDir/buildSrc/src/main/java(最后一個(gè)路徑文件夾也可以是groovy或者kotlin,看你用什么語(yǔ)言實(shí)現自定義插件)目錄下寫(xiě)邏輯,Plugin僅對當前項目有效;
3、獨立項目就是把邏輯寫(xiě)在一個(gè)單獨的項目中,可以直接編譯JAR包發(fā)布到遠程倉庫或者本地。
基于寫(xiě)這篇文章的目的,這里主要講解Standalone項目,獨立項目的Gradle插件。
3.2.1 目錄結構分析
一個(gè)獨立項目的Gradle插件的大致結構如圖3-1所示:
圖3-1 Gradle插件項目目錄示意圖
主文件夾分為groovy文件夾和resources文件夾:
其中resources文件夾為固定格式META-INF/gradle-plugins/XXXX.properties,XXXX代表以后使用插件時(shí)需要指定的插件id。
目前Android Studio對Gradle插件開(kāi)發(fā)的支持還不夠好。許多IDE本可以完成的任務(wù)需要我們手動(dòng)完成,例如:
1、Android Studio 不能直接新建 Gradle 插件 Module,只能先新建一個(gè) Java Library 類(lèi)型的 Module,然后刪除多余的文件夾;
2、新類(lèi)默認是一個(gè)新的Java類(lèi)。新的文件名后綴是“.java”。如果要新建一個(gè)Groovy語(yǔ)法類(lèi),需要手動(dòng)新建一個(gè)后綴為“.groovy”的文件,然后添加package、class語(yǔ)句;
3、資源都需要手動(dòng)創(chuàng )建,文件夾名需要仔細拼寫(xiě);
4、 刪除Module的build.gradle所有內容,并添加Gradle插件開(kāi)發(fā)所需的Gradle插件、依賴(lài)等。
3.2.2 編寫(xiě)插件
在編寫(xiě)插件代碼之前,我們需要對build.gradle做一些修改,如下圖:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation gradleApi()
implementation localGroovy()
}
uploadArchives{
repositories.mavenDeployer {
//本地倉庫路徑,以放到項目根目錄下的 repo 的文件夾為例
repository(url: uri('../repo'))
//groupId ,自行定義
pom.groupId = 'com.sensorsdata.myplugin'
//artifactId
pom.artifactId = 'MyPlugin'
//插件版本號
pom.version = '1.0.0'
}
}
這主要分為三個(gè)部分:
1、apply plugin:應用'groovy'插件,因為我們的項目是用Groovy語(yǔ)言開(kāi)發(fā)的,以后發(fā)布插件時(shí)會(huì )用到'maven'插件;
2、dependencies:聲明依賴(lài);
3、uploadArchive:這里是一些maven相關(guān)的配置,包括發(fā)布倉庫的位置,groupId,artifactId,版本號。為了調試方便,位置選擇在項目根目錄下的repo文件夾中。
做好以上準備后,就可以開(kāi)始編寫(xiě)源碼了。Gradle插件需要入口類(lèi)實(shí)現org.gradle.api.Plugin接口,然后在apply方法中實(shí)現自己的邏輯:
package com.sensorsdata.plugin
class MyPlugin implements Plugin{
@Override
void apply(Project project) {
println 'Hello,World!'
}
}
這里的例子中,apply方法是我們整個(gè)Gradle插件的入口方法,類(lèi)似于各種語(yǔ)言的main方法。apply方法的輸入參數類(lèi)型Project在第二節已經(jīng)解釋過(guò)了,這里不再贅述。由于Plugin類(lèi)和Project類(lèi)有很多同名的類(lèi),所以在導入的時(shí)候一定要注意選擇org.gradle.api包下的類(lèi)。
最后還需要做一個(gè)準備:Gradle插件不會(huì )自動(dòng)查找入口類(lèi),而是需要開(kāi)發(fā)者在resources/META-INF/gradle-plugins/XXXX.properties中寫(xiě)入入口類(lèi)的類(lèi)名,內容格式對于“implementation-class=入口類(lèi)的全限定名”,這里示例工程的配置如下:
// com.sensorsdata.plugin.properties
implementation-class=com.sensorsdata.plugin.MyPlugin
3.2.3 發(fā)布插件
插件全部?jì)热輰?xiě)完后,在終端執行
./gradlew uploadArchive
您可以發(fā)布插件。在上一節寫(xiě)的插件的build.gradle文件中,發(fā)布到m??aven倉庫的相關(guān)配置是提前配置好的,所以我們這里執行這個(gè)命令后,項目根目錄下就會(huì )出現repo文件夾,文件夾收錄打包的 JAR 文件。
3.2.4 使用插件
使用插件有兩個(gè)主要步驟: 查看全部
自動(dòng)采集編寫(xiě)(神策Android全埋點(diǎn)插件的含義及含義插件介紹)
一、前言
在上一篇文章《神測Android全插件介紹》中,我們了解到神測Android插件其實(shí)就是一個(gè)自定義的Gradle插件。Gradle 是一個(gè)專(zhuān)注于靈活性和性能的開(kāi)源自動(dòng)化構建工具,插件的作用是打包模塊化、可重用的構建邏輯。您可以通過(guò)插件實(shí)現特定的邏輯,并打包分享給他人。例如,神測Android全埋點(diǎn)插件在編譯時(shí)利用該插件處理特定功能,從而實(shí)現控件點(diǎn)擊和Fragment頁(yè)面瀏覽的全埋點(diǎn)采集。
在本文中,我們將首先介紹Gradle 的基礎知識,然后舉例說(shuō)明如何實(shí)現自定義Gradle 插件。這里需要注意的是,文章使用./gradlew來(lái)執行Gradle命令,如果你是Windows用戶(hù),需要將它改成gradlew.bat。
二、Gradle 基礎知識
Gradle 有兩個(gè)重要的概念:Project 和 Task。本節將介紹它們各自的功能以及它們之間的關(guān)系。
2.1 項目介紹
項目是與 Gradle 交互中最重要的 API。我們可以通過(guò)Android Studio的項目結構來(lái)理解Project的含義,如圖2-1所示:

圖2-1 Android Studio 項目結構圖
圖2-1是編寫(xiě)過(guò)程中用到的一個(gè)項目(名為BlogDemo),收錄兩個(gè)Module,app和plugin。在這里,“Project”和“Module”在構建過(guò)程中都會(huì )被Gradle抽象為Project對象。他們的主要關(guān)系是:
1、Android Studio 結構中的項目相當于一個(gè)父項目,一個(gè)項目中的所有模塊都是父項目的子項目;
2、 每個(gè)Project都會(huì )對應一個(gè)build.gradle配置文件,所以在使用Android Studio創(chuàng )建項目時(shí),根目錄下有一個(gè)build.gradle文件,每個(gè)Module的目錄下都有一個(gè)build . gradle 文件;
3、Gradle 使用 settings.gradle 文件來(lái)構建多個(gè)項目。項目之間的關(guān)系也可以從圖2-1看出。
父Project對象可以獲取所有子Project對象,這樣就可以在父Project對應的build.gradle文件中做一些統一的配置,例如:管理依賴(lài)的Maven中心庫:
...
allprojects {
repositories {
google()
jcenter()
}
}
...
2.2 任務(wù)介紹
Project 將在施工過(guò)程中執行一系列任務(wù)。Task的中文翻譯是“任務(wù)”,它的作用其實(shí)就是抽象出一系列有意義的任務(wù),用Gradle官方的話(huà)說(shuō):每個(gè)任務(wù)執行一些基本的工作。例如:當您點(diǎn)擊 Android Studio 的 Run 按鈕時(shí),Android Studio 將編譯并運行該項目。其實(shí)這個(gè)過(guò)程是通過(guò)執行一系列的Task來(lái)完成的??赡馨ǎ壕幾gJava源代碼的任務(wù)、編譯Android資源的任務(wù)、編譯JNI的任務(wù)、混淆任務(wù)、生成Apk文件的任務(wù)、運行App的任務(wù)等。你還可以在Build中看到實(shí)際運行了哪些任務(wù)Android Studio的輸出,如圖2-2所示:

圖 2-2 Android Studio Build 輸出日志
從圖中右側,我們可以看到Task由兩部分組成:任務(wù)所在的Module名稱(chēng)和任務(wù)名稱(chēng)。在運行Task時(shí),也需要通過(guò)這種方式指定一個(gè)Task。
此外,您可以自定義您自己的任務(wù)。讓我們創(chuàng )建最簡(jiǎn)單的任務(wù):
// add to build.gradle
task hello {
println 'Hello World!'
}
這段代碼的意思是創(chuàng )建一個(gè)名為“hello”的Task。如果想單獨執行Task,可以在A(yíng)ndroid Studio的Terminal中輸入“./gradlew hello”,執行后就可以看到控制臺輸出了。你好世界!”。
三、Gradle 插件構建3.1 插件介紹
Plugin和Task其實(shí)和它們的功能沒(méi)有太大區別。它們都封裝了一些業(yè)務(wù)邏輯。Plugin適用于打包需要復用的編譯邏輯的場(chǎng)景(即模塊化部分編譯邏輯)。您可以自定義 Gradle 插件,實(shí)現必要的邏輯并將其發(fā)布到遠程倉庫或作為本地 JAR 包共享。這樣,以后想再次使用或者分享給別人的時(shí)候,可以直接引用遠程倉庫包或者引用本地JAR包。
最常見(jiàn)的 Plugin 應該是 Android 官方提供的 Android Gradle Plugin??梢栽陧椖恐髂K的build.gradle文件第一行看到:“apply plugin:'com.android.application'”,就是Android Gradle Plugin?!癱om.android.application”指的是插件id,插件的作用是幫你生成一個(gè)可運行的APK文件。
該插件還可以讀取 build.gradle 文件中寫(xiě)入的配置。在main Module的build.gradle文件中會(huì )有一個(gè)名為“android”的block,里面定義了一些屬性,比如App支持的最低系統版本,App的版本號等,大家可以比較一下“ android" android 塊在這里作為數據類(lèi)或基類(lèi),定義的屬性類(lèi)似于類(lèi)成員變量。Android Gradle Plugin 可以在運行時(shí)獲取“android”塊實(shí)例化的對象,然后根據對象的屬性值運行不同的編譯邏輯。
3.2 為獨立項目構建 Gradle 插件
Gradle插件的實(shí)現方式有3種,分別是Build腳本、buildSrc項目和Standalone項目:
1、Build 腳本會(huì )直接在 build.gradle 文件中寫(xiě)入邏輯,Plugin 只對當前 build.gradle 文件可見(jiàn);
2、buildSrc項目就是在rootProjectDir/buildSrc/src/main/java(最后一個(gè)路徑文件夾也可以是groovy或者kotlin,看你用什么語(yǔ)言實(shí)現自定義插件)目錄下寫(xiě)邏輯,Plugin僅對當前項目有效;
3、獨立項目就是把邏輯寫(xiě)在一個(gè)單獨的項目中,可以直接編譯JAR包發(fā)布到遠程倉庫或者本地。
基于寫(xiě)這篇文章的目的,這里主要講解Standalone項目,獨立項目的Gradle插件。
3.2.1 目錄結構分析
一個(gè)獨立項目的Gradle插件的大致結構如圖3-1所示:

圖3-1 Gradle插件項目目錄示意圖
主文件夾分為groovy文件夾和resources文件夾:
其中resources文件夾為固定格式META-INF/gradle-plugins/XXXX.properties,XXXX代表以后使用插件時(shí)需要指定的插件id。
目前Android Studio對Gradle插件開(kāi)發(fā)的支持還不夠好。許多IDE本可以完成的任務(wù)需要我們手動(dòng)完成,例如:
1、Android Studio 不能直接新建 Gradle 插件 Module,只能先新建一個(gè) Java Library 類(lèi)型的 Module,然后刪除多余的文件夾;
2、新類(lèi)默認是一個(gè)新的Java類(lèi)。新的文件名后綴是“.java”。如果要新建一個(gè)Groovy語(yǔ)法類(lèi),需要手動(dòng)新建一個(gè)后綴為“.groovy”的文件,然后添加package、class語(yǔ)句;
3、資源都需要手動(dòng)創(chuàng )建,文件夾名需要仔細拼寫(xiě);
4、 刪除Module的build.gradle所有內容,并添加Gradle插件開(kāi)發(fā)所需的Gradle插件、依賴(lài)等。
3.2.2 編寫(xiě)插件
在編寫(xiě)插件代碼之前,我們需要對build.gradle做一些修改,如下圖:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation gradleApi()
implementation localGroovy()
}
uploadArchives{
repositories.mavenDeployer {
//本地倉庫路徑,以放到項目根目錄下的 repo 的文件夾為例
repository(url: uri('../repo'))
//groupId ,自行定義
pom.groupId = 'com.sensorsdata.myplugin'
//artifactId
pom.artifactId = 'MyPlugin'
//插件版本號
pom.version = '1.0.0'
}
}
這主要分為三個(gè)部分:
1、apply plugin:應用'groovy'插件,因為我們的項目是用Groovy語(yǔ)言開(kāi)發(fā)的,以后發(fā)布插件時(shí)會(huì )用到'maven'插件;
2、dependencies:聲明依賴(lài);
3、uploadArchive:這里是一些maven相關(guān)的配置,包括發(fā)布倉庫的位置,groupId,artifactId,版本號。為了調試方便,位置選擇在項目根目錄下的repo文件夾中。
做好以上準備后,就可以開(kāi)始編寫(xiě)源碼了。Gradle插件需要入口類(lèi)實(shí)現org.gradle.api.Plugin接口,然后在apply方法中實(shí)現自己的邏輯:
package com.sensorsdata.plugin
class MyPlugin implements Plugin{
@Override
void apply(Project project) {
println 'Hello,World!'
}
}
這里的例子中,apply方法是我們整個(gè)Gradle插件的入口方法,類(lèi)似于各種語(yǔ)言的main方法。apply方法的輸入參數類(lèi)型Project在第二節已經(jīng)解釋過(guò)了,這里不再贅述。由于Plugin類(lèi)和Project類(lèi)有很多同名的類(lèi),所以在導入的時(shí)候一定要注意選擇org.gradle.api包下的類(lèi)。
最后還需要做一個(gè)準備:Gradle插件不會(huì )自動(dòng)查找入口類(lèi),而是需要開(kāi)發(fā)者在resources/META-INF/gradle-plugins/XXXX.properties中寫(xiě)入入口類(lèi)的類(lèi)名,內容格式對于“implementation-class=入口類(lèi)的全限定名”,這里示例工程的配置如下:
// com.sensorsdata.plugin.properties
implementation-class=com.sensorsdata.plugin.MyPlugin
3.2.3 發(fā)布插件
插件全部?jì)热輰?xiě)完后,在終端執行
./gradlew uploadArchive
您可以發(fā)布插件。在上一節寫(xiě)的插件的build.gradle文件中,發(fā)布到m??aven倉庫的相關(guān)配置是提前配置好的,所以我們這里執行這個(gè)命令后,項目根目錄下就會(huì )出現repo文件夾,文件夾收錄打包的 JAR 文件。
3.2.4 使用插件
使用插件有兩個(gè)主要步驟:
自動(dòng)采集編寫(xiě)(編程問(wèn)答:只要問(wèn)那邊站長(cháng)要就可以了再說(shuō)采集)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 123 次瀏覽 ? 2022-01-04 10:07
寫(xiě)個(gè)程序自動(dòng)采集VeryCD 標題,很多勵志,很好。來(lái)寫(xiě)個(gè)程序自動(dòng)采集VeryCD標題,很多勵志,很好---------- ----------編程問(wèn)答------- -------------其實(shí)問(wèn)問(wèn)那邊的站長(cháng)就知道了。
再說(shuō)了,采集這個(gè)也麻煩,過(guò)幾天換一個(gè),采集這種變化率很低的東西,不如去人力資源部采集- ----------- --------編程問(wèn)答--------------------up------ ------------- -編程問(wèn)答--------------------哈哈----------- ---------編程問(wèn)答--------------------up---------------- ----編程問(wèn)答----------- ---------幾分鐘換好幾個(gè)---------------- ----編程問(wèn)答------------ --------好吧,想一想,使用HttpWebRequest和HttpWebResponse進(jìn)行頁(yè)面請求和下載,使用常規規則取把之間的數據拿出來(lái),分析一下這個(gè)是不是最新的勵志詞,存入數據庫...
--------------------編程問(wèn)答 --------------------HttpWebRequest 和 HttpWebResponse
發(fā)帖
曲奇餅 查看全部
自動(dòng)采集編寫(xiě)(編程問(wèn)答:只要問(wèn)那邊站長(cháng)要就可以了再說(shuō)采集)
寫(xiě)個(gè)程序自動(dòng)采集VeryCD 標題,很多勵志,很好。來(lái)寫(xiě)個(gè)程序自動(dòng)采集VeryCD標題,很多勵志,很好---------- ----------編程問(wèn)答------- -------------其實(shí)問(wèn)問(wèn)那邊的站長(cháng)就知道了。
再說(shuō)了,采集這個(gè)也麻煩,過(guò)幾天換一個(gè),采集這種變化率很低的東西,不如去人力資源部采集- ----------- --------編程問(wèn)答--------------------up------ ------------- -編程問(wèn)答--------------------哈哈----------- ---------編程問(wèn)答--------------------up---------------- ----編程問(wèn)答----------- ---------幾分鐘換好幾個(gè)---------------- ----編程問(wèn)答------------ --------好吧,想一想,使用HttpWebRequest和HttpWebResponse進(jìn)行頁(yè)面請求和下載,使用常規規則取把之間的數據拿出來(lái),分析一下這個(gè)是不是最新的勵志詞,存入數據庫...
--------------------編程問(wèn)答 --------------------HttpWebRequest 和 HttpWebResponse
發(fā)帖
曲奇餅
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)+equery的方法,你知道嗎?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 120 次瀏覽 ? 2022-01-02 02:01
自動(dòng)采集編寫(xiě)爬蟲(chóng)本網(wǎng)站抓取速度慢,但是大家別灰心哈~我會(huì )繼續努力的,該爭取的還是要爭取,等你看到這篇文章時(shí),title已經(jīng)到了200多個(gè)圖片哦。你需要安裝phantomjs,varphantomjs=require('phantomjs');varhttp=require('http');varurl=http.urlopen();url.readystate=false;獲取圖片下載速度變慢,首先要觀(guān)察圖片列表頁(yè)的頁(yè)面源碼:[1,1,3,200,unkeymap][1,1,3,200,2]發(fā)現下載unkeymap的時(shí)候,下載了19個(gè)圖片,代碼暴露的信息越多,要下載的圖片越多,請求的時(shí)候請求數據也越多,使用phantomjs+equery的方式直接下載并沒(méi)有增加,看來(lái)是抓圖片需要加上http劫持。
來(lái)來(lái)來(lái),這里有一個(gè)phantomjs+equery的方法,現在我們來(lái)試試。equery.parse的結果如下:[1,1,3,19,2]表示我們的ajax請求的時(shí)候加上這個(gè)參數xh_xh_xh_yh_zh_jj_jj_jj_zh_jj_1,ok,下面是調試圖片下載代碼的時(shí)候的地址:[1,1,3,200,2][1,1,3,19,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,45,46,47,47,48,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,180,181,182,183,184,185,186,187,188,189,180,183,184,185,186,187,188,189,181,185,186,187,188,189,182,187,188,189,181,183,184,185。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)+equery的方法,你知道嗎?)
自動(dòng)采集編寫(xiě)爬蟲(chóng)本網(wǎng)站抓取速度慢,但是大家別灰心哈~我會(huì )繼續努力的,該爭取的還是要爭取,等你看到這篇文章時(shí),title已經(jīng)到了200多個(gè)圖片哦。你需要安裝phantomjs,varphantomjs=require('phantomjs');varhttp=require('http');varurl=http.urlopen();url.readystate=false;獲取圖片下載速度變慢,首先要觀(guān)察圖片列表頁(yè)的頁(yè)面源碼:[1,1,3,200,unkeymap][1,1,3,200,2]發(fā)現下載unkeymap的時(shí)候,下載了19個(gè)圖片,代碼暴露的信息越多,要下載的圖片越多,請求的時(shí)候請求數據也越多,使用phantomjs+equery的方式直接下載并沒(méi)有增加,看來(lái)是抓圖片需要加上http劫持。
來(lái)來(lái)來(lái),這里有一個(gè)phantomjs+equery的方法,現在我們來(lái)試試。equery.parse的結果如下:[1,1,3,19,2]表示我們的ajax請求的時(shí)候加上這個(gè)參數xh_xh_xh_yh_zh_jj_jj_jj_zh_jj_1,ok,下面是調試圖片下載代碼的時(shí)候的地址:[1,1,3,200,2][1,1,3,19,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,45,46,47,47,48,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,180,181,182,183,184,185,186,187,188,189,180,183,184,185,186,187,188,189,181,185,186,187,188,189,182,187,188,189,181,183,184,185。
自動(dòng)采集編寫(xiě)(蜂集采集器如何添加采集模塊?(圖)采集方法 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 469 次瀏覽 ? 2021-12-31 17:20
)
BeeJi采集 是一個(gè)全自動(dòng)的 wordpress采集 插件。如果你還沒(méi)有下載,可以到beeJi采集下載頁(yè)面下載。如果要采集,首先要添加采集模塊。本文將介紹如何在風(fēng)集采集器中添加采集模塊!
安裝風(fēng)記采集器后,后臺會(huì )新增一個(gè)名為“飛記”的菜單。依次進(jìn)入Bee Set->采集模塊,點(diǎn)擊“添加文章采集模塊”按鈕新建采集模塊。
需要設置一個(gè)完整的采集模塊:基本信息、列表規則、內容規則。
設置基本信息
基本信息由規則名稱(chēng)和網(wǎng)頁(yè)完整性檢查填寫(xiě),如下圖
規則的名稱(chēng)是必需的。這里我以采集騰訊新聞為例。規則名稱(chēng)中填寫(xiě)騰訊新聞采集。網(wǎng)頁(yè)完整性檢查是為了確保下載的網(wǎng)頁(yè)是完整的,避免采集失敗。一般不需要填寫(xiě),如果發(fā)現很多網(wǎng)頁(yè)在采集時(shí)沒(méi)有采集獲取到內容,那么就需要填寫(xiě)網(wǎng)頁(yè)完整性檢查或者一些標志性的文字在網(wǎng)頁(yè)的末尾。簡(jiǎn)單的說(shuō),一般不填寫(xiě),經(jīng)常出現網(wǎng)頁(yè)采集填寫(xiě)不完整
編輯列表規則
點(diǎn)擊列表規則進(jìn)入列表規則編輯欄。列表規則的作用是采集一些內容頁(yè)面的鏈接供我們跟進(jìn)采集。
以騰訊新聞為例,我們使用chrome打開(kāi)騰訊新聞首頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,打開(kāi)chrome開(kāi)發(fā)者工具(windows按F12或ctrl+shift+i,MAC按cmd+option+i),點(diǎn)擊開(kāi)發(fā)者工具左上角的小箭頭,然后放置鼠標如果要采集的鏈接,可以看到鏈接的區域和格式。
我們找到了列表頁(yè)中鏈接的特征,發(fā)現新聞鏈接都收錄和html。我們可以在URL收錄中寫(xiě)&&html,表示同時(shí)收錄和html。如果我們只需要采集的入口頁(yè)面地址,那么我們可以勾選停止列表獲取,這樣這個(gè)規則就不會(huì )對下一級網(wǎng)頁(yè)生效。在大多數情況下,您不需要填寫(xiě) URL 區域。一般來(lái)說(shuō),URL收錄/不收錄,標題收錄/不收錄足以覆蓋大多數場(chǎng)景。如果場(chǎng)景一定要填URL區,那么這里的URL區就是一個(gè)正則表達式。
最終效果如下圖,請按圖填寫(xiě)你的采集規則
接下來(lái)可以測試鏈接獲取是否正確。點(diǎn)擊爬蟲(chóng)測試,然后填寫(xiě)文章測試地址,在這里填寫(xiě),因為這是我們的入口頁(yè)面,所以級別為0(注意級別從0開(kāi)始,從0級頁(yè)面為1,從1級頁(yè)面得到的地址級為2,以此類(lèi)推...).
填寫(xiě)完成后,點(diǎn)擊爬蟲(chóng)測試,應該可以看到下面得到的鏈接和標題,如下圖。
編輯內容規則
我們最終都需要采集內容,所以?xún)热菀巹t與我們的內容采集有關(guān)。下圖中,內容規則左側為采集的字段名,默認覆蓋wordpress文章的基本信息字段,title為文章title,content為文章內容,Category為文章類(lèi)別,標簽為文章標簽,作者為文章作者。
采集標題:title
標題與h1匹配。系統已為您提供默認值。在大多數情況下,您不需要更改它,只需使用系統默認值即可。如下圖
如果網(wǎng)頁(yè)的標題不是h1,您可以通過(guò)多種方式來(lái)匹配您需要的內容。風(fēng)集支持三種方式:regular、xpath、fixed characters。
采集正文:內容
內容可以采用自動(dòng)獲取文本的方式,可以智能分析網(wǎng)頁(yè)中的文本,自動(dòng)獲取。馮基采集器已經(jīng)把這個(gè)選項默認設置為yes,如下圖:
一般情況下,大部分基于文本的網(wǎng)站都可以使用智能獲取來(lái)抓取文本。如果只能抓取,也可以使用正則,xpath。
如果此時(shí)使用的是regular或者xpath,那么Smart Get Text請選擇No,否則以下規則不會(huì )生效
同理,還需要設置category、tag、author,這里不再贅述。
測試采集
所有規則寫(xiě)好后,我們需要根據規則驗證采集器是否可以正確采集,進(jìn)入測試抓取標簽,填寫(xiě)鏈接和頁(yè)面級別,點(diǎn)擊抓取測試來(lái)查看效果,如下圖:
如果您對采集器的使用有任何疑問(wèn),可以到風(fēng)集的采集交流群(群號可在采集器的關(guān)于我們中找到)進(jìn)行交流。
您可能還喜歡以下內容文章
Bee Set采集器,一個(gè)全自動(dòng)的 wordpress采集插件
imwprobot (bee set) 是一個(gè) wordpress采集 插件。功能是什么? 1.全自動(dòng)無(wú)人值守,支持定時(shí)采集2.可自動(dòng)同步目標站更新3.AI自動(dòng)關(guān)鍵詞,自動(dòng)匯總生成4.@ > 直接發(fā)布到 wordpress,無(wú)需額外的界面支持。 5. 正文圖片和縮略圖可以本地化 6. 每個(gè)任務(wù) 文章 圖片可以設置獨立的水印 7. 采集 到達的內容支持常規和 css 選擇器替代品。 采集哪些站1.新聞資訊站2. 文章范文站< @3. BBS論壇4.@> 博客站5. 哪些資源站和下載站支持采集規則1.正則表達式2.XPath規則3.JQuery選擇器(CSS選擇器)代理支持1.HTTP代理2.Socks5代理哪些主機可以不受環(huán)境限制運行,虛擬主機可以運行蜜蜂設置功能
蜜蜂合集采集器視頻逐字草稿
歡迎來(lái)到蜜蜂套裝采集器,現在和大家分享蜜蜂套裝采集器的教程。接下來(lái)就可以開(kāi)始創(chuàng )建采集任務(wù)了。以lz13為例。添加任務(wù)名稱(chēng)并添加入口地址。入口頁(yè)間隔不需要更改,文本捕獲間隔不需要更改。選擇采集模塊,選擇發(fā)布模塊,選擇草稿,選擇要暫停的任務(wù),然后我們會(huì )選擇測試后自動(dòng)執行。
puretext 是一款純文本 wordpress cms主題,可支持數百萬(wàn)文章
經(jīng)過(guò)幾年的制作,純文字的cms風(fēng)格主題終于要和大家見(jiàn)面了。但是目前還沒(méi)有一個(gè)主題可以支持海量的文章,所以我只能自己做一個(gè)。輕松支持百萬(wàn)文章無(wú)卡,無(wú)論是前臺還是后臺。
Wordpress 小說(shuō)主題 imwpnovels
更強大的wordpress小說(shuō)主題imwpnovels讓創(chuàng )建小說(shuō)網(wǎng)站更容易!小說(shuō)閱讀頁(yè)面支持無(wú)限字體縮放、護眼模式、分頁(yè)模式、靜態(tài)緩存下刷新無(wú)閃爍,用戶(hù)體驗極佳。
蜜蜂套裝采集器快速入門(mén)
這篇文章文章可以幫助您快速入門(mén)“蜜蜂采集器”。如果你剛接觸采集器,我建議你仔細閱讀這篇文章。對你快速上手很有幫助采集器?,F在可以添加任務(wù)了,采集module和release module選擇我們剛剛創(chuàng )建的module,如下圖:
查看全部
自動(dòng)采集編寫(xiě)(蜂集采集器如何添加采集模塊?(圖)采集方法
)
BeeJi采集 是一個(gè)全自動(dòng)的 wordpress采集 插件。如果你還沒(méi)有下載,可以到beeJi采集下載頁(yè)面下載。如果要采集,首先要添加采集模塊。本文將介紹如何在風(fēng)集采集器中添加采集模塊!

安裝風(fēng)記采集器后,后臺會(huì )新增一個(gè)名為“飛記”的菜單。依次進(jìn)入Bee Set->采集模塊,點(diǎn)擊“添加文章采集模塊”按鈕新建采集模塊。
需要設置一個(gè)完整的采集模塊:基本信息、列表規則、內容規則。
設置基本信息
基本信息由規則名稱(chēng)和網(wǎng)頁(yè)完整性檢查填寫(xiě),如下圖
http://www.imwpweb.com/wp-cont ... 4.png 768w, http://www.imwpweb.com/wp-cont ... 9.png 1536w" />規則的名稱(chēng)是必需的。這里我以采集騰訊新聞為例。規則名稱(chēng)中填寫(xiě)騰訊新聞采集。網(wǎng)頁(yè)完整性檢查是為了確保下載的網(wǎng)頁(yè)是完整的,避免采集失敗。一般不需要填寫(xiě),如果發(fā)現很多網(wǎng)頁(yè)在采集時(shí)沒(méi)有采集獲取到內容,那么就需要填寫(xiě)網(wǎng)頁(yè)完整性檢查或者一些標志性的文字在網(wǎng)頁(yè)的末尾。簡(jiǎn)單的說(shuō),一般不填寫(xiě),經(jīng)常出現網(wǎng)頁(yè)采集填寫(xiě)不完整
編輯列表規則
點(diǎn)擊列表規則進(jìn)入列表規則編輯欄。列表規則的作用是采集一些內容頁(yè)面的鏈接供我們跟進(jìn)采集。
以騰訊新聞為例,我們使用chrome打開(kāi)騰訊新聞首頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,打開(kāi)chrome開(kāi)發(fā)者工具(windows按F12或ctrl+shift+i,MAC按cmd+option+i),點(diǎn)擊開(kāi)發(fā)者工具左上角的小箭頭,然后放置鼠標如果要采集的鏈接,可以看到鏈接的區域和格式。
http://www.imwpweb.com/wp-cont ... 7.png 768w, http://www.imwpweb.com/wp-cont ... 4.png 1536w, http://www.imwpweb.com/wp-cont ... 8.png 2048w" />我們找到了列表頁(yè)中鏈接的特征,發(fā)現新聞鏈接都收錄和html。我們可以在URL收錄中寫(xiě)&&html,表示同時(shí)收錄和html。如果我們只需要采集的入口頁(yè)面地址,那么我們可以勾選停止列表獲取,這樣這個(gè)規則就不會(huì )對下一級網(wǎng)頁(yè)生效。在大多數情況下,您不需要填寫(xiě) URL 區域。一般來(lái)說(shuō),URL收錄/不收錄,標題收錄/不收錄足以覆蓋大多數場(chǎng)景。如果場(chǎng)景一定要填URL區,那么這里的URL區就是一個(gè)正則表達式。
最終效果如下圖,請按圖填寫(xiě)你的采集規則
http://www.imwpweb.com/wp-cont ... 9.png 768w, http://www.imwpweb.com/wp-cont ... 8.png 1536w, http://www.imwpweb.com/wp-cont ... 4.png 2048w" />接下來(lái)可以測試鏈接獲取是否正確。點(diǎn)擊爬蟲(chóng)測試,然后填寫(xiě)文章測試地址,在這里填寫(xiě),因為這是我們的入口頁(yè)面,所以級別為0(注意級別從0開(kāi)始,從0級頁(yè)面為1,從1級頁(yè)面得到的地址級為2,以此類(lèi)推...).
填寫(xiě)完成后,點(diǎn)擊爬蟲(chóng)測試,應該可以看到下面得到的鏈接和標題,如下圖。
http://www.imwpweb.com/wp-cont ... 2.png 768w, http://www.imwpweb.com/wp-cont ... 4.png 1536w" />編輯內容規則
我們最終都需要采集內容,所以?xún)热菀巹t與我們的內容采集有關(guān)。下圖中,內容規則左側為采集的字段名,默認覆蓋wordpress文章的基本信息字段,title為文章title,content為文章內容,Category為文章類(lèi)別,標簽為文章標簽,作者為文章作者。
采集標題:title
標題與h1匹配。系統已為您提供默認值。在大多數情況下,您不需要更改它,只需使用系統默認值即可。如下圖
http://www.imwpweb.com/wp-cont ... 2.png 768w, http://www.imwpweb.com/wp-cont ... 4.png 1536w" />如果網(wǎng)頁(yè)的標題不是h1,您可以通過(guò)多種方式來(lái)匹配您需要的內容。風(fēng)集支持三種方式:regular、xpath、fixed characters。
采集正文:內容
內容可以采用自動(dòng)獲取文本的方式,可以智能分析網(wǎng)頁(yè)中的文本,自動(dòng)獲取。馮基采集器已經(jīng)把這個(gè)選項默認設置為yes,如下圖:
http://www.imwpweb.com/wp-cont ... 8.png 768w, http://www.imwpweb.com/wp-cont ... 6.png 1536w, http://www.imwpweb.com/wp-cont ... 1.png 2048w" />一般情況下,大部分基于文本的網(wǎng)站都可以使用智能獲取來(lái)抓取文本。如果只能抓取,也可以使用正則,xpath。
如果此時(shí)使用的是regular或者xpath,那么Smart Get Text請選擇No,否則以下規則不會(huì )生效
同理,還需要設置category、tag、author,這里不再贅述。
測試采集
所有規則寫(xiě)好后,我們需要根據規則驗證采集器是否可以正確采集,進(jìn)入測試抓取標簽,填寫(xiě)鏈接和頁(yè)面級別,點(diǎn)擊抓取測試來(lái)查看效果,如下圖:
http://www.imwpweb.com/wp-cont ... 8.png 768w, http://www.imwpweb.com/wp-cont ... 6.png 1536w, http://www.imwpweb.com/wp-cont ... 1.png 2048w" />如果您對采集器的使用有任何疑問(wèn),可以到風(fēng)集的采集交流群(群號可在采集器的關(guān)于我們中找到)進(jìn)行交流。
您可能還喜歡以下內容文章

Bee Set采集器,一個(gè)全自動(dòng)的 wordpress采集插件
imwprobot (bee set) 是一個(gè) wordpress采集 插件。功能是什么? 1.全自動(dòng)無(wú)人值守,支持定時(shí)采集2.可自動(dòng)同步目標站更新3.AI自動(dòng)關(guān)鍵詞,自動(dòng)匯總生成4.@ > 直接發(fā)布到 wordpress,無(wú)需額外的界面支持。 5. 正文圖片和縮略圖可以本地化 6. 每個(gè)任務(wù) 文章 圖片可以設置獨立的水印 7. 采集 到達的內容支持常規和 css 選擇器替代品。 采集哪些站1.新聞資訊站2. 文章范文站< @3. BBS論壇4.@> 博客站5. 哪些資源站和下載站支持采集規則1.正則表達式2.XPath規則3.JQuery選擇器(CSS選擇器)代理支持1.HTTP代理2.Socks5代理哪些主機可以不受環(huán)境限制運行,虛擬主機可以運行蜜蜂設置功能
蜜蜂合集采集器視頻逐字草稿
歡迎來(lái)到蜜蜂套裝采集器,現在和大家分享蜜蜂套裝采集器的教程。接下來(lái)就可以開(kāi)始創(chuàng )建采集任務(wù)了。以lz13為例。添加任務(wù)名稱(chēng)并添加入口地址。入口頁(yè)間隔不需要更改,文本捕獲間隔不需要更改。選擇采集模塊,選擇發(fā)布模塊,選擇草稿,選擇要暫停的任務(wù),然后我們會(huì )選擇測試后自動(dòng)執行。
puretext 是一款純文本 wordpress cms主題,可支持數百萬(wàn)文章
經(jīng)過(guò)幾年的制作,純文字的cms風(fēng)格主題終于要和大家見(jiàn)面了。但是目前還沒(méi)有一個(gè)主題可以支持海量的文章,所以我只能自己做一個(gè)。輕松支持百萬(wàn)文章無(wú)卡,無(wú)論是前臺還是后臺。

Wordpress 小說(shuō)主題 imwpnovels
更強大的wordpress小說(shuō)主題imwpnovels讓創(chuàng )建小說(shuō)網(wǎng)站更容易!小說(shuō)閱讀頁(yè)面支持無(wú)限字體縮放、護眼模式、分頁(yè)模式、靜態(tài)緩存下刷新無(wú)閃爍,用戶(hù)體驗極佳。
蜜蜂套裝采集器快速入門(mén)
這篇文章文章可以幫助您快速入門(mén)“蜜蜂采集器”。如果你剛接觸采集器,我建議你仔細閱讀這篇文章。對你快速上手很有幫助采集器?,F在可以添加任務(wù)了,采集module和release module選擇我們剛剛創(chuàng )建的module,如下圖:
自動(dòng)采集編寫(xiě)(actions文件夾自動(dòng)化測試框架一步)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 167 次瀏覽 ? 2021-12-30 16:18
這兩天用python2寫(xiě)了一個(gè)自動(dòng)化測試框架,名字叫Auty。它已準備好用于 Web 界面測試。下面是Auty框架的分步搭建過(guò)程——
首先感謝朱博大哥的指教、交流和幫助!
auty文件夾結構介紹
1. actions文件夾:收錄
業(yè)務(wù)相關(guān)的腳本文件,收錄
可復用的方法,可以根據不同的業(yè)務(wù)在actions文件夾下創(chuàng )建不同的業(yè)務(wù)文件夾;
2. 常量文件夾:收錄
常量初始化的python腳本文件。根據業(yè)務(wù)分工,可以創(chuàng )建子文件夾或多個(gè)常量文件;
3. 數據文件夾:收錄
用于測試的數據;
4. lib文件夾:收錄
支持框架運行的python文件;
5. 日志文件夾:收錄
運行測試過(guò)程中產(chǎn)生的日志文件;
6. results文件夾:收錄
測試結果文件;
7. 腳本文件夾:收錄
腳本文件夾和選擇文件夾;
1)scripts 文件夾收錄
測試腳本(可以根據業(yè)務(wù)分為多個(gè)子目錄);
2)selections 文件夾收錄
套件文件(包括需要執行的腳本路徑的集合);
8. utils文件夾:收錄
與業(yè)務(wù)邏輯無(wú)關(guān)的腳本文件,收錄
可復用的方法;
auty文件結構介紹
1. 在 Auty 文件夾下:
1)__init__.py 文件:包結構的必要文件(以下所有涉及可調用腳本的文件夾都需要該文件);
2)config.txt 文件:Auty 框架配置描述文件;
3)recovery.py 文件:垃圾代碼恢復文件(用于恢復由于測試執行過(guò)程中失敗而自動(dòng)刪除失敗的自動(dòng)生成代碼);
4)requirements 文件:收錄
框架需要安裝的python庫信息;
5)setup.py文件:執行腳本安裝需求文件中收錄
的python庫;
6)start.py 文件:執行腳本啟動(dòng)界面自動(dòng)化測試;
2. lib 文件夾:
1)exe_deco.py 文件:收錄
修改腳本運行時(shí)方法的文件;
2)execute_selection.py 文件:收錄
了suite集合下運行腳本方法的文件;
3)generate_html.py文件:收錄
根據生成的csv格式測試結果文件生成html類(lèi)型測試結果文件的方法的文件;
4)generate_result.py文件:收錄
生成csv格式測試結果方法的文件;
5)read_selection.py 文件:收錄
讀取可執行腳本列表的方法的文件;
6)recovery_code.py 文件:收錄
垃圾代碼恢復方法的文件;
7)write_log.py 文件:收錄
生成日志文件的方法的文件;
3. 腳本文件夾下:
1)create_selection.py 文件:收錄
創(chuàng )建套件文件的方法的文件(all_scripts_selection.txt);
自動(dòng)步驟
1. 運行Auty/setup.py文件;
2. 編寫(xiě)接口測試python腳本,放在A(yíng)uty/scripts/scripts目錄(或子目錄);
3. 運行Auty/scripts/create_selection.py文件,生成Auty/scripts/all_scripts_selection.txt文件;
4. 修改Auty/scripts/all_scripts_selection.txt文件,自定義test_selection.txt文件(任意名稱(chēng))放到Auty/scripts/selections文件夾下;
5. 運行Auty/start.py文件,啟動(dòng)接口自動(dòng)測試;
6. 在A(yíng)uty/results文件夾下生成的測試結果文件中查看測試結果。
寫(xiě)作過(guò)程
本框架中scripts、utils、actions、contants四個(gè)文件夾中的內容可以根據實(shí)際工作內容隨意更換。其他是Auty 接口自動(dòng)化測試框架的必要組件。由于后續開(kāi)發(fā)工作繁瑣,部分改動(dòng)代碼無(wú)法在后續文章中及時(shí)更新。最新代碼請見(jiàn):Github
第1部分-生成執行列表第2部分-讀取和執行腳本列表第3部分-添加異常處理和日志采集
第4部分-生成測試結果報告第5部分-調用支持、自動(dòng)安裝庫和配置說(shuō)明第6章-垃圾代碼恢復、添加套件支持第7章-添加動(dòng)作庫和常量文件庫Auty框架性能篇-Python flask框架實(shí)踐接口測試用例編寫(xiě)建議
從某種層面來(lái)說(shuō),框架的誕生也是為了讓編寫(xiě)的代碼更加規范。不管框架如何,對于接口測試用例的編寫(xiě),都應該給出以下建議:
1. 接口中涉及到url,不要寫(xiě)在case中,而是通過(guò)常量訪(fǎng)問(wèn),將url存放在指定的常量文件中(避免因接口域名變化等原因導致無(wú)法維護) );
2. 測試用例中不要收錄
測試數據等變量信息,設置為變量,在指定文件中完成變量的初始化;
3. 不要在測試用例中重復粘貼大段代碼邏輯(不利于代碼走查,會(huì )造成代碼冗余,增加出錯概率)。所有可以重用的流程都會(huì )被提取到方法中,并分類(lèi)放置在指定的存儲文件夾中的業(yè)務(wù)邏輯動(dòng)作中;
4. 關(guān)于評論:語(yǔ)言一定要正式,評論的意義更多的是給別人看,讓別人一目了然;一定要具體、詳細,不要說(shuō)一半;一定要準確,而且注釋下面的代碼邏輯一定要和注釋的內容一致,不能在注釋下面一段代碼之后,才啟動(dòng)注釋中收錄
的內容邏輯。 查看全部
自動(dòng)采集編寫(xiě)(actions文件夾自動(dòng)化測試框架一步)
這兩天用python2寫(xiě)了一個(gè)自動(dòng)化測試框架,名字叫Auty。它已準備好用于 Web 界面測試。下面是Auty框架的分步搭建過(guò)程——

首先感謝朱博大哥的指教、交流和幫助!
auty文件夾結構介紹
1. actions文件夾:收錄
業(yè)務(wù)相關(guān)的腳本文件,收錄
可復用的方法,可以根據不同的業(yè)務(wù)在actions文件夾下創(chuàng )建不同的業(yè)務(wù)文件夾;
2. 常量文件夾:收錄
常量初始化的python腳本文件。根據業(yè)務(wù)分工,可以創(chuàng )建子文件夾或多個(gè)常量文件;
3. 數據文件夾:收錄
用于測試的數據;
4. lib文件夾:收錄
支持框架運行的python文件;
5. 日志文件夾:收錄
運行測試過(guò)程中產(chǎn)生的日志文件;
6. results文件夾:收錄
測試結果文件;
7. 腳本文件夾:收錄
腳本文件夾和選擇文件夾;
1)scripts 文件夾收錄
測試腳本(可以根據業(yè)務(wù)分為多個(gè)子目錄);
2)selections 文件夾收錄
套件文件(包括需要執行的腳本路徑的集合);
8. utils文件夾:收錄
與業(yè)務(wù)邏輯無(wú)關(guān)的腳本文件,收錄
可復用的方法;
auty文件結構介紹
1. 在 Auty 文件夾下:
1)__init__.py 文件:包結構的必要文件(以下所有涉及可調用腳本的文件夾都需要該文件);
2)config.txt 文件:Auty 框架配置描述文件;
3)recovery.py 文件:垃圾代碼恢復文件(用于恢復由于測試執行過(guò)程中失敗而自動(dòng)刪除失敗的自動(dòng)生成代碼);
4)requirements 文件:收錄
框架需要安裝的python庫信息;
5)setup.py文件:執行腳本安裝需求文件中收錄
的python庫;
6)start.py 文件:執行腳本啟動(dòng)界面自動(dòng)化測試;
2. lib 文件夾:
1)exe_deco.py 文件:收錄
修改腳本運行時(shí)方法的文件;
2)execute_selection.py 文件:收錄
了suite集合下運行腳本方法的文件;
3)generate_html.py文件:收錄
根據生成的csv格式測試結果文件生成html類(lèi)型測試結果文件的方法的文件;
4)generate_result.py文件:收錄
生成csv格式測試結果方法的文件;
5)read_selection.py 文件:收錄
讀取可執行腳本列表的方法的文件;
6)recovery_code.py 文件:收錄
垃圾代碼恢復方法的文件;
7)write_log.py 文件:收錄
生成日志文件的方法的文件;
3. 腳本文件夾下:
1)create_selection.py 文件:收錄
創(chuàng )建套件文件的方法的文件(all_scripts_selection.txt);
自動(dòng)步驟
1. 運行Auty/setup.py文件;
2. 編寫(xiě)接口測試python腳本,放在A(yíng)uty/scripts/scripts目錄(或子目錄);
3. 運行Auty/scripts/create_selection.py文件,生成Auty/scripts/all_scripts_selection.txt文件;
4. 修改Auty/scripts/all_scripts_selection.txt文件,自定義test_selection.txt文件(任意名稱(chēng))放到Auty/scripts/selections文件夾下;
5. 運行Auty/start.py文件,啟動(dòng)接口自動(dòng)測試;
6. 在A(yíng)uty/results文件夾下生成的測試結果文件中查看測試結果。
寫(xiě)作過(guò)程
本框架中scripts、utils、actions、contants四個(gè)文件夾中的內容可以根據實(shí)際工作內容隨意更換。其他是Auty 接口自動(dòng)化測試框架的必要組件。由于后續開(kāi)發(fā)工作繁瑣,部分改動(dòng)代碼無(wú)法在后續文章中及時(shí)更新。最新代碼請見(jiàn):Github
第1部分-生成執行列表第2部分-讀取和執行腳本列表第3部分-添加異常處理和日志采集
第4部分-生成測試結果報告第5部分-調用支持、自動(dòng)安裝庫和配置說(shuō)明第6章-垃圾代碼恢復、添加套件支持第7章-添加動(dòng)作庫和常量文件庫Auty框架性能篇-Python flask框架實(shí)踐接口測試用例編寫(xiě)建議
從某種層面來(lái)說(shuō),框架的誕生也是為了讓編寫(xiě)的代碼更加規范。不管框架如何,對于接口測試用例的編寫(xiě),都應該給出以下建議:
1. 接口中涉及到url,不要寫(xiě)在case中,而是通過(guò)常量訪(fǎng)問(wèn),將url存放在指定的常量文件中(避免因接口域名變化等原因導致無(wú)法維護) );
2. 測試用例中不要收錄
測試數據等變量信息,設置為變量,在指定文件中完成變量的初始化;
3. 不要在測試用例中重復粘貼大段代碼邏輯(不利于代碼走查,會(huì )造成代碼冗余,增加出錯概率)。所有可以重用的流程都會(huì )被提取到方法中,并分類(lèi)放置在指定的存儲文件夾中的業(yè)務(wù)邏輯動(dòng)作中;
4. 關(guān)于評論:語(yǔ)言一定要正式,評論的意義更多的是給別人看,讓別人一目了然;一定要具體、詳細,不要說(shuō)一半;一定要準確,而且注釋下面的代碼邏輯一定要和注釋的內容一致,不能在注釋下面一段代碼之后,才啟動(dòng)注釋中收錄
的內容邏輯。
自動(dòng)采集編寫(xiě)(用考拉SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇高質(zhì)量SEO文章!)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 136 次瀏覽 ? 2021-12-29 11:12
看到本文內容請不要驚訝,因為本文由考拉SEO平臺批量編譯,僅用于SEO引流。有了考拉SEO,一天可以輕松產(chǎn)出數萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
這些天,網(wǎng)友們一直在關(guān)注ai偽原創(chuàng )內容的自動(dòng)視頻采集和上傳,質(zhì)疑我們的人太多了。其實(shí)在關(guān)注這個(gè)信息之前,大家應該先來(lái)這里探討一下關(guān)鍵詞如何優(yōu)化自編信息!對于圈子里思考的SEOer來(lái)說(shuō),文字質(zhì)量絕不是主要目標,這些人最關(guān)心的是權重值和訪(fǎng)問(wèn)量。一篇高質(zhì)量的搜索優(yōu)化文章寫(xiě)在一個(gè)新的站點(diǎn)上,并推送到一個(gè)高權重的門(mén)戶(hù)站點(diǎn)。最后排名和流量差別很大!
一直在咨詢(xún)AI偽原創(chuàng )視頻自動(dòng)采集上傳的客戶(hù),歸根結底大家超級關(guān)注的還是之前文章討論的內容。編輯一篇流量大的搜索落地文章很容易,但一篇文章產(chǎn)生的流量其實(shí)很小。如果要設置內容達到引流的目的,絕對關(guān)鍵是自動(dòng)化!如果1篇SEO文章可以收獲1個(gè)UV(每天),那么假設可以寫(xiě)10000篇文章,那么平均每天的客戶(hù)量可以增加10000。但是,簡(jiǎn)單來(lái)說(shuō),在現實(shí)生活中編輯時(shí),一個(gè)人一天只能產(chǎn)出30篇文章,最多60篇。即使使用偽原創(chuàng )工具,也只能維持一百!看到這個(gè),
杜娘想的人工造物是什么?原創(chuàng )文章不僅僅是逐段原創(chuàng )編輯!在各大搜索者的算法定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的句子。換句話(huà)說(shuō),只要我們的碼字和別人的碼字不完全一樣,就可以增加收錄
的可能性。一篇熱點(diǎn)文章,核心足夠搶眼,保持同一個(gè)中心思想,只要保證沒(méi)有同款,就說(shuō)明這篇文章還是很有可能被搜索引擎收錄的,甚至成為引流的好文章。就像這篇文章,你可能在搜索引擎搜索視頻,自動(dòng)采集
ai偽原創(chuàng )上傳,然后點(diǎn)進(jìn)去。其實(shí),下一篇就是發(fā)揮考拉SEO平臺智能編輯文章系統的作用。從!
本站智能原創(chuàng )平臺應為原創(chuàng )文章系統,精準表達。一天可以寫(xiě)好幾萬(wàn)個(gè)靠譜的SEO文案。只要您的網(wǎng)站足夠大,收錄率就可以高達 80%。詳細的操作方法,個(gè)人中心有視頻展示和初學(xué)者指南。讓我們免費試用吧!很抱歉沒(méi)有給大家帶來(lái)關(guān)于自動(dòng)抓拍ai偽原創(chuàng )上傳的全面講解,或許能讓大家看完這篇通用的系統語(yǔ)言。但如果我們喜歡這個(gè)系統,只需點(diǎn)擊導航欄,就能讓您的網(wǎng)頁(yè)每天達到數百次瀏覽量。這不是壞事嗎? 查看全部
自動(dòng)采集編寫(xiě)(用考拉SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇高質(zhì)量SEO文章!)
看到本文內容請不要驚訝,因為本文由考拉SEO平臺批量編譯,僅用于SEO引流。有了考拉SEO,一天可以輕松產(chǎn)出數萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
這些天,網(wǎng)友們一直在關(guān)注ai偽原創(chuàng )內容的自動(dòng)視頻采集和上傳,質(zhì)疑我們的人太多了。其實(shí)在關(guān)注這個(gè)信息之前,大家應該先來(lái)這里探討一下關(guān)鍵詞如何優(yōu)化自編信息!對于圈子里思考的SEOer來(lái)說(shuō),文字質(zhì)量絕不是主要目標,這些人最關(guān)心的是權重值和訪(fǎng)問(wèn)量。一篇高質(zhì)量的搜索優(yōu)化文章寫(xiě)在一個(gè)新的站點(diǎn)上,并推送到一個(gè)高權重的門(mén)戶(hù)站點(diǎn)。最后排名和流量差別很大!

一直在咨詢(xún)AI偽原創(chuàng )視頻自動(dòng)采集上傳的客戶(hù),歸根結底大家超級關(guān)注的還是之前文章討論的內容。編輯一篇流量大的搜索落地文章很容易,但一篇文章產(chǎn)生的流量其實(shí)很小。如果要設置內容達到引流的目的,絕對關(guān)鍵是自動(dòng)化!如果1篇SEO文章可以收獲1個(gè)UV(每天),那么假設可以寫(xiě)10000篇文章,那么平均每天的客戶(hù)量可以增加10000。但是,簡(jiǎn)單來(lái)說(shuō),在現實(shí)生活中編輯時(shí),一個(gè)人一天只能產(chǎn)出30篇文章,最多60篇。即使使用偽原創(chuàng )工具,也只能維持一百!看到這個(gè),
杜娘想的人工造物是什么?原創(chuàng )文章不僅僅是逐段原創(chuàng )編輯!在各大搜索者的算法定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的句子。換句話(huà)說(shuō),只要我們的碼字和別人的碼字不完全一樣,就可以增加收錄
的可能性。一篇熱點(diǎn)文章,核心足夠搶眼,保持同一個(gè)中心思想,只要保證沒(méi)有同款,就說(shuō)明這篇文章還是很有可能被搜索引擎收錄的,甚至成為引流的好文章。就像這篇文章,你可能在搜索引擎搜索視頻,自動(dòng)采集
ai偽原創(chuàng )上傳,然后點(diǎn)進(jìn)去。其實(shí),下一篇就是發(fā)揮考拉SEO平臺智能編輯文章系統的作用。從!

本站智能原創(chuàng )平臺應為原創(chuàng )文章系統,精準表達。一天可以寫(xiě)好幾萬(wàn)個(gè)靠譜的SEO文案。只要您的網(wǎng)站足夠大,收錄率就可以高達 80%。詳細的操作方法,個(gè)人中心有視頻展示和初學(xué)者指南。讓我們免費試用吧!很抱歉沒(méi)有給大家帶來(lái)關(guān)于自動(dòng)抓拍ai偽原創(chuàng )上傳的全面講解,或許能讓大家看完這篇通用的系統語(yǔ)言。但如果我們喜歡這個(gè)系統,只需點(diǎn)擊導航欄,就能讓您的網(wǎng)頁(yè)每天達到數百次瀏覽量。這不是壞事嗎?
自動(dòng)采集編寫(xiě)(安裝Python自動(dòng)化測試的腳本是用Python3寫(xiě)的嗎)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 177 次瀏覽 ? 2021-12-29 09:07
寫(xiě)在前面
本文主要介紹一個(gè)基于uiautomator2封裝的Python庫android-catcher。該庫的功能主要包括Android設備的UI自動(dòng)化測試和手機性能數據的采集。適用于列表滑動(dòng)、視頻錄制等各種測試場(chǎng)景。 CPU,內存、幀率等信息的抓取方便后續分析。
Github地址:
安裝 Python
自動(dòng)化測試腳本使用Python 3編寫(xiě),運行腳本需要安裝Python 3環(huán)境。
下載鏈接:
Python 3.6.5
安裝 android-catcher 依賴(lài)
打開(kāi)腳本目錄,執行以下命令安裝依賴(lài)
pip install -r requirements.txt
使用方法 uiautomator2
安裝uiautomator2后,一般只需要執行以下命令來(lái)初始化設備并在設備上安裝uiautomator2服務(wù)
python -m uiautomator2 init
如果出現如下提示,則安裝成功
更多uiautomator2的使用請參考:
腳本文件說(shuō)明
這個(gè)腳本庫根目錄下的主要文件有
參數說(shuō)明 生成的文件說(shuō)明
采集到的信息根據信息類(lèi)型存儲在指定輸出目錄下的cpu_stats、mem_stats、fps_stats、net_stats四個(gè)子目錄中。文件名為信息類(lèi)型_設備號_應用程序ID_版本號_測試場(chǎng)景名稱(chēng)_時(shí)間戳,如cpu_d3c2edaa_video。like_RecordVideo_1.9.9_1524122928.csv.csv,實(shí)際效果大致如下
輸出文件為csv文件,直接打開(kāi)和用Excel打開(kāi)的效果如下:
此外,您可以為測試的每個(gè)階段添加節點(diǎn)描述
task.period = "idle"
生成類(lèi)似于下圖的圖形
如何使用無(wú)自定義測試場(chǎng)景
適用于沒(méi)有特定測試場(chǎng)景,腳本運行一段時(shí)間后腳本處于采集狀態(tài)的情況。時(shí)長(cháng)可以通過(guò)配置參數指定,用戶(hù)可以在此過(guò)程中隨意操作手機。直接通過(guò)命令行運行_main_.py腳本文件并指定相關(guān)參數
比如我想采集applicationId為video.like的應用程序10s內的cpu信息和內存信息,采樣間隔為200ms,輸出目錄為當前目錄,那么可以在所在目錄下執行如下命令腳本位于
python _main_.py -s 設備號-a video.like -f 0.2 -d 10 -i mem,cpu -o .
腳本運行后,在根目錄下可以看到如下圖的文件生成
注意:要帶-d參數指定采集的持續時(shí)間,否則腳本默認運行10s,不需要-t參數。默認測試場(chǎng)景命名為 Random
如何使用自定義測試場(chǎng)景
自定義測試場(chǎng)景不能直接調用_main_.py 腳本。需要新建一個(gè)腳本,繼承task.py#Task并重寫(xiě)Task#execute方法,在Task#execute中實(shí)現自定義測試場(chǎng)景的邏輯,如下圖所示:
在這里創(chuàng )建一個(gè)名為 start_app.py 的腳本,運行命令:
python start_app.py -s 設備號-a 進(jìn)程名 -f 0.1 -i cpu,mem -o .
可以啟動(dòng)相應的APP,采集CPU信息和內存信息,采樣間隔100ms,輸出到當前目錄。注意這里沒(méi)有-d參數,因為采集的時(shí)長(cháng)以測試任務(wù)的時(shí)長(cháng)為準。設置的參數必須按照說(shuō)明進(jìn)行,否則無(wú)法采集數據
如果要采集
自定義信息,可以繼承 info.py#Info 并重寫(xiě) Info#get_start_info 和 Info#get_end_info 方法??梢詤⒖家呀?jīng)實(shí)現的四種信息集合,最后通過(guò)Task#add_info方法進(jìn)行添加。
自定義測試場(chǎng)景后,調用_main_#main方法,傳入測試場(chǎng)景實(shí)例。測試場(chǎng)景的名稱(chēng)將用作輸出文件命名的一部分。最好取一個(gè)能準確表達測試場(chǎng)景的名字,比如一個(gè)APP錄制視頻 測試場(chǎng)景的名字是RecordVideo
采集
到的信息可以通過(guò)Excel制作成圖表。以下是完整視頻錄制測試場(chǎng)景的CPU比例和內存變化
通過(guò)圖表,可以直觀(guān)地分析應用程序不同版本、不同場(chǎng)景的性能狀態(tài)
寫(xiě)在最后
以上是對該庫使用的一些介紹。由于工作經(jīng)驗還比較少,所以現在也在學(xué)習和使用Python。在編寫(xiě)這個(gè)庫的時(shí)候,可能會(huì )有很多考慮不周或不完善的地方。有能力的朋友可以直接修改庫實(shí)現更多的自定義功能。另外也希望大家多多使用,多發(fā)現問(wèn)題,歡迎issue,歡迎star,歡迎新的使用需求和想法。后續會(huì )繼續完善,謝謝!
Github地址: 查看全部
自動(dòng)采集編寫(xiě)(安裝Python自動(dòng)化測試的腳本是用Python3寫(xiě)的嗎)
寫(xiě)在前面
本文主要介紹一個(gè)基于uiautomator2封裝的Python庫android-catcher。該庫的功能主要包括Android設備的UI自動(dòng)化測試和手機性能數據的采集。適用于列表滑動(dòng)、視頻錄制等各種測試場(chǎng)景。 CPU,內存、幀率等信息的抓取方便后續分析。
Github地址:
安裝 Python
自動(dòng)化測試腳本使用Python 3編寫(xiě),運行腳本需要安裝Python 3環(huán)境。
下載鏈接:
Python 3.6.5
安裝 android-catcher 依賴(lài)
打開(kāi)腳本目錄,執行以下命令安裝依賴(lài)
pip install -r requirements.txt
使用方法 uiautomator2
安裝uiautomator2后,一般只需要執行以下命令來(lái)初始化設備并在設備上安裝uiautomator2服務(wù)
python -m uiautomator2 init
如果出現如下提示,則安裝成功
更多uiautomator2的使用請參考:
腳本文件說(shuō)明
這個(gè)腳本庫根目錄下的主要文件有
參數說(shuō)明 生成的文件說(shuō)明
采集到的信息根據信息類(lèi)型存儲在指定輸出目錄下的cpu_stats、mem_stats、fps_stats、net_stats四個(gè)子目錄中。文件名為信息類(lèi)型_設備號_應用程序ID_版本號_測試場(chǎng)景名稱(chēng)_時(shí)間戳,如cpu_d3c2edaa_video。like_RecordVideo_1.9.9_1524122928.csv.csv,實(shí)際效果大致如下
輸出文件為csv文件,直接打開(kāi)和用Excel打開(kāi)的效果如下:
此外,您可以為測試的每個(gè)階段添加節點(diǎn)描述
task.period = "idle"
生成類(lèi)似于下圖的圖形
如何使用無(wú)自定義測試場(chǎng)景
適用于沒(méi)有特定測試場(chǎng)景,腳本運行一段時(shí)間后腳本處于采集狀態(tài)的情況。時(shí)長(cháng)可以通過(guò)配置參數指定,用戶(hù)可以在此過(guò)程中隨意操作手機。直接通過(guò)命令行運行_main_.py腳本文件并指定相關(guān)參數
比如我想采集applicationId為video.like的應用程序10s內的cpu信息和內存信息,采樣間隔為200ms,輸出目錄為當前目錄,那么可以在所在目錄下執行如下命令腳本位于
python _main_.py -s 設備號-a video.like -f 0.2 -d 10 -i mem,cpu -o .
腳本運行后,在根目錄下可以看到如下圖的文件生成
注意:要帶-d參數指定采集的持續時(shí)間,否則腳本默認運行10s,不需要-t參數。默認測試場(chǎng)景命名為 Random
如何使用自定義測試場(chǎng)景
自定義測試場(chǎng)景不能直接調用_main_.py 腳本。需要新建一個(gè)腳本,繼承task.py#Task并重寫(xiě)Task#execute方法,在Task#execute中實(shí)現自定義測試場(chǎng)景的邏輯,如下圖所示:
在這里創(chuàng )建一個(gè)名為 start_app.py 的腳本,運行命令:
python start_app.py -s 設備號-a 進(jìn)程名 -f 0.1 -i cpu,mem -o .
可以啟動(dòng)相應的APP,采集CPU信息和內存信息,采樣間隔100ms,輸出到當前目錄。注意這里沒(méi)有-d參數,因為采集的時(shí)長(cháng)以測試任務(wù)的時(shí)長(cháng)為準。設置的參數必須按照說(shuō)明進(jìn)行,否則無(wú)法采集數據
如果要采集
自定義信息,可以繼承 info.py#Info 并重寫(xiě) Info#get_start_info 和 Info#get_end_info 方法??梢詤⒖家呀?jīng)實(shí)現的四種信息集合,最后通過(guò)Task#add_info方法進(jìn)行添加。
自定義測試場(chǎng)景后,調用_main_#main方法,傳入測試場(chǎng)景實(shí)例。測試場(chǎng)景的名稱(chēng)將用作輸出文件命名的一部分。最好取一個(gè)能準確表達測試場(chǎng)景的名字,比如一個(gè)APP錄制視頻 測試場(chǎng)景的名字是RecordVideo
采集
到的信息可以通過(guò)Excel制作成圖表。以下是完整視頻錄制測試場(chǎng)景的CPU比例和內存變化
通過(guò)圖表,可以直觀(guān)地分析應用程序不同版本、不同場(chǎng)景的性能狀態(tài)
寫(xiě)在最后
以上是對該庫使用的一些介紹。由于工作經(jīng)驗還比較少,所以現在也在學(xué)習和使用Python。在編寫(xiě)這個(gè)庫的時(shí)候,可能會(huì )有很多考慮不周或不完善的地方。有能力的朋友可以直接修改庫實(shí)現更多的自定義功能。另外也希望大家多多使用,多發(fā)現問(wèn)題,歡迎issue,歡迎star,歡迎新的使用需求和想法。后續會(huì )繼續完善,謝謝!
Github地址:
自動(dòng)采集編寫(xiě)(個(gè)人信息采集小程序模板解決你制作個(gè)人信息報表(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 277 次瀏覽 ? 2021-12-28 16:09
個(gè)人信息采集小程序制作平臺網(wǎng)站
>自建定制【個(gè)人信息采集小程序】立即注冊開(kāi)始>
?微信、百度、抖音、今日頭條小程序
?抽獎、答題、投票、展示等多元化小程序。
?同城、社區、查詢(xún)、咨詢(xún)等熱門(mén)小程序
?覆蓋70+行業(yè),400+套免費小程序模板即刻制作>
?超劃算的小程序開(kāi)發(fā)方案,買(mǎi)兩年送兩年,每天只需花1元√
個(gè)人信息采集
小程序*熱門(mén)功能
*服務(wù)抽獎——適用于美容、餐飲、保養等店內服務(wù)的個(gè)人信息采集小程序。
*同城社區-適用于小區、社區等領(lǐng)域采集
個(gè)人信息的小程序
* 留言如回復-適用于需要此服務(wù)的個(gè)人信息采集
小程序
*在線(xiàn)投票-適用于需要使用投票功能的個(gè)人信息采集小程序
*在線(xiàn)答題——適用于需要使用答題功能的個(gè)人信息采集小程序
*簽到和簽到-適用于需要使用簽到功能的個(gè)人信息采集
小程序
提供個(gè)人信息采集小程序定制服務(wù),或自帶模板自建模板
個(gè)人信息采集小程序制作平臺網(wǎng)站提供免費的個(gè)人信息采集小程序模板
平臺提供免費的個(gè)人信息采集小程序模板
解決你在制作個(gè)人信息采集小程序的路上遇到的所有煩惱
個(gè)人信息采集小程序制作平臺網(wǎng)站有哪些優(yōu)勢
定制2種服務(wù),以及多功能服務(wù),助您減少后顧之憂(yōu)
▽無(wú)需自己寫(xiě)代碼
▽小程序制作,全程拖拽操作簡(jiǎn)單
▽無(wú)需編寫(xiě)任何代碼即可完成個(gè)人信息采集小程序的開(kāi)發(fā)
▽個(gè)人信息采集小程序自主開(kāi)發(fā)即刻啟動(dòng)
▽一鍵免費注冊開(kāi)發(fā)個(gè)人信息采集小程序
▽微信、百度小程序、今日頭條、抖音
▽一次擁有四大平臺網(wǎng)站小程序
▽搶占移動(dòng)終端流量,提升企業(yè)移動(dòng)終端服務(wù)水平
▽可視化個(gè)人信息采集小程序設計界面
▽步驟搭建簡(jiǎn)單好用的個(gè)人信息采集小程序
▽0代碼庫也可以用來(lái)制作個(gè)人信息采集小程序
▽省時(shí)、省力、省錢(qián),高效完成個(gè)人信息采集小程序的開(kāi)發(fā)
▽詳細的數據分析報告
▽多維度、多方位的個(gè)人信息采集小程序數據解讀
▽全面了解用戶(hù)喜好和賺錢(qián)秘訣
▽大數據時(shí)代,用數據做更正確的決策 查看全部
自動(dòng)采集編寫(xiě)(個(gè)人信息采集小程序模板解決你制作個(gè)人信息報表(組圖))
個(gè)人信息采集小程序制作平臺網(wǎng)站
>自建定制【個(gè)人信息采集小程序】立即注冊開(kāi)始>
?微信、百度、抖音、今日頭條小程序
?抽獎、答題、投票、展示等多元化小程序。
?同城、社區、查詢(xún)、咨詢(xún)等熱門(mén)小程序
?覆蓋70+行業(yè),400+套免費小程序模板即刻制作>
?超劃算的小程序開(kāi)發(fā)方案,買(mǎi)兩年送兩年,每天只需花1元√


個(gè)人信息采集
小程序*熱門(mén)功能
*服務(wù)抽獎——適用于美容、餐飲、保養等店內服務(wù)的個(gè)人信息采集小程序。
*同城社區-適用于小區、社區等領(lǐng)域采集
個(gè)人信息的小程序
* 留言如回復-適用于需要此服務(wù)的個(gè)人信息采集
小程序
*在線(xiàn)投票-適用于需要使用投票功能的個(gè)人信息采集小程序
*在線(xiàn)答題——適用于需要使用答題功能的個(gè)人信息采集小程序
*簽到和簽到-適用于需要使用簽到功能的個(gè)人信息采集
小程序

提供個(gè)人信息采集小程序定制服務(wù),或自帶模板自建模板
個(gè)人信息采集小程序制作平臺網(wǎng)站提供免費的個(gè)人信息采集小程序模板
平臺提供免費的個(gè)人信息采集小程序模板
解決你在制作個(gè)人信息采集小程序的路上遇到的所有煩惱


個(gè)人信息采集小程序制作平臺網(wǎng)站有哪些優(yōu)勢
定制2種服務(wù),以及多功能服務(wù),助您減少后顧之憂(yōu)

▽無(wú)需自己寫(xiě)代碼
▽小程序制作,全程拖拽操作簡(jiǎn)單
▽無(wú)需編寫(xiě)任何代碼即可完成個(gè)人信息采集小程序的開(kāi)發(fā)
▽個(gè)人信息采集小程序自主開(kāi)發(fā)即刻啟動(dòng)

▽一鍵免費注冊開(kāi)發(fā)個(gè)人信息采集小程序
▽微信、百度小程序、今日頭條、抖音
▽一次擁有四大平臺網(wǎng)站小程序
▽搶占移動(dòng)終端流量,提升企業(yè)移動(dòng)終端服務(wù)水平

▽可視化個(gè)人信息采集小程序設計界面
▽步驟搭建簡(jiǎn)單好用的個(gè)人信息采集小程序
▽0代碼庫也可以用來(lái)制作個(gè)人信息采集小程序
▽省時(shí)、省力、省錢(qián),高效完成個(gè)人信息采集小程序的開(kāi)發(fā)

▽詳細的數據分析報告
▽多維度、多方位的個(gè)人信息采集小程序數據解讀
▽全面了解用戶(hù)喜好和賺錢(qián)秘訣
▽大數據時(shí)代,用數據做更正確的決策
自動(dòng)采集編寫(xiě)( 有關(guān)自動(dòng)采集inlistIoutthe)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 200 次瀏覽 ? 2021-12-28 06:11
有關(guān)自動(dòng)采集inlistIoutthe)
Firefox 自動(dòng)采集
url
在我開(kāi)始測試有關(guān)在地址欄中啟用內聯(lián)自動(dòng)完成功能的最后一個(gè)提示后,我突然想到,盡管來(lái)自我的瀏覽器歷史記錄的鏈接一直顯示在列表中,但我可能永遠不會(huì )輸入它們。
在我開(kāi)始測試關(guān)于在地址欄中啟用內聯(lián)自動(dòng)完成的最后一個(gè)技巧后,我想雖然瀏覽器歷史記錄中的鏈接總是顯示在列表中,但我可能永遠不會(huì )輸入它們。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您在地址欄中使用大量書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您從地址欄中使用許多書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
請記住,此設置并不適合所有人,但了解工作原理很有好處。
請記住,此設置并不適合所有人,但最好了解它的工作原理。
要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
browser.urlbar.matchOnlyTyped
browser.urlbar.matchOnlyTyped
雙擊該值將其更改為 true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:
雙擊該值將其更改為true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:
當然,您手動(dòng)輸入的鏈接將繼續自動(dòng)完成:
當然,您手動(dòng)輸入的鏈接會(huì )繼續自動(dòng)完成:
擁有一個(gè)每個(gè)人都可以選擇自己設置的瀏覽器真是太好了。
有了瀏覽器,每個(gè)人都可以選擇自己的設置,這很棒。
翻譯自:
Firefox 自動(dòng)采集
url 查看全部
自動(dòng)采集編寫(xiě)(
有關(guān)自動(dòng)采集inlistIoutthe)

Firefox 自動(dòng)采集
url
在我開(kāi)始測試有關(guān)在地址欄中啟用內聯(lián)自動(dòng)完成功能的最后一個(gè)提示后,我突然想到,盡管來(lái)自我的瀏覽器歷史記錄的鏈接一直顯示在列表中,但我可能永遠不會(huì )輸入它們。
在我開(kāi)始測試關(guān)于在地址欄中啟用內聯(lián)自動(dòng)完成的最后一個(gè)技巧后,我想雖然瀏覽器歷史記錄中的鏈接總是顯示在列表中,但我可能永遠不會(huì )輸入它們。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您在地址欄中使用大量書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
經(jīng)過(guò)幾分鐘的研究,我發(fā)現了一個(gè)設置,可以讓 Firefox 只自動(dòng)完成您手動(dòng)輸入的鏈接。當您從地址欄中使用許多書(shū)簽或搜索關(guān)鍵字時(shí),這會(huì )很有幫助。
請記住,此設置并不適合所有人,但了解工作原理很有好處。
請記住,此設置并不適合所有人,但最好了解它的工作原理。

要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
要進(jìn)行此更改,請在地址欄中鍵入 about:config,然后按以下鍵進(jìn)行過(guò)濾:
browser.urlbar.matchOnlyTyped
browser.urlbar.matchOnlyTyped

雙擊該值將其更改為 true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:
雙擊該值將其更改為true,您應該立即注意到歷史記錄中的鏈接將不再自動(dòng)完成:

當然,您手動(dòng)輸入的鏈接將繼續自動(dòng)完成:
當然,您手動(dòng)輸入的鏈接會(huì )繼續自動(dòng)完成:

擁有一個(gè)每個(gè)人都可以選擇自己設置的瀏覽器真是太好了。
有了瀏覽器,每個(gè)人都可以選擇自己的設置,這很棒。
翻譯自:
Firefox 自動(dòng)采集
url
自動(dòng)采集編寫(xiě)(iOS開(kāi)發(fā)交流技術(shù)群:1.數據采集SDK是如何工作的)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 201 次瀏覽 ? 2021-12-28 06:09
GrowingIO 是一個(gè)基于用戶(hù)行為數據的增長(cháng)平臺。準確采集用戶(hù)行為數據是公司業(yè)務(wù)的基石。只有及時(shí)、準確、可靠的數據采集,才能支撐上層的數據分析、用戶(hù)畫(huà)像、運營(yíng)等服務(wù)。因此,公司一直非常重視數據采集SDK(Software Development Kit)的質(zhì)量保證工作。
iOS開(kāi)發(fā)與通信技術(shù)群:【563513413】(跳躍),無(wú)論你是大牛還是新手,歡迎加入,分享BAT,阿里巴巴面試題,面試經(jīng)驗,討論技術(shù),讓大家交流、學(xué)習、成長(cháng)!
為了滿(mǎn)足客戶(hù)的各種業(yè)務(wù)和技術(shù)需求,GrowingIO提供Web、Android、iOS、Hybrid等各種平臺,各種小程序(微信、支付寶、今日頭條等)、微信內嵌頁(yè)面,以及React Native 、Flutter、Cordova、Weex、API Cloud、AppCan等眾多開(kāi)發(fā)框架SDK,這無(wú)疑給SDK測試帶來(lái)了巨大的挑戰。
本文主要介紹GrowingIO在iOS SDK測試中的具體實(shí)踐,希望能為從事iOS測試的同學(xué)提供一些參考。
1. 數據采集SDK是如何工作的?
要測試一個(gè)軟件或系統,首先要了解它的業(yè)務(wù)邏輯和技術(shù)實(shí)現。接下來(lái)我們簡(jiǎn)單的看一下數據采集SDK的工作原理。
GrowingIO的數據采集SDK支持非埋點(diǎn)(全埋點(diǎn))數據采集和埋點(diǎn)數據采集,滿(mǎn)足不同業(yè)務(wù)需求。其簡(jiǎn)單的結構如下:
當用戶(hù)打開(kāi)App、瀏覽不同頁(yè)面、點(diǎn)擊不同元素(如按鈕、文本框、圖片)、關(guān)閉App時(shí),非嵌入式事件采集模塊會(huì )自動(dòng)采集并保存用戶(hù)的具體行為手機本地存儲(關(guān)于非埋點(diǎn)數據采集的具體實(shí)現,請關(guān)注GrowigIO的后續文章分享,這里不再詳述)。
埋點(diǎn)事件采集類(lèi)似,不同的是埋點(diǎn)事件是由App主動(dòng)調用SDK的埋點(diǎn)API觸發(fā)的。當然,不同事件的具體數據格式是不同的。
接下來(lái)是數據發(fā)送模塊,主要負責通過(guò)HTTP API向數據接收服務(wù)上報數據。
需要注意的是,為了節省用戶(hù)的數據流量和電量,發(fā)送程序不是實(shí)時(shí)上報的。它會(huì )根據設備的功率、網(wǎng)絡(luò )類(lèi)型和數據量來(lái)選擇發(fā)送時(shí)序,數據在發(fā)送前會(huì )被壓縮。并進(jìn)行混淆處理,減少傳輸數據量,提高數據安全性。
當然,數據發(fā)送程序也會(huì )對數據報告中的各種數據發(fā)送失敗、網(wǎng)絡(luò )異常等錯誤進(jìn)行處理,并采用適當的重試機制。
2. 如何測試?
通過(guò)以上結構分析可以看出,數據發(fā)送模塊與核心數據采集業(yè)務(wù)關(guān)系不大,非常穩定,幾乎沒(méi)有變化,所以我們測試的重點(diǎn)主要是數據采集部分,尤其是數據采集部分無(wú)埋點(diǎn)。
要測試數據采集,首先需要有一個(gè)收錄
各種頁(yè)面和元素的Demo App,然后在不同頁(yè)面之間切換,操作頁(yè)面上的元素或者觸發(fā)一個(gè)埋藏事件,然后檢查采集的事件數據是否正確。
有兩種方法可以檢查事件數據。一種是通過(guò)日志打印出詳細的事件數據,觀(guān)察日志檢查;另一種是通過(guò)抓包程序獲取數據并發(fā)送,然后檢查。
后者一般需要配置復雜的代理工具,數據量大,還需要考慮數據的解壓和解密。更難準確定位事件數據。因此,在實(shí)際測試中一般采用前者。
上圖是采集數據的日志截圖。通過(guò)圖中的事件數據,我們發(fā)現字段較多,有些字段可讀性不高,人工檢查耗時(shí)較長(cháng)。
另外,SDK數據采集的主要邏輯基本不變,但每次修改都要覆蓋足夠的回歸,避免遺漏錯誤。
一旦缺陷在線(xiàn)上被遺漏,造成的損失是極其昂貴的。即使缺陷在后續版本中修復,影響也難以消除,因為移動(dòng)應用程序的升級周期難以控制。
此外,GrowingIO 數據采集 SDK 兼容 iOS 8 及以上版本。需要測試系統各個(gè)版本的兼容性,測試工作量明顯。
好在SDK的業(yè)務(wù)變化很少,斷言?xún)热荼容^機械,特別適合自動(dòng)化測試。而且回歸測試的工作量巨大,使用自動(dòng)化測試可以大大提高生產(chǎn)力和質(zhì)量。
3. 選擇一個(gè)測試框架
工人要想做好本職工作,首先要磨礪工具,選擇合適的自動(dòng)化測試框架,再進(jìn)行自動(dòng)化測試。選擇框架時(shí)需要考慮幾個(gè)方面:
目前支持iOS UI自動(dòng)化測試的主要框架對比如下:
考慮影響測試框架選擇的幾個(gè)因素。
首先,使用的語(yǔ)言和框架決定了測試人員的持續學(xué)習成本。iOS SDK 測試人員對Objective-C 有高度的熟悉和掌握,不需要消耗額外的學(xué)習成本。測試和開(kāi)發(fā)相同的技術(shù)堆棧。
其次,根據需要不時(shí)調整測試App程序。使用開(kāi)發(fā)效率高、調試方便的測試框架,可以讓我們在適應新的UI變化和新的需求時(shí),獲得更小的投入產(chǎn)出比。
基于以上考慮,KIF框架已經(jīng)展示了它的優(yōu)勢,而KIF使用XCTest框架,使得iOS程序的測試過(guò)程和單測一樣,可以完全復用單測持續集成過(guò)程,維護持續集成的成本相對降低;此外,KIF 是一個(gè)活躍的開(kāi)源測試框架,具有良好的可擴展性和快速升級。有活躍的社區來(lái)討論和解決使用過(guò)程中遇到的問(wèn)題。
鑒于以上優(yōu)勢,我們選擇KIF作為iOS的UI自動(dòng)化測試框架。
KIF的全稱(chēng)是Keep it Functional,是一個(gè)建立在XCTest之上的UI測試框架,通過(guò)Accessibility定位特定的控件,然后使用私有的API來(lái)操作UI。由于它是建立在 XCTest 之上的,所以你可以完美的使用 XCode 的測試相關(guān)工具。
4. 自動(dòng)化測試的實(shí)現
語(yǔ)言和工具
建立測試環(huán)境
要將Target實(shí)現添加到現有項目中,選擇File → New → Target…菜單項,在iOS → Test中選擇UI Testing Bundle模板,如下圖:
點(diǎn)擊下一步進(jìn)入Target選項頁(yè)面,設置測試項目的相關(guān)項
完成Target設置后,點(diǎn)擊“Finish”按鈕,創(chuàng )建成功。
要安裝 pod,請在命令行終端中輸入以下命令。
sudo gem 安裝 cocoapods
修改或創(chuàng )建項目的pod文件Podfile。
目標'GrowingIOTest'做
pod'SDCycleScrollView','~> 1.75'
pod'MJRefresh'
pod'MBProgressHUD'
結尾
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
其中,新增以下一段
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
在項目目錄下執行如下安裝命令安裝對應的依賴(lài),測試項目就準備完成了。
吊艙安裝
準備待測程序,在測試Demo工程中集成待測版本的數據采集SDK。
編寫(xiě)測試用例
測試環(huán)境搭建好后,下一步就是編寫(xiě)具體的測試用例。一般測試用例的主要步驟是:
準備測試環(huán)境,執行測試步驟,測試結果,斷言測試結果,報告,清理測試環(huán)境
下面以SDK的unburied元素的點(diǎn)擊事件的自動(dòng)化測試用例為例,說(shuō)明自動(dòng)化用例的準備。
測試用例:
啟動(dòng)App,模擬用戶(hù)滾動(dòng)屏幕找到對話(huà)框按鈕,然后點(diǎn)擊對話(huà)框按鈕。彈出對話(huà)框后,點(diǎn)擊關(guān)閉按鈕,驗證點(diǎn)擊事件是否發(fā)送數據,內容是否正確。
代碼:
-(無(wú)效)設置{
// 一些初始化操作
}
-(void)tearDown{
// 一些結束動(dòng)作
}
-(無(wú)效)testDialogBtnCheck{
/**
功能:點(diǎn)擊對話(huà)框按鈕檢測點(diǎn)擊事件,
**/
[[viewTester usingLabel:@"UIinterface"] 點(diǎn)擊];
//添加向下滾動(dòng)操作
[tester scrollViewWithAccessibilityLabel:@"采集
View" byFractionOfSizeHorizo??ntal:0.0f vertical:10.0f];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"LabelAttribute"] tap];
[[viewTester usingLabel:@"ShowAlert"] 點(diǎn)擊];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"Cancel"] tap];
[測試員waitForTimeInterval:3];
NSArray *clckEventArray = [MockEventQueue eventsFor:@"clck"];
//是否發(fā)送clck事件
if(clckEventArray.count>=2)
{
//判斷點(diǎn)擊事件是否正確發(fā)送
NSDictionary *chevent=[clckEventArray objectAtIndex:clckEventArray.count-1];
NSDictionary *clkchr=[NoburPoMeaProCheck ClckEventCheck:chevent];
//NSLog(@"檢查結果:%@",clkchr);
XCTAssertEqual(clkchr[@"KeysCheck"][@"chres"], @"Passed");
NSLog(@"點(diǎn)擊對話(huà)框按鈕檢測clck事件測試通過(guò)---Passed!");
}
別的
{
NSLog(@"對話(huà)框按鈕被點(diǎn)擊,clck事件測試失?。?@!",clckEventArray);
XCTAssertEqual(1, 0);
}
}
由于我們主要測試SDK的功能,所以測試Demo是我們自己設計的,主要涵蓋了各種UI元素和事件。它的業(yè)務(wù)邏輯比大多數業(yè)務(wù)類(lèi)應用都簡(jiǎn)單,沒(méi)有特別的介紹。
這里介紹斷言的設計。上一篇提到,我們自動(dòng)化測試的重點(diǎn)是數據采集規則是否正確,不關(guān)心數據的存儲和傳輸。
SDK在采集數據時(shí),先將所有的事件加入到一個(gè)隊列中,然后再保存到DB中,所以在進(jìn)行測試的時(shí)候,只需要監聽(tīng)事件隊列,就可以保存和檢索需要的事件根據需要在受監視的事件隊列中斷言。點(diǎn)擊事件發(fā)送的數據結構大致如下:
驗證事件數據,首先要保證字段完整,每個(gè)字段不為空,即數據模式正確;其次,根據需要驗證事件的具體字段,例如點(diǎn)擊事件的類(lèi)型t應該是clck。這些檢查被封裝在一個(gè)單獨的Check方法中,如果檢查通過(guò),該方法返回Passed。
這里通過(guò)ClckEventCheck方法完成具體的業(yè)務(wù)驗證。
執行測試用例
主要介紹如何通過(guò)命令行執行測試。
安裝Command Line Tools(命令行工具包),App Store安裝Xcode默認不會(huì )安裝Command Line Tools,可以在命令行輸入以下命令單獨安裝。
xcode-select --install
在使用命令行執行測試之前,還需要將項目設置為 Shared。打開(kāi)產(chǎn)品→方案→管理方案,勾選項目是否共享,如果不是,勾選后面的復選框進(jìn)行共享。
從命令行執行所有測試用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
執行單個(gè)用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-only-testing:GIOAutoTests/ClckEventsTest/test7DialogBtnCheck \
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
xcodebuild 的更多使用請參考其使用說(shuō)明。
人 xcodebuild
美化檢測報告
xcodebuild 的輸出讀起來(lái)不是很直觀(guān)。使用xcpretty可以解決這個(gè)問(wèn)題,同時(shí)也可以完成測試報告的生成。
xcpretty 是一種高速靈活的 xcodebuild 輸出格式化工具。其用法如下:
# 從命令行安裝 xcpretty
gem 安裝 xcpretty
命令行執行
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11' \
| xcpretty --report html
生成的測試報告如下:
默認輸出 html 報告在 build/reports/tests.html
5. 覆蓋率統計
在進(jìn)行自動(dòng)化測試時(shí),我們通常希望獲得測試覆蓋率報告來(lái)衡量自動(dòng)化測試的覆蓋率。由于 KIF 是直接基于 XCTest 實(shí)現的,因此您可以輕松使用 Xcode 自帶的覆蓋率統計工具。設置如下:
Product → Scheme → Edit Scheme, Code Coverage 將需要統計覆蓋的被測程序添加到Targets中。
測試完成后,可以獲得覆蓋率統計報告。
6. 持續集成
自動(dòng)化測試的最大價(jià)值在于它可以代替人工進(jìn)行更高效、更頻繁的測試。因此,要充分發(fā)揮自動(dòng)化測試的價(jià)值,最理想的解決方案就是在持續集成環(huán)節加入自動(dòng)化測試。每當有代碼更改時(shí),都會(huì )自動(dòng)執行測試并快速反饋結果。
我們使用Jenkins來(lái)監控代碼倉庫的變化。當有新的commit提交時(shí),Jenkins會(huì )自動(dòng)拉取最新的代碼,調用命令行執行相應的自動(dòng)化測試用例,采集
相應的測試報告,并將測試結果通過(guò)釘釘機器人及時(shí)通知相關(guān)開(kāi)發(fā)人員和測試人員。
當測試失敗時(shí),相關(guān)人員可以第一時(shí)間收到結果并及時(shí)解決。
7. 總結
本文以iOS平臺為例,系統介紹GrowingIO數據采集SDK的主要工作原理、測試方案的設計、自動(dòng)化測試框架的選擇以及自動(dòng)化測試的實(shí)現。希望對從事SDK測試的同學(xué)有所啟發(fā)。
后面我們還會(huì )分享GrowingIO用戶(hù)觸摸SDK的自動(dòng)化測試、Android SDK的自動(dòng)化測試等相關(guān)內容。請繼續關(guān)注我們。 查看全部
自動(dòng)采集編寫(xiě)(iOS開(kāi)發(fā)交流技術(shù)群:1.數據采集SDK是如何工作的)
GrowingIO 是一個(gè)基于用戶(hù)行為數據的增長(cháng)平臺。準確采集用戶(hù)行為數據是公司業(yè)務(wù)的基石。只有及時(shí)、準確、可靠的數據采集,才能支撐上層的數據分析、用戶(hù)畫(huà)像、運營(yíng)等服務(wù)。因此,公司一直非常重視數據采集SDK(Software Development Kit)的質(zhì)量保證工作。
iOS開(kāi)發(fā)與通信技術(shù)群:【563513413】(跳躍),無(wú)論你是大牛還是新手,歡迎加入,分享BAT,阿里巴巴面試題,面試經(jīng)驗,討論技術(shù),讓大家交流、學(xué)習、成長(cháng)!
為了滿(mǎn)足客戶(hù)的各種業(yè)務(wù)和技術(shù)需求,GrowingIO提供Web、Android、iOS、Hybrid等各種平臺,各種小程序(微信、支付寶、今日頭條等)、微信內嵌頁(yè)面,以及React Native 、Flutter、Cordova、Weex、API Cloud、AppCan等眾多開(kāi)發(fā)框架SDK,這無(wú)疑給SDK測試帶來(lái)了巨大的挑戰。
本文主要介紹GrowingIO在iOS SDK測試中的具體實(shí)踐,希望能為從事iOS測試的同學(xué)提供一些參考。
1. 數據采集SDK是如何工作的?
要測試一個(gè)軟件或系統,首先要了解它的業(yè)務(wù)邏輯和技術(shù)實(shí)現。接下來(lái)我們簡(jiǎn)單的看一下數據采集SDK的工作原理。
GrowingIO的數據采集SDK支持非埋點(diǎn)(全埋點(diǎn))數據采集和埋點(diǎn)數據采集,滿(mǎn)足不同業(yè)務(wù)需求。其簡(jiǎn)單的結構如下:

當用戶(hù)打開(kāi)App、瀏覽不同頁(yè)面、點(diǎn)擊不同元素(如按鈕、文本框、圖片)、關(guān)閉App時(shí),非嵌入式事件采集模塊會(huì )自動(dòng)采集并保存用戶(hù)的具體行為手機本地存儲(關(guān)于非埋點(diǎn)數據采集的具體實(shí)現,請關(guān)注GrowigIO的后續文章分享,這里不再詳述)。
埋點(diǎn)事件采集類(lèi)似,不同的是埋點(diǎn)事件是由App主動(dòng)調用SDK的埋點(diǎn)API觸發(fā)的。當然,不同事件的具體數據格式是不同的。
接下來(lái)是數據發(fā)送模塊,主要負責通過(guò)HTTP API向數據接收服務(wù)上報數據。
需要注意的是,為了節省用戶(hù)的數據流量和電量,發(fā)送程序不是實(shí)時(shí)上報的。它會(huì )根據設備的功率、網(wǎng)絡(luò )類(lèi)型和數據量來(lái)選擇發(fā)送時(shí)序,數據在發(fā)送前會(huì )被壓縮。并進(jìn)行混淆處理,減少傳輸數據量,提高數據安全性。
當然,數據發(fā)送程序也會(huì )對數據報告中的各種數據發(fā)送失敗、網(wǎng)絡(luò )異常等錯誤進(jìn)行處理,并采用適當的重試機制。
2. 如何測試?
通過(guò)以上結構分析可以看出,數據發(fā)送模塊與核心數據采集業(yè)務(wù)關(guān)系不大,非常穩定,幾乎沒(méi)有變化,所以我們測試的重點(diǎn)主要是數據采集部分,尤其是數據采集部分無(wú)埋點(diǎn)。
要測試數據采集,首先需要有一個(gè)收錄
各種頁(yè)面和元素的Demo App,然后在不同頁(yè)面之間切換,操作頁(yè)面上的元素或者觸發(fā)一個(gè)埋藏事件,然后檢查采集的事件數據是否正確。

有兩種方法可以檢查事件數據。一種是通過(guò)日志打印出詳細的事件數據,觀(guān)察日志檢查;另一種是通過(guò)抓包程序獲取數據并發(fā)送,然后檢查。
后者一般需要配置復雜的代理工具,數據量大,還需要考慮數據的解壓和解密。更難準確定位事件數據。因此,在實(shí)際測試中一般采用前者。

上圖是采集數據的日志截圖。通過(guò)圖中的事件數據,我們發(fā)現字段較多,有些字段可讀性不高,人工檢查耗時(shí)較長(cháng)。
另外,SDK數據采集的主要邏輯基本不變,但每次修改都要覆蓋足夠的回歸,避免遺漏錯誤。
一旦缺陷在線(xiàn)上被遺漏,造成的損失是極其昂貴的。即使缺陷在后續版本中修復,影響也難以消除,因為移動(dòng)應用程序的升級周期難以控制。
此外,GrowingIO 數據采集 SDK 兼容 iOS 8 及以上版本。需要測試系統各個(gè)版本的兼容性,測試工作量明顯。
好在SDK的業(yè)務(wù)變化很少,斷言?xún)热荼容^機械,特別適合自動(dòng)化測試。而且回歸測試的工作量巨大,使用自動(dòng)化測試可以大大提高生產(chǎn)力和質(zhì)量。
3. 選擇一個(gè)測試框架
工人要想做好本職工作,首先要磨礪工具,選擇合適的自動(dòng)化測試框架,再進(jìn)行自動(dòng)化測試。選擇框架時(shí)需要考慮幾個(gè)方面:
目前支持iOS UI自動(dòng)化測試的主要框架對比如下:

考慮影響測試框架選擇的幾個(gè)因素。
首先,使用的語(yǔ)言和框架決定了測試人員的持續學(xué)習成本。iOS SDK 測試人員對Objective-C 有高度的熟悉和掌握,不需要消耗額外的學(xué)習成本。測試和開(kāi)發(fā)相同的技術(shù)堆棧。
其次,根據需要不時(shí)調整測試App程序。使用開(kāi)發(fā)效率高、調試方便的測試框架,可以讓我們在適應新的UI變化和新的需求時(shí),獲得更小的投入產(chǎn)出比。
基于以上考慮,KIF框架已經(jīng)展示了它的優(yōu)勢,而KIF使用XCTest框架,使得iOS程序的測試過(guò)程和單測一樣,可以完全復用單測持續集成過(guò)程,維護持續集成的成本相對降低;此外,KIF 是一個(gè)活躍的開(kāi)源測試框架,具有良好的可擴展性和快速升級。有活躍的社區來(lái)討論和解決使用過(guò)程中遇到的問(wèn)題。
鑒于以上優(yōu)勢,我們選擇KIF作為iOS的UI自動(dòng)化測試框架。
KIF的全稱(chēng)是Keep it Functional,是一個(gè)建立在XCTest之上的UI測試框架,通過(guò)Accessibility定位特定的控件,然后使用私有的API來(lái)操作UI。由于它是建立在 XCTest 之上的,所以你可以完美的使用 XCode 的測試相關(guān)工具。
4. 自動(dòng)化測試的實(shí)現
語(yǔ)言和工具
建立測試環(huán)境
要將Target實(shí)現添加到現有項目中,選擇File → New → Target…菜單項,在iOS → Test中選擇UI Testing Bundle模板,如下圖:

點(diǎn)擊下一步進(jìn)入Target選項頁(yè)面,設置測試項目的相關(guān)項

完成Target設置后,點(diǎn)擊“Finish”按鈕,創(chuàng )建成功。
要安裝 pod,請在命令行終端中輸入以下命令。
sudo gem 安裝 cocoapods
修改或創(chuàng )建項目的pod文件Podfile。
目標'GrowingIOTest'做
pod'SDCycleScrollView','~> 1.75'
pod'MJRefresh'
pod'MBProgressHUD'
結尾
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
其中,新增以下一段
目標'GIOAutoTests' 做
pod'KIF','~> 3.5.1'
結尾
在項目目錄下執行如下安裝命令安裝對應的依賴(lài),測試項目就準備完成了。
吊艙安裝
準備待測程序,在測試Demo工程中集成待測版本的數據采集SDK。
編寫(xiě)測試用例
測試環(huán)境搭建好后,下一步就是編寫(xiě)具體的測試用例。一般測試用例的主要步驟是:
準備測試環(huán)境,執行測試步驟,測試結果,斷言測試結果,報告,清理測試環(huán)境
下面以SDK的unburied元素的點(diǎn)擊事件的自動(dòng)化測試用例為例,說(shuō)明自動(dòng)化用例的準備。
測試用例:
啟動(dòng)App,模擬用戶(hù)滾動(dòng)屏幕找到對話(huà)框按鈕,然后點(diǎn)擊對話(huà)框按鈕。彈出對話(huà)框后,點(diǎn)擊關(guān)閉按鈕,驗證點(diǎn)擊事件是否發(fā)送數據,內容是否正確。
代碼:
-(無(wú)效)設置{
// 一些初始化操作
}
-(void)tearDown{
// 一些結束動(dòng)作
}
-(無(wú)效)testDialogBtnCheck{
/**
功能:點(diǎn)擊對話(huà)框按鈕檢測點(diǎn)擊事件,
**/
[[viewTester usingLabel:@"UIinterface"] 點(diǎn)擊];
//添加向下滾動(dòng)操作
[tester scrollViewWithAccessibilityLabel:@"采集
View" byFractionOfSizeHorizo??ntal:0.0f vertical:10.0f];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"LabelAttribute"] tap];
[[viewTester usingLabel:@"ShowAlert"] 點(diǎn)擊];
[測試員waitForTimeInterval:1];
[[viewTester usingLabel:@"Cancel"] tap];
[測試員waitForTimeInterval:3];
NSArray *clckEventArray = [MockEventQueue eventsFor:@"clck"];
//是否發(fā)送clck事件
if(clckEventArray.count>=2)
{
//判斷點(diǎn)擊事件是否正確發(fā)送
NSDictionary *chevent=[clckEventArray objectAtIndex:clckEventArray.count-1];
NSDictionary *clkchr=[NoburPoMeaProCheck ClckEventCheck:chevent];
//NSLog(@"檢查結果:%@",clkchr);
XCTAssertEqual(clkchr[@"KeysCheck"][@"chres"], @"Passed");
NSLog(@"點(diǎn)擊對話(huà)框按鈕檢測clck事件測試通過(guò)---Passed!");
}
別的
{
NSLog(@"對話(huà)框按鈕被點(diǎn)擊,clck事件測試失?。?@!",clckEventArray);
XCTAssertEqual(1, 0);
}
}
由于我們主要測試SDK的功能,所以測試Demo是我們自己設計的,主要涵蓋了各種UI元素和事件。它的業(yè)務(wù)邏輯比大多數業(yè)務(wù)類(lèi)應用都簡(jiǎn)單,沒(méi)有特別的介紹。
這里介紹斷言的設計。上一篇提到,我們自動(dòng)化測試的重點(diǎn)是數據采集規則是否正確,不關(guān)心數據的存儲和傳輸。
SDK在采集數據時(shí),先將所有的事件加入到一個(gè)隊列中,然后再保存到DB中,所以在進(jìn)行測試的時(shí)候,只需要監聽(tīng)事件隊列,就可以保存和檢索需要的事件根據需要在受監視的事件隊列中斷言。點(diǎn)擊事件發(fā)送的數據結構大致如下:

驗證事件數據,首先要保證字段完整,每個(gè)字段不為空,即數據模式正確;其次,根據需要驗證事件的具體字段,例如點(diǎn)擊事件的類(lèi)型t應該是clck。這些檢查被封裝在一個(gè)單獨的Check方法中,如果檢查通過(guò),該方法返回Passed。
這里通過(guò)ClckEventCheck方法完成具體的業(yè)務(wù)驗證。
執行測試用例
主要介紹如何通過(guò)命令行執行測試。
安裝Command Line Tools(命令行工具包),App Store安裝Xcode默認不會(huì )安裝Command Line Tools,可以在命令行輸入以下命令單獨安裝。
xcode-select --install
在使用命令行執行測試之前,還需要將項目設置為 Shared。打開(kāi)產(chǎn)品→方案→管理方案,勾選項目是否共享,如果不是,勾選后面的復選框進(jìn)行共享。

從命令行執行所有測試用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
執行單個(gè)用例
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-only-testing:GIOAutoTests/ClckEventsTest/test7DialogBtnCheck \
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11'
xcodebuild 的更多使用請參考其使用說(shuō)明。
人 xcodebuild
美化檢測報告
xcodebuild 的輸出讀起來(lái)不是很直觀(guān)。使用xcpretty可以解決這個(gè)問(wèn)題,同時(shí)也可以完成測試報告的生成。
xcpretty 是一種高速靈活的 xcodebuild 輸出格式化工具。其用法如下:
# 從命令行安裝 xcpretty
gem 安裝 xcpretty
命令行執行
xcodebuild -workspace Growing.xcworkspace \
-scheme GrowingIOTest 測試\
-sdk "iphonesimulator13.5" \
-destination platform='iOS Simulator',OS=13.5,name='iPhone 11' \
| xcpretty --report html
生成的測試報告如下:

默認輸出 html 報告在 build/reports/tests.html
5. 覆蓋率統計
在進(jìn)行自動(dòng)化測試時(shí),我們通常希望獲得測試覆蓋率報告來(lái)衡量自動(dòng)化測試的覆蓋率。由于 KIF 是直接基于 XCTest 實(shí)現的,因此您可以輕松使用 Xcode 自帶的覆蓋率統計工具。設置如下:
Product → Scheme → Edit Scheme, Code Coverage 將需要統計覆蓋的被測程序添加到Targets中。

測試完成后,可以獲得覆蓋率統計報告。
6. 持續集成
自動(dòng)化測試的最大價(jià)值在于它可以代替人工進(jìn)行更高效、更頻繁的測試。因此,要充分發(fā)揮自動(dòng)化測試的價(jià)值,最理想的解決方案就是在持續集成環(huán)節加入自動(dòng)化測試。每當有代碼更改時(shí),都會(huì )自動(dòng)執行測試并快速反饋結果。
我們使用Jenkins來(lái)監控代碼倉庫的變化。當有新的commit提交時(shí),Jenkins會(huì )自動(dòng)拉取最新的代碼,調用命令行執行相應的自動(dòng)化測試用例,采集
相應的測試報告,并將測試結果通過(guò)釘釘機器人及時(shí)通知相關(guān)開(kāi)發(fā)人員和測試人員。
當測試失敗時(shí),相關(guān)人員可以第一時(shí)間收到結果并及時(shí)解決。
7. 總結
本文以iOS平臺為例,系統介紹GrowingIO數據采集SDK的主要工作原理、測試方案的設計、自動(dòng)化測試框架的選擇以及自動(dòng)化測試的實(shí)現。希望對從事SDK測試的同學(xué)有所啟發(fā)。
后面我們還會(huì )分享GrowingIO用戶(hù)觸摸SDK的自動(dòng)化測試、Android SDK的自動(dòng)化測試等相關(guān)內容。請繼續關(guān)注我們。
自動(dòng)采集編寫(xiě)(網(wǎng)頁(yè)采集是什么,又是如何采集的呢?(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2021-12-27 20:08
在網(wǎng)頁(yè)設計中,什么是網(wǎng)頁(yè)采集
以及它是如何采集
的?
網(wǎng)頁(yè)采集
作為政府網(wǎng)站網(wǎng)頁(yè)在線(xiàn)歸檔的首要環(huán)節,就是利用相關(guān)工具,按照既定的頻率和方法,及時(shí)篩選出值得保存的政府網(wǎng)頁(yè)內容。網(wǎng)頁(yè)采集
的第一步是確定采集
對象。政府網(wǎng)頁(yè)檔案中存儲的信息采集對象為域名帶有“”的政府網(wǎng)站。為了保證政府網(wǎng)頁(yè)的采集質(zhì)量,需要對目標網(wǎng)站進(jìn)行評估,信息量大。, 選擇原創(chuàng )
信息多、更新頻繁的政府網(wǎng)站作為采集對象。確定要采集的目標政府網(wǎng)站后,
完整性采集和選擇性采集是目前比較常用的網(wǎng)絡(luò )資源采集方式。他們有自己的優(yōu)點(diǎn)和缺點(diǎn)。為了彌補各自的不足,可以通過(guò)結合兩者優(yōu)點(diǎn)的混合采集方式來(lái)補充兩種采集方式的優(yōu)點(diǎn)。,在采集
入選政府網(wǎng)站所有網(wǎng)頁(yè)完整性的同時(shí),通過(guò)人工干預篩選網(wǎng)頁(yè)內容,有選擇地對具有證據價(jià)值、歷史價(jià)值、研究?jì)r(jià)值的重要網(wǎng)頁(yè)進(jìn)行深度挖掘。分級頻繁采集,既兼顧了政府網(wǎng)頁(yè)采集的廣度,又兼顧了重要網(wǎng)頁(yè)的采集深度。
網(wǎng)頁(yè)的采集和抓取最終需要依賴(lài)相應的網(wǎng)絡(luò )爬蟲(chóng)工具。目前,有很多用于網(wǎng)頁(yè)歸檔的爬蟲(chóng)工具。其中Heritrix和HTTrack是最常用的。這些工具可用于定位政府網(wǎng)站頁(yè)面。自動(dòng)批量在線(xiàn)采集。 查看全部
自動(dòng)采集編寫(xiě)(網(wǎng)頁(yè)采集是什么,又是如何采集的呢?(圖))
在網(wǎng)頁(yè)設計中,什么是網(wǎng)頁(yè)采集
以及它是如何采集
的?
網(wǎng)頁(yè)采集
作為政府網(wǎng)站網(wǎng)頁(yè)在線(xiàn)歸檔的首要環(huán)節,就是利用相關(guān)工具,按照既定的頻率和方法,及時(shí)篩選出值得保存的政府網(wǎng)頁(yè)內容。網(wǎng)頁(yè)采集
的第一步是確定采集
對象。政府網(wǎng)頁(yè)檔案中存儲的信息采集對象為域名帶有“”的政府網(wǎng)站。為了保證政府網(wǎng)頁(yè)的采集質(zhì)量,需要對目標網(wǎng)站進(jìn)行評估,信息量大。, 選擇原創(chuàng )
信息多、更新頻繁的政府網(wǎng)站作為采集對象。確定要采集的目標政府網(wǎng)站后,
完整性采集和選擇性采集是目前比較常用的網(wǎng)絡(luò )資源采集方式。他們有自己的優(yōu)點(diǎn)和缺點(diǎn)。為了彌補各自的不足,可以通過(guò)結合兩者優(yōu)點(diǎn)的混合采集方式來(lái)補充兩種采集方式的優(yōu)點(diǎn)。,在采集
入選政府網(wǎng)站所有網(wǎng)頁(yè)完整性的同時(shí),通過(guò)人工干預篩選網(wǎng)頁(yè)內容,有選擇地對具有證據價(jià)值、歷史價(jià)值、研究?jì)r(jià)值的重要網(wǎng)頁(yè)進(jìn)行深度挖掘。分級頻繁采集,既兼顧了政府網(wǎng)頁(yè)采集的廣度,又兼顧了重要網(wǎng)頁(yè)的采集深度。
網(wǎng)頁(yè)的采集和抓取最終需要依賴(lài)相應的網(wǎng)絡(luò )爬蟲(chóng)工具。目前,有很多用于網(wǎng)頁(yè)歸檔的爬蟲(chóng)工具。其中Heritrix和HTTrack是最常用的。這些工具可用于定位政府網(wǎng)站頁(yè)面。自動(dòng)批量在線(xiàn)采集。
自動(dòng)采集編寫(xiě)(瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 162 次瀏覽 ? 2021-12-27 04:01
自動(dòng)采集編寫(xiě)腳本是有一些小學(xué)生小老板的,不過(guò)真正的全自動(dòng)采集是需要程序輔助配合的,如采集網(wǎng)頁(yè)中的alt+tab標簽,通過(guò)發(fā)php代碼請求或者asp代碼請求來(lái)達到自動(dòng)化查詢(xún)操作而已。
瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理
你所要做的,即無(wú)需翻墻,地址全部被爬取了,只需要將他們的url傳入sae就可以調用阿里的接口獲取商品信息了。
我有開(kāi)發(fā)過(guò)一個(gè),地址是:-trade/,一個(gè)簡(jiǎn)單的、基于python的商品采集器,包括如下功能:1.采集網(wǎng)頁(yè)商品信息2.采集京東、、知乎等平臺商品信息3.抓取處理京東、、知乎等平臺用戶(hù)發(fā)布商品信息4.抓取商品詳情頁(yè)采集方法:先用python做出一個(gè)標準的采集url,然后讓aba插件抓取標準的采集url,寫(xiě)一個(gè)爬蟲(chóng)程序,如下,編寫(xiě)程序大概一兩個(gè)小時(shí),后端爬蟲(chóng)程序兩三天,然后請求aba爬蟲(chóng)的html頁(yè)面,完成所有商品信息的抓取,返回實(shí)時(shí)頁(yè)面,把抓取好的html發(fā)布到,或者在網(wǎng)站上安裝上selenium和requests模塊,用這兩個(gè)模塊訪(fǎng)問(wèn)抓取好的商品,用瀏覽器的自動(dòng)抓取腳本功能,用瀏覽器按照cookie找商品id抓取商品信息,將抓取完成的數據返回,然后用aba的javascript頁(yè)面獲取,再用爬蟲(chóng)程序進(jìn)行后續的商品信息獲取和后續的頁(yè)面處理。
補充下以上程序實(shí)現流程:商品采集完成后我會(huì )檢查javascript頁(yè)面和頁(yè)面請求是否加載正常(加載正?;蛘叱鲥e我會(huì )告訴大家這個(gè)必須出了一定的bug才會(huì )這樣),并且頁(yè)面數據返回是否正確,如果返回正確我會(huì )保存一個(gè)log,這樣就能隨時(shí)把任何需要抓取商品信息的請求都通過(guò)code把抓取的商品信息發(fā)布到了aba的后端服務(wù)器,然后從aba后端服務(wù)器抓取數據或者對數據進(jìn)行處理,對數據做出頁(yè)面頁(yè)面顯示處理等。
如果從這個(gè)方法實(shí)現的話(huà),前端抓取只需要安裝javascript模塊,后端服務(wù)器配置網(wǎng)頁(yè)編程對象即可。如果大家覺(jué)得我寫(xiě)的程序不錯的話(huà),請點(diǎn)個(gè)贊,謝謝大家!。 查看全部
自動(dòng)采集編寫(xiě)(瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理方法)
自動(dòng)采集編寫(xiě)腳本是有一些小學(xué)生小老板的,不過(guò)真正的全自動(dòng)采集是需要程序輔助配合的,如采集網(wǎng)頁(yè)中的alt+tab標簽,通過(guò)發(fā)php代碼請求或者asp代碼請求來(lái)達到自動(dòng)化查詢(xún)操作而已。
瀏覽器頁(yè)面模擬點(diǎn)擊獲取數據進(jìn)行后續的數據處理
你所要做的,即無(wú)需翻墻,地址全部被爬取了,只需要將他們的url傳入sae就可以調用阿里的接口獲取商品信息了。
我有開(kāi)發(fā)過(guò)一個(gè),地址是:-trade/,一個(gè)簡(jiǎn)單的、基于python的商品采集器,包括如下功能:1.采集網(wǎng)頁(yè)商品信息2.采集京東、、知乎等平臺商品信息3.抓取處理京東、、知乎等平臺用戶(hù)發(fā)布商品信息4.抓取商品詳情頁(yè)采集方法:先用python做出一個(gè)標準的采集url,然后讓aba插件抓取標準的采集url,寫(xiě)一個(gè)爬蟲(chóng)程序,如下,編寫(xiě)程序大概一兩個(gè)小時(shí),后端爬蟲(chóng)程序兩三天,然后請求aba爬蟲(chóng)的html頁(yè)面,完成所有商品信息的抓取,返回實(shí)時(shí)頁(yè)面,把抓取好的html發(fā)布到,或者在網(wǎng)站上安裝上selenium和requests模塊,用這兩個(gè)模塊訪(fǎng)問(wèn)抓取好的商品,用瀏覽器的自動(dòng)抓取腳本功能,用瀏覽器按照cookie找商品id抓取商品信息,將抓取完成的數據返回,然后用aba的javascript頁(yè)面獲取,再用爬蟲(chóng)程序進(jìn)行后續的商品信息獲取和后續的頁(yè)面處理。
補充下以上程序實(shí)現流程:商品采集完成后我會(huì )檢查javascript頁(yè)面和頁(yè)面請求是否加載正常(加載正?;蛘叱鲥e我會(huì )告訴大家這個(gè)必須出了一定的bug才會(huì )這樣),并且頁(yè)面數據返回是否正確,如果返回正確我會(huì )保存一個(gè)log,這樣就能隨時(shí)把任何需要抓取商品信息的請求都通過(guò)code把抓取的商品信息發(fā)布到了aba的后端服務(wù)器,然后從aba后端服務(wù)器抓取數據或者對數據進(jìn)行處理,對數據做出頁(yè)面頁(yè)面顯示處理等。
如果從這個(gè)方法實(shí)現的話(huà),前端抓取只需要安裝javascript模塊,后端服務(wù)器配置網(wǎng)頁(yè)編程對象即可。如果大家覺(jué)得我寫(xiě)的程序不錯的話(huà),請點(diǎn)個(gè)贊,謝謝大家!。
自動(dòng)采集編寫(xiě)(純Qt編寫(xiě),支持任意Qt版本+任意編譯器+枚舉)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 114 次瀏覽 ? 2021-12-25 14:19
一、前言
數據庫用作數據源,并在許多組態(tài)軟件中使用。指定數據庫類(lèi)型,填寫(xiě)數據庫連接信息,指定對應的數據庫表和字段,以及采集間隔。程序根據采集間隔自動(dòng)采集數據庫數據并綁定到界面控件分配顯示即可。使用數據庫作為數據源有一個(gè)非常大的好處,不需要寫(xiě)額外的通訊代碼,與對方的語(yǔ)言或平臺無(wú)關(guān),也不會(huì )出現不規范、不規范等爭吵不準確的通信協(xié)議導致不正確的分析。情況是它支持任何語(yǔ)言和平臺。畢竟有數據庫作為中間載體過(guò)渡,
體驗地址:提取碼:877p 文件:可執行文件.zip
二、 實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認自帶120多個(gè)控件。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得。在右側的中文屬性欄上,更改相應的屬性會(huì )立即應用到相應的選中控件上,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性列文本翻譯映射機制,效率極高,可以非常方便的擴展其他語(yǔ)言的屬性列。所有控件的屬性都會(huì )自動(dòng)提取出來(lái)并顯示在右側的屬性欄中,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件??梢詫斍爱?huà)布的所有控件配置信息導出到一個(gè)xml文件中??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件??梢酝ㄟ^(guò)拉動(dòng)滑動(dòng)條、勾選模擬數據復選框、輸入文本框三種方式生成數據并應用所有控件??丶С职藗€(gè)方向調節大小,自適應任意分辨率,鍵盤(pán)可上下左右微調位置。以三種方式設置數據:串口采集、網(wǎng)絡(luò )采集、數據庫采集。代碼極其簡(jiǎn)潔,注釋也很詳細,可作為配置原型,自行擴展更多功能。純Qt編寫(xiě),支持任意Qt版本+任意編譯器+任意系統。三、效果圖
四、核心代碼
void frmData::initServer()
{
//實(shí)例化串口類(lèi),綁定信號槽
com = new QextSerialPort(QextSerialPort::EventDriven, this);
connect(com, SIGNAL(readyRead()), this, SLOT(readDataCom()));
//實(shí)例化網(wǎng)絡(luò )通信客戶(hù)端類(lèi),綁定信號槽
tcpClient = new QTcpSocket(this);
connect(tcpClient, SIGNAL(readyRead()), this, SLOT(readDataClient()));
//實(shí)例化網(wǎng)絡(luò )通信服務(wù)端類(lèi),綁定信號槽
tcpSocket = NULL;
tcpServer = new QTcpServer(this);
connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
//開(kāi)啟定時(shí)器讀取數據庫采集數據
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(readDataDb()));
timer->setInterval(1000);
}
void frmData::on_btnOpenDb_clicked()
{
if (ui->btnOpenDb->text() == "打開(kāi)") {
if (App::DbType == "sqlite") {
//先檢查數據庫文件是否存在
QString dbPath = qApp->applicationDirPath() + "/" + App::DbPath;
QFile file(dbPath);
if (file.size() == 0) {
return;
}
dbConn = QSqlDatabase::addDatabase("QSQLITE");
dbConn.setDatabaseName(dbPath);
} else if (App::DbType == "mysql") {
//先檢查數據庫服務(wù)器IP是否通,不檢查直接連接,不存在的IP會(huì )卡很久
QTcpSocket socket;
socket.connectToHost(App::DbPath, App::DbPort);
if (!socket.waitForConnected(2000)) {
return;
} else {
socket.disconnectFromHost();
}
dbConn = QSqlDatabase::addDatabase("QMYSQL");
dbConn.setHostName(App::DbPath);
dbConn.setPort(App::DbPort);
dbConn.setDatabaseName(App::DbName);
dbConn.setUserName(App::DbUser);
dbConn.setPassword(App::DbPwd);
} else {
//暫未支持其他數據庫,可以自行加入
return;
}
bool ok = dbConn.open();
if (ok) {
setEnable(ui->btnOpenDb, false);
ui->btnOpenDb->setText("關(guān)閉");
timer->start();
}
} else {
if (dbConn.isOpen()) {
dbConn.close();
}
setEnable(ui->btnOpenDb, true);
ui->btnOpenDb->setText("打開(kāi)");
timer->stop();
}
}
void frmData::readDataDb()
{
QString sql = QString("select %1 from %2").arg(App::DbColumn).arg(App::DbTable);
QSqlQuery query;
if (query.exec(sql)) {
if (query.next()) {
double value = query.value(0).toDouble();
ui->txtValue->setText(QString::number(value));
append(4, QString("當前值: %1").arg(value));
}
}
}
五、控件引入了150多個(gè)漂亮的控件,涵蓋了各種儀表盤(pán)、進(jìn)度條、進(jìn)度球、指南針、圖表、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)可以獨立成一個(gè)單獨的控件,零耦合,每個(gè)控件都有一個(gè)頭文件和一個(gè)實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,用更少的代碼。qwt 的控制類(lèi)是相互關(guān)聯(lián)且高度耦合的。如果要使用其中一種控件,則必須收錄
所有代碼。全部用純Qt編寫(xiě),QWidget+QPainter繪圖,支持從Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,和內置控件一樣使用,效果最只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。
一些控件提供多種樣式可供選擇,以及多種指示器樣式可供選擇。所有控件都適應窗體的拉伸和變化。集成自定義控件屬性設計器,支持拖動(dòng)設計,所見(jiàn)即所得,支持導入導出xml格式。自帶activex控件演示,所有控件都可以直接在ie瀏覽器中運行。集成fontawesome圖形字體+阿里巴巴iconfont采集
的數百種圖形字體,享受圖形字體的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll等),可以直接集成到qtcreator中進(jìn)行拖動(dòng)設計使用。已經(jīng)有qml版本了,如果用戶(hù)需求大,以后會(huì )考慮pyqt版本。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 查看全部
自動(dòng)采集編寫(xiě)(純Qt編寫(xiě),支持任意Qt版本+任意編譯器+枚舉)
一、前言
數據庫用作數據源,并在許多組態(tài)軟件中使用。指定數據庫類(lèi)型,填寫(xiě)數據庫連接信息,指定對應的數據庫表和字段,以及采集間隔。程序根據采集間隔自動(dòng)采集數據庫數據并綁定到界面控件分配顯示即可。使用數據庫作為數據源有一個(gè)非常大的好處,不需要寫(xiě)額外的通訊代碼,與對方的語(yǔ)言或平臺無(wú)關(guān),也不會(huì )出現不規范、不規范等爭吵不準確的通信協(xié)議導致不正確的分析。情況是它支持任何語(yǔ)言和平臺。畢竟有數據庫作為中間載體過(guò)渡,
體驗地址:提取碼:877p 文件:可執行文件.zip
二、 實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認自帶120多個(gè)控件。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得。在右側的中文屬性欄上,更改相應的屬性會(huì )立即應用到相應的選中控件上,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性列文本翻譯映射機制,效率極高,可以非常方便的擴展其他語(yǔ)言的屬性列。所有控件的屬性都會(huì )自動(dòng)提取出來(lái)并顯示在右側的屬性欄中,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件??梢詫斍爱?huà)布的所有控件配置信息導出到一個(gè)xml文件中??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件??梢酝ㄟ^(guò)拉動(dòng)滑動(dòng)條、勾選模擬數據復選框、輸入文本框三種方式生成數據并應用所有控件??丶С职藗€(gè)方向調節大小,自適應任意分辨率,鍵盤(pán)可上下左右微調位置。以三種方式設置數據:串口采集、網(wǎng)絡(luò )采集、數據庫采集。代碼極其簡(jiǎn)潔,注釋也很詳細,可作為配置原型,自行擴展更多功能。純Qt編寫(xiě),支持任意Qt版本+任意編譯器+任意系統。三、效果圖

四、核心代碼
void frmData::initServer()
{
//實(shí)例化串口類(lèi),綁定信號槽
com = new QextSerialPort(QextSerialPort::EventDriven, this);
connect(com, SIGNAL(readyRead()), this, SLOT(readDataCom()));
//實(shí)例化網(wǎng)絡(luò )通信客戶(hù)端類(lèi),綁定信號槽
tcpClient = new QTcpSocket(this);
connect(tcpClient, SIGNAL(readyRead()), this, SLOT(readDataClient()));
//實(shí)例化網(wǎng)絡(luò )通信服務(wù)端類(lèi),綁定信號槽
tcpSocket = NULL;
tcpServer = new QTcpServer(this);
connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
//開(kāi)啟定時(shí)器讀取數據庫采集數據
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(readDataDb()));
timer->setInterval(1000);
}
void frmData::on_btnOpenDb_clicked()
{
if (ui->btnOpenDb->text() == "打開(kāi)") {
if (App::DbType == "sqlite") {
//先檢查數據庫文件是否存在
QString dbPath = qApp->applicationDirPath() + "/" + App::DbPath;
QFile file(dbPath);
if (file.size() == 0) {
return;
}
dbConn = QSqlDatabase::addDatabase("QSQLITE");
dbConn.setDatabaseName(dbPath);
} else if (App::DbType == "mysql") {
//先檢查數據庫服務(wù)器IP是否通,不檢查直接連接,不存在的IP會(huì )卡很久
QTcpSocket socket;
socket.connectToHost(App::DbPath, App::DbPort);
if (!socket.waitForConnected(2000)) {
return;
} else {
socket.disconnectFromHost();
}
dbConn = QSqlDatabase::addDatabase("QMYSQL");
dbConn.setHostName(App::DbPath);
dbConn.setPort(App::DbPort);
dbConn.setDatabaseName(App::DbName);
dbConn.setUserName(App::DbUser);
dbConn.setPassword(App::DbPwd);
} else {
//暫未支持其他數據庫,可以自行加入
return;
}
bool ok = dbConn.open();
if (ok) {
setEnable(ui->btnOpenDb, false);
ui->btnOpenDb->setText("關(guān)閉");
timer->start();
}
} else {
if (dbConn.isOpen()) {
dbConn.close();
}
setEnable(ui->btnOpenDb, true);
ui->btnOpenDb->setText("打開(kāi)");
timer->stop();
}
}
void frmData::readDataDb()
{
QString sql = QString("select %1 from %2").arg(App::DbColumn).arg(App::DbTable);
QSqlQuery query;
if (query.exec(sql)) {
if (query.next()) {
double value = query.value(0).toDouble();
ui->txtValue->setText(QString::number(value));
append(4, QString("當前值: %1").arg(value));
}
}
}
五、控件引入了150多個(gè)漂亮的控件,涵蓋了各種儀表盤(pán)、進(jìn)度條、進(jìn)度球、指南針、圖表、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)可以獨立成一個(gè)單獨的控件,零耦合,每個(gè)控件都有一個(gè)頭文件和一個(gè)實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,用更少的代碼。qwt 的控制類(lèi)是相互關(guān)聯(lián)且高度耦合的。如果要使用其中一種控件,則必須收錄
所有代碼。全部用純Qt編寫(xiě),QWidget+QPainter繪圖,支持從Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,和內置控件一樣使用,效果最只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置一個(gè)屬性很少,非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。支持windows+linux+mac+embedded linux等任何操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,就是非常方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用,大部分效果只需要設置幾個(gè)屬性,極其方便。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。這是非常方便的。每個(gè)控件都有對應的單獨的DEMO,其中收錄
控件源代碼,方便參考和使用。它還提供了一個(gè)供所有控件使用的集成演示。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。每個(gè)控件的源代碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認配色和demo的配色都很漂亮。超過(guò)130個(gè)可見(jiàn)控件和6個(gè)不可見(jiàn)控件。
一些控件提供多種樣式可供選擇,以及多種指示器樣式可供選擇。所有控件都適應窗體的拉伸和變化。集成自定義控件屬性設計器,支持拖動(dòng)設計,所見(jiàn)即所得,支持導入導出xml格式。自帶activex控件演示,所有控件都可以直接在ie瀏覽器中運行。集成fontawesome圖形字體+阿里巴巴iconfont采集
的數百種圖形字體,享受圖形字體的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll等),可以直接集成到qtcreator中進(jìn)行拖動(dòng)設計使用。已經(jīng)有qml版本了,如果用戶(hù)需求大,以后會(huì )考慮pyqt版本。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 請放心使用。目前提供了26個(gè)版本的dll,包括qt5.12.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p @2.3 msvc2017 32+64 mingw 32+64。不定期添加控件和改進(jìn)控件,不定期更新SDK。歡迎任何建議,謝謝!Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p Qt入門(mén)書(shū)籍推薦霍亞非的《Qt Creator快速入門(mén)》和《Qt5編程入門(mén)》,Qt進(jìn)階書(shū)籍推薦官方《C++ GUI Qt4編程》。強烈推薦程序員修養與規劃系列《大話(huà)程序員》、《程序員成長(cháng)教程》、《程序員的煩惱》,受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p 這將受益匪淺,受益終生!SDK下載鏈接:提取碼:877p
自動(dòng)采集編寫(xiě)(2.工具介紹與設計工具實(shí)現的基本思想是逐個(gè)掃描指定路徑)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2021-12-22 18:09
1.背景
在性能測試的過(guò)程中,往往需要對服務(wù)器的性能進(jìn)行監控,并記錄這些性能指標的結果。無(wú)論是數據庫服務(wù)器還是云下的應用服務(wù)器,都可以通過(guò)nmon進(jìn)行監控,設置點(diǎn)間隔和點(diǎn)數,將性能指標保存成nmon文件,使用Excel插件等工具Nmon_Analyzer、Java GUI工具nmon visualizer等。讀取nmon文件的內容,分析采集的結果。但是,當監控的服務(wù)器數量較多時(shí),性能指標導致多個(gè) nmon 文件依次排列會(huì )很耗時(shí)。同時(shí),手動(dòng)讀取和記錄數據也可能因記錄錯誤而導致意外錯誤。因此,我們可以嘗試使用我們熟悉的編程語(yǔ)言,
2. 工具介紹與設計
該工具實(shí)現的基本思想是將指定路徑下的nmon文件逐一掃描,根據nmon文件的內部格式提取目標性能指標數據,然后對提取的數據進(jìn)行處理,得到結果,并自動(dòng)將結果保存到新一代結果在一個(gè) Excel 文件中。為了更直觀(guān)的獲取用戶(hù)輸入的nmon文件路徑和結果的保存路徑,我們可以編寫(xiě)GUI界面,使用界面上的文本輸入框獲取用戶(hù)的輸入,使用界面上的按鈕觸發(fā)這個(gè) 采集 事件。
圖1 工具設計流程圖
3. 工具實(shí)現
(1)導入需要的模塊
由于我們的工具收錄對文件和路徑的操作,這需要由 os 模塊來(lái)實(shí)現。逐行讀取nmon文件內容時(shí),使用codecs提供的open方法指定打開(kāi)文件的語(yǔ)言編碼,讀取時(shí)會(huì )自動(dòng)轉換為內部unicode。re 模塊是 Python 中用于匹配字符串的唯一模塊。它使用正則表達式對字符串進(jìn)行模糊匹配,并提取出您需要的字符串部分。使用該模塊,您可以實(shí)現逐行掃描進(jìn)行模糊匹配,以找到 CPU 和內存之間的相關(guān)性。表現。xlwt 庫的作用是將數據寫(xiě)入 Excel 表格。Tkinter 是 Python 的標準 GUI 庫。導入 Tkinter 模塊后,您可以使用控件快速創(chuàng )建 GUI 應用程序。特金特。
圖2 Code-導入需要的模塊
(2)窗口的實(shí)現
使用Tkinter模塊創(chuàng )建窗口,插入輸入框控件,獲取用戶(hù)輸入的路徑信息。輸入框的內容存放在StringVar中,按鈕Button設置為綁定鼠標點(diǎn)擊事件。
圖3 窗口代碼實(shí)現
圖3 窗口實(shí)現圖
?。?)寫(xiě)事件代碼-一個(gè)函數,求平均CPU利用率
不同版本的 nmon 文件的內部格式略有不同。因此,在編寫(xiě)程序時(shí),首先要了解目標版本的內部結構,以確定字符串模式匹配時(shí)需要使用nmon文件中性能指標相關(guān)內容的哪些特征。
為了計算平均值,您需要獲取 nmon 文件中記錄的點(diǎn)數。通過(guò)了解 nmon 文件中的 AAA 參數是關(guān)于操作系統和 nmon 本身的一些信息,您可以找到將其提取的行。
圖4 代碼-獲取點(diǎn)數和點(diǎn)間隔
CPU_ALL 參數是所有 CPU 的概覽,顯示所有 CPU 的平均占用率。將記錄的CPU占用率一一取出存儲在數組中,并計算數組元素的平均值,即整個(gè)監控期間CPU的平均使用率。該函數將返回值。
圖 5 Code-Find 平均 CPU 使用率
(4)寫(xiě)事件代碼-一個(gè)函數來(lái)求平均內存使用
同理,內存使用情況是通過(guò)MEM參數獲取的。與CPU情況不同的是,該參數行收錄多個(gè)內存相關(guān)的指標。在監控性能指標時(shí),我們經(jīng)常使用公式1來(lái)計算內存使用情況,所以需要從MEM中獲取內存使用情況,從參數中提取相關(guān)指標,包括memtotal、memfree、cached、buffers,根據公式計算,返回內存使用情況。
公式1 常用的內存占用計算公式
圖 6 Code-Seeking 內存使用
(5)寫(xiě)事件代碼-鼠標點(diǎn)擊事件
該事件用于綁定界面上的按鈕,實(shí)現按鈕點(diǎn)擊時(shí)的一系列操作:從輸入框中取出nmon文件路徑和目標保存路徑,生成Excel文件并創(chuàng )建工作表,并寫(xiě)入進(jìn)入默認的header Contents,調用獲取平均CPU使用率函數和獲取平均內存占用率函數,將返回值寫(xiě)入Excel文件并保存。
圖7 Code-鼠標點(diǎn)擊事件
4. 總結
該工具是一種基于Python語(yǔ)言的簡(jiǎn)單實(shí)踐,可以自動(dòng)批量提取nmon文件中的性能指標結果,并可以利用這個(gè)思路根據需要修改或擴展該工具的功能。使用此工具自動(dòng)獲取性能結果采集相比手動(dòng)讀取值節省了時(shí)間,并避免了記錄錯誤時(shí)的意外錯誤,有助于提高準確性和測試效率。 查看全部
自動(dòng)采集編寫(xiě)(2.工具介紹與設計工具實(shí)現的基本思想是逐個(gè)掃描指定路徑)
1.背景
在性能測試的過(guò)程中,往往需要對服務(wù)器的性能進(jìn)行監控,并記錄這些性能指標的結果。無(wú)論是數據庫服務(wù)器還是云下的應用服務(wù)器,都可以通過(guò)nmon進(jìn)行監控,設置點(diǎn)間隔和點(diǎn)數,將性能指標保存成nmon文件,使用Excel插件等工具Nmon_Analyzer、Java GUI工具nmon visualizer等。讀取nmon文件的內容,分析采集的結果。但是,當監控的服務(wù)器數量較多時(shí),性能指標導致多個(gè) nmon 文件依次排列會(huì )很耗時(shí)。同時(shí),手動(dòng)讀取和記錄數據也可能因記錄錯誤而導致意外錯誤。因此,我們可以嘗試使用我們熟悉的編程語(yǔ)言,
2. 工具介紹與設計
該工具實(shí)現的基本思想是將指定路徑下的nmon文件逐一掃描,根據nmon文件的內部格式提取目標性能指標數據,然后對提取的數據進(jìn)行處理,得到結果,并自動(dòng)將結果保存到新一代結果在一個(gè) Excel 文件中。為了更直觀(guān)的獲取用戶(hù)輸入的nmon文件路徑和結果的保存路徑,我們可以編寫(xiě)GUI界面,使用界面上的文本輸入框獲取用戶(hù)的輸入,使用界面上的按鈕觸發(fā)這個(gè) 采集 事件。
圖1 工具設計流程圖
3. 工具實(shí)現
(1)導入需要的模塊
由于我們的工具收錄對文件和路徑的操作,這需要由 os 模塊來(lái)實(shí)現。逐行讀取nmon文件內容時(shí),使用codecs提供的open方法指定打開(kāi)文件的語(yǔ)言編碼,讀取時(shí)會(huì )自動(dòng)轉換為內部unicode。re 模塊是 Python 中用于匹配字符串的唯一模塊。它使用正則表達式對字符串進(jìn)行模糊匹配,并提取出您需要的字符串部分。使用該模塊,您可以實(shí)現逐行掃描進(jìn)行模糊匹配,以找到 CPU 和內存之間的相關(guān)性。表現。xlwt 庫的作用是將數據寫(xiě)入 Excel 表格。Tkinter 是 Python 的標準 GUI 庫。導入 Tkinter 模塊后,您可以使用控件快速創(chuàng )建 GUI 應用程序。特金特。
圖2 Code-導入需要的模塊
(2)窗口的實(shí)現
使用Tkinter模塊創(chuàng )建窗口,插入輸入框控件,獲取用戶(hù)輸入的路徑信息。輸入框的內容存放在StringVar中,按鈕Button設置為綁定鼠標點(diǎn)擊事件。
圖3 窗口代碼實(shí)現
圖3 窗口實(shí)現圖
?。?)寫(xiě)事件代碼-一個(gè)函數,求平均CPU利用率
不同版本的 nmon 文件的內部格式略有不同。因此,在編寫(xiě)程序時(shí),首先要了解目標版本的內部結構,以確定字符串模式匹配時(shí)需要使用nmon文件中性能指標相關(guān)內容的哪些特征。
為了計算平均值,您需要獲取 nmon 文件中記錄的點(diǎn)數。通過(guò)了解 nmon 文件中的 AAA 參數是關(guān)于操作系統和 nmon 本身的一些信息,您可以找到將其提取的行。
圖4 代碼-獲取點(diǎn)數和點(diǎn)間隔
CPU_ALL 參數是所有 CPU 的概覽,顯示所有 CPU 的平均占用率。將記錄的CPU占用率一一取出存儲在數組中,并計算數組元素的平均值,即整個(gè)監控期間CPU的平均使用率。該函數將返回值。
圖 5 Code-Find 平均 CPU 使用率
(4)寫(xiě)事件代碼-一個(gè)函數來(lái)求平均內存使用
同理,內存使用情況是通過(guò)MEM參數獲取的。與CPU情況不同的是,該參數行收錄多個(gè)內存相關(guān)的指標。在監控性能指標時(shí),我們經(jīng)常使用公式1來(lái)計算內存使用情況,所以需要從MEM中獲取內存使用情況,從參數中提取相關(guān)指標,包括memtotal、memfree、cached、buffers,根據公式計算,返回內存使用情況。
公式1 常用的內存占用計算公式
圖 6 Code-Seeking 內存使用
(5)寫(xiě)事件代碼-鼠標點(diǎn)擊事件
該事件用于綁定界面上的按鈕,實(shí)現按鈕點(diǎn)擊時(shí)的一系列操作:從輸入框中取出nmon文件路徑和目標保存路徑,生成Excel文件并創(chuàng )建工作表,并寫(xiě)入進(jìn)入默認的header Contents,調用獲取平均CPU使用率函數和獲取平均內存占用率函數,將返回值寫(xiě)入Excel文件并保存。
圖7 Code-鼠標點(diǎn)擊事件
4. 總結
該工具是一種基于Python語(yǔ)言的簡(jiǎn)單實(shí)踐,可以自動(dòng)批量提取nmon文件中的性能指標結果,并可以利用這個(gè)思路根據需要修改或擴展該工具的功能。使用此工具自動(dòng)獲取性能結果采集相比手動(dòng)讀取值節省了時(shí)間,并避免了記錄錯誤時(shí)的意外錯誤,有助于提高準確性和測試效率。
自動(dòng)采集編寫(xiě)(優(yōu)采云V8.2.0版新增邊點(diǎn)擊邊采集示例: )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 237 次瀏覽 ? 2021-12-17 20:09
)
網(wǎng)站有很多,點(diǎn)擊【加載更多】或【顯示20多】按鈕可以翻頁(yè)。搜狗微信首頁(yè)和其他頁(yè)面都是這種情況。
對于此類(lèi)網(wǎng)頁(yè),新版優(yōu)采云V8.2.0 增加了【點(diǎn)擊和點(diǎn)擊采集】的功能,您可以點(diǎn)擊【加載更多】 button] 加載一個(gè)新數據,edge 采集 每次加載新數據。
示例:設置為5次點(diǎn)擊,然后1次點(diǎn)擊后,采集第一次點(diǎn)擊后加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊后加載的數據... ...最多20次點(diǎn)擊,采集 20次點(diǎn)擊后加載的數據。
使用智能識別和自行配置的采集規則,可以實(shí)現【點(diǎn)擊后采集】。具體設置方法如下。
一、使用智能識別實(shí)現【點(diǎn)擊和點(diǎn)擊采集】
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,選擇【智能識別網(wǎng)頁(yè)】,等待智能識別完成。
智能識別結束后,可以看到它自動(dòng)識別了頁(yè)面的【滾動(dòng)】、【加載更多按鈕】和【列表數據】。
鼠標移到圖片上右擊,選擇【在新標簽頁(yè)中打開(kāi)圖片】,即可查看高清大圖
Step2:點(diǎn)擊【生成采集設置】自動(dòng)生成對應的采集流程,方便用戶(hù)編輯修改。
Step3:如圖所示,通過(guò)流程中生成的【循環(huán)加載更多按鈕】+嵌入【循環(huán)列表】的步驟,可以邊點(diǎn)擊數據邊點(diǎn)擊。
但是這個(gè)過(guò)程還是存在一些問(wèn)題,需要我們手動(dòng)修改。
?、僮⒁庥^(guān)察頁(yè)面,這個(gè)頁(yè)面點(diǎn)擊5次到最后,100條數據全部加載完畢,所以我們設置翻頁(yè)次數為5次。進(jìn)入【循環(huán)加載更多按鈕】設置頁(yè)面,發(fā)現優(yōu)采云已經(jīng)為我們自動(dòng)設置好了。
?、谠倏础痉?yè)】這一步,因為這個(gè)網(wǎng)頁(yè)不需要翻頁(yè),所以這一步是多余的,需要刪除。注意在刪除【滾動(dòng)頁(yè)面】之前需要先刪除【循環(huán)列表】,以免誤刪。
Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。
二、自行配置采集 任務(wù)實(shí)現【點(diǎn)擊采集】
如果不使用智能識別,如何自己配置采集任務(wù)實(shí)現【點(diǎn)擊側采集】?下面是詳細的解釋。
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。關(guān)閉智能識別,我們自己配置采集任務(wù)。
Step2:根據需求配置提取數據。在示例中,我們提取列表數據。提取方法請參考采集列表數據教程。
Step3:提取列表數據,過(guò)程中會(huì )自動(dòng)生成【循環(huán)列表】步驟。自動(dòng)生成的【循環(huán)列表】不能收錄所有 100 個(gè) 文章 列表。我們需要修改XPath。
進(jìn)入【循環(huán)列表】設置頁(yè)面,修改XPath為:.//*[@id='pc_0_d']//li.
Step4:找到并選擇【加載更多內容】按鈕,在彈出的操作提示框中選擇【循環(huán)點(diǎn)擊單個(gè)元素】,自動(dòng)生成【循環(huán)翻頁(yè)】步驟。
【循環(huán)翻頁(yè)】在步驟中嵌入了【循環(huán)列表】的步驟,方便我們點(diǎn)擊采集數據。
再次注意頁(yè)面,這個(gè)頁(yè)面會(huì )被點(diǎn)擊5次到最后,100條數據全部加載,所以我們設置翻頁(yè)次數為5次。
Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。
查看全部
自動(dòng)采集編寫(xiě)(優(yōu)采云V8.2.0版新增邊點(diǎn)擊邊采集示例:
)
網(wǎng)站有很多,點(diǎn)擊【加載更多】或【顯示20多】按鈕可以翻頁(yè)。搜狗微信首頁(yè)和其他頁(yè)面都是這種情況。
對于此類(lèi)網(wǎng)頁(yè),新版優(yōu)采云V8.2.0 增加了【點(diǎn)擊和點(diǎn)擊采集】的功能,您可以點(diǎn)擊【加載更多】 button] 加載一個(gè)新數據,edge 采集 每次加載新數據。
示例:設置為5次點(diǎn)擊,然后1次點(diǎn)擊后,采集第一次點(diǎn)擊后加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊后加載的數據... ...最多20次點(diǎn)擊,采集 20次點(diǎn)擊后加載的數據。
使用智能識別和自行配置的采集規則,可以實(shí)現【點(diǎn)擊后采集】。具體設置方法如下。
一、使用智能識別實(shí)現【點(diǎn)擊和點(diǎn)擊采集】
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
打開(kāi)網(wǎng)頁(yè)后,選擇【智能識別網(wǎng)頁(yè)】,等待智能識別完成。
智能識別結束后,可以看到它自動(dòng)識別了頁(yè)面的【滾動(dòng)】、【加載更多按鈕】和【列表數據】。

鼠標移到圖片上右擊,選擇【在新標簽頁(yè)中打開(kāi)圖片】,即可查看高清大圖
Step2:點(diǎn)擊【生成采集設置】自動(dòng)生成對應的采集流程,方便用戶(hù)編輯修改。

Step3:如圖所示,通過(guò)流程中生成的【循環(huán)加載更多按鈕】+嵌入【循環(huán)列表】的步驟,可以邊點(diǎn)擊數據邊點(diǎn)擊。
但是這個(gè)過(guò)程還是存在一些問(wèn)題,需要我們手動(dòng)修改。
?、僮⒁庥^(guān)察頁(yè)面,這個(gè)頁(yè)面點(diǎn)擊5次到最后,100條數據全部加載完畢,所以我們設置翻頁(yè)次數為5次。進(jìn)入【循環(huán)加載更多按鈕】設置頁(yè)面,發(fā)現優(yōu)采云已經(jīng)為我們自動(dòng)設置好了。
?、谠倏础痉?yè)】這一步,因為這個(gè)網(wǎng)頁(yè)不需要翻頁(yè),所以這一步是多余的,需要刪除。注意在刪除【滾動(dòng)頁(yè)面】之前需要先刪除【循環(huán)列表】,以免誤刪。

Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。

二、自行配置采集 任務(wù)實(shí)現【點(diǎn)擊采集】
如果不使用智能識別,如何自己配置采集任務(wù)實(shí)現【點(diǎn)擊側采集】?下面是詳細的解釋。
示例網(wǎng)址:
Step1:在首頁(yè)輸入框中輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集】,優(yōu)采云會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。關(guān)閉智能識別,我們自己配置采集任務(wù)。

Step2:根據需求配置提取數據。在示例中,我們提取列表數據。提取方法請參考采集列表數據教程。

Step3:提取列表數據,過(guò)程中會(huì )自動(dòng)生成【循環(huán)列表】步驟。自動(dòng)生成的【循環(huán)列表】不能收錄所有 100 個(gè) 文章 列表。我們需要修改XPath。
進(jìn)入【循環(huán)列表】設置頁(yè)面,修改XPath為:.//*[@id='pc_0_d']//li.

Step4:找到并選擇【加載更多內容】按鈕,在彈出的操作提示框中選擇【循環(huán)點(diǎn)擊單個(gè)元素】,自動(dòng)生成【循環(huán)翻頁(yè)】步驟。
【循環(huán)翻頁(yè)】在步驟中嵌入了【循環(huán)列表】的步驟,方便我們點(diǎn)擊采集數據。
再次注意頁(yè)面,這個(gè)頁(yè)面會(huì )被點(diǎn)擊5次到最后,100條數據全部加載,所以我們設置翻頁(yè)次數為5次。

Step4:點(diǎn)擊左上角的【采集】,選擇【Start Local采集】,優(yōu)采云會(huì )自動(dòng)啟動(dòng)采集數據。
注意觀(guān)察頁(yè)面:優(yōu)采云點(diǎn)擊一次,采集第一次點(diǎn)擊加載的數據,第二次繼續點(diǎn)擊,采集第二次點(diǎn)擊加載的數據... ...直到數據全部采集 完成。
自動(dòng)采集編寫(xiě)( 如何抓取遠程網(wǎng)頁(yè)?遠程HTML的二進(jìn)制代碼主要語(yǔ)句)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 154 次瀏覽 ? 2021-12-16 23:50
如何抓取遠程網(wǎng)頁(yè)?遠程HTML的二進(jìn)制代碼主要語(yǔ)句)
如何用asp編寫(xiě)網(wǎng)站data采集程序?
引用:如果你想自動(dòng)從網(wǎng)上采集 數據寫(xiě)入本地數據庫,那么看看本文介紹的方法。為了解決這個(gè)問(wèn)題,作者花了三天時(shí)間,終于完成了。下面是完整的ASP代碼,可以讓你隨意存儲來(lái)自互聯(lián)網(wǎng)的數據采集,非常實(shí)用!
一、網(wǎng)站數據采集方法
目前網(wǎng)站data采集的方法主要有兩種,一種是使用現成的軟件,另一種是自己編寫(xiě)采集程序。
1、使用現成的軟件
很多軟件(如網(wǎng)絡(luò )信息采集大師、BK通用信息采集系統等)都可以采集在線(xiàn)數據,只要你去百度、谷歌、“數據< @采集搜索關(guān)鍵詞的“軟件”即可找到,現在這類(lèi)軟件很多,都是用C、DEPHI或VB編寫(xiě)的,一般都提供免費版本給你下載試試。雖然他們也可以采集在線(xiàn)數據,但是采集之后的數據要么不能存入數據庫,要么只能存入前10項;如果你想突破這個(gè)限制,你現在必須花錢(qián)購買(mǎi)官方數據版。筆者嘗試了所有數據采集軟件,發(fā)現都一樣!
2、編寫(xiě)自己的ASP采集程序
由于現成的軟件不能免費使用,為了省錢(qián),只能自己寫(xiě)ASP網(wǎng)站data采集程序!以下是程序的代碼,如果你想要免費的采集網(wǎng)站數據,直接運行即可。
二、網(wǎng)站數據采集進(jìn)程
編寫(xiě)ASP網(wǎng)站data采集程序,首先需要抓取遠程網(wǎng)頁(yè)的源碼。微軟serverXMLHTTP組件可以幫你抓取遠程頁(yè)面的二進(jìn)制代碼,然后將代碼轉換成字符,進(jìn)行攔截和替換處理,就可以得到你想要的數據;最后,顯示數據或將其寫(xiě)入數據庫。采集工作完成。
三、如何抓取遠程網(wǎng)頁(yè)?
抓取遠程HTML的二進(jìn)制代碼主要語(yǔ)句如下: 查看全部
自動(dòng)采集編寫(xiě)(
如何抓取遠程網(wǎng)頁(yè)?遠程HTML的二進(jìn)制代碼主要語(yǔ)句)
如何用asp編寫(xiě)網(wǎng)站data采集程序?
引用:如果你想自動(dòng)從網(wǎng)上采集 數據寫(xiě)入本地數據庫,那么看看本文介紹的方法。為了解決這個(gè)問(wèn)題,作者花了三天時(shí)間,終于完成了。下面是完整的ASP代碼,可以讓你隨意存儲來(lái)自互聯(lián)網(wǎng)的數據采集,非常實(shí)用!
一、網(wǎng)站數據采集方法
目前網(wǎng)站data采集的方法主要有兩種,一種是使用現成的軟件,另一種是自己編寫(xiě)采集程序。
1、使用現成的軟件
很多軟件(如網(wǎng)絡(luò )信息采集大師、BK通用信息采集系統等)都可以采集在線(xiàn)數據,只要你去百度、谷歌、“數據< @采集搜索關(guān)鍵詞的“軟件”即可找到,現在這類(lèi)軟件很多,都是用C、DEPHI或VB編寫(xiě)的,一般都提供免費版本給你下載試試。雖然他們也可以采集在線(xiàn)數據,但是采集之后的數據要么不能存入數據庫,要么只能存入前10項;如果你想突破這個(gè)限制,你現在必須花錢(qián)購買(mǎi)官方數據版。筆者嘗試了所有數據采集軟件,發(fā)現都一樣!
2、編寫(xiě)自己的ASP采集程序
由于現成的軟件不能免費使用,為了省錢(qián),只能自己寫(xiě)ASP網(wǎng)站data采集程序!以下是程序的代碼,如果你想要免費的采集網(wǎng)站數據,直接運行即可。
二、網(wǎng)站數據采集進(jìn)程
編寫(xiě)ASP網(wǎng)站data采集程序,首先需要抓取遠程網(wǎng)頁(yè)的源碼。微軟serverXMLHTTP組件可以幫你抓取遠程頁(yè)面的二進(jìn)制代碼,然后將代碼轉換成字符,進(jìn)行攔截和替換處理,就可以得到你想要的數據;最后,顯示數據或將其寫(xiě)入數據庫。采集工作完成。
三、如何抓取遠程網(wǎng)頁(yè)?
抓取遠程HTML的二進(jìn)制代碼主要語(yǔ)句如下:
自動(dòng)采集編寫(xiě)(IT圈內巡檢日志(一):人工巡檢的制勝法寶)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2021-12-15 08:09
前言:先寫(xiě)
如果只檢查一兩個(gè)庫,則無(wú)需使用此方法。這種方式適用于獲取大量的檢測日志(比如使用腳本從服務(wù)器采集更多的服務(wù)器檢測日志信息),一般我們需要一份拷貝來(lái)寫(xiě)報告,其中的內容檢查日志需要填詞然后分析,真的很累。
一、前言:還需要人工檢查嗎?
說(shuō)到檢驗,很多人嗤之以鼻:現在監控產(chǎn)品遍布全球,比如Zabbix、Prometheus、Graphite等,還需要檢驗嗎?
答案是肯定的,更何況每個(gè)監控產(chǎn)品都有運維盲點(diǎn)。從知識庫的使用來(lái)看,監控產(chǎn)品還是不能替代人工巡檢的一些經(jīng)驗(當然,未來(lái)可能很快會(huì )被替代,但不知道什么時(shí)候)。當不規則的、異常的零星字符經(jīng)過(guò)一個(gè)運維人員身邊時(shí),他敏銳的鬢角被拉長(cháng),眉毛揚起,大腦快速檢索自己的知識庫,用一個(gè)可能只有1%相似度的對比成功率,第一時(shí)間確定異常的基本原因,這已經(jīng)是IT圈最常見(jiàn)的場(chǎng)景了。所以,必須強調的是,人工檢查仍然是保證系統穩定性的最關(guān)鍵手段之一。在日常監控的基礎上,保持一定的人工巡檢頻率,是保證穩定運行的法寶。
二、以前的檢驗報告怎么寫(xiě)
一般流程是這樣的:
第一步:進(jìn)入用戶(hù)系統采集信息。通常通過(guò)腳本、自動(dòng)化采集和少量的手工勞動(dòng)采集來(lái)完成。采集 腳本(或程序)是每個(gè)公司的秘密武器。他們檢查同一個(gè)對象。90%的企業(yè)采集擁有相同的信息,剩下的10%是他們的“內部信息”。畢竟在一個(gè)專(zhuān)業(yè)修煉多年,掌握一些“核心技術(shù)”是理所當然的。
第二步:根據用戶(hù)系統分類(lèi)或機器分類(lèi),各系統按一定格式出具檢測報告。
上報是運維人員最頭疼的事。比如用戶(hù)數據庫系統有上百套,每套報表都要下發(fā)。從采集的日志文件,Ctrl+C,Ctrl+V,我把原來(lái)的日志采集復制到了檢查報告中,非常不爽和痛苦。另外,采集的原木密密麻麻,久了眼睛不舒服。
三、Python 幫忙寫(xiě)報告
大概的概念:
按照指定格式到客戶(hù)端服務(wù)器上的采集日志(分隔符可自定義),將日志下載到本地,放到指定目錄下,運行python程序自動(dòng)生成word檢測報告。
它具有以下特點(diǎn):
1、 批量讀取巡檢日志文件,每個(gè)日志文件生成一個(gè)word文件,從日志文件名中截取word文件名。
2、 可以先填寫(xiě)檢查意見(jiàn)
3、 還是需要打開(kāi)文檔,手動(dòng)填寫(xiě)其他意見(jiàn)(畢竟這些意見(jiàn)是我們的財富,當然如果知識庫功能用得好,就省略了)。
安裝python,安裝pip,然后安裝pip install python-docx,省略。
第一步:導入包:
import re # 正則表達式使用
from docx import Document #word 文檔使用
import os #用于遍歷目錄
從 docx.oxml.ns 導入 nsdecls #word 樣式
from docx.oxml import parse_xml # 文字樣式
步驟 2:定義四個(gè)函數。第一個(gè)函數:數字大小寫(xiě)轉換函數:num_to_char
該函數主要用于將阿拉伯數字轉換為中文大寫(xiě)。例如,如果是一級標題,則使用“一、patrol content”,這是相對于“1、patrol content”的標準寫(xiě)法。
代碼顯示如下:
第二個(gè)函數:get_title函數
這個(gè)功能就是檢驗項目的“標題功能”。例如,“檢查文件系統”就是“主機文件系統檢查”。畢竟我們不是歪的,標題應該還是中文的。
第三個(gè)函數:get_knowledge知識庫函數
該函數為知識庫函數,即當確定采集的結果存在一定問(wèn)題時(shí),利用知識庫輸出初步分析結果。其實(shí)對于動(dòng)態(tài)比較和各種相似度分析,python是很擅長(cháng)的,這里只是一個(gè)函數展示。
第四個(gè)函數:list_dir
該函數用于獲取指定目錄下的所有特定文件。比如這里指定的check*.log格式的文件就是要處理的文件。
因為python代碼有嚴格的縮進(jìn)限制,所有截圖都是給大家看的。部分代碼源碼網(wǎng)絡(luò )。
源碼:由于編輯器的原因,以下可復現的代碼沒(méi)有出現縮進(jìn),請參考圖片:
第一個(gè)函數源碼(參考):
def num_to_char(num):
"""數字轉中文"""
數量 = str(數量)
new_str = ""
num_dict = {"0": u"0", "1": u"one", "2": u"二", "3": u"三", "4": u"四", "5 ": u"五", "6": u"六", "7": u"七", "8": u"八",
"9": 你"九"}
列表編號 = 列表(編號)
# 打?。斜砭幪枺?br /> 舒 = []
對于列表編號中的 i:
# 打?。╪um_dict[i])
shu.append(num_dict[i])
new_str = “”.join(shu)
# 打?。╪ew_str)
返回 new_str
第二個(gè)函數的源碼(參考):
def get_title(flag_fg):# flag_fg是傳入的分隔段,其實(shí)就是英文標題
如果在 flag_fg 中“檢查文件系統”:
xj_title_hs ='主機文件系統檢查'
elif'Check CPU &MEM' in flag_fg:
xj_title_hs ='CPU,內存檢查'
elif'Check ETH' 在 flag_fg 中:
xj_title_hs ='網(wǎng)卡狀態(tài)檢查'
elif'檢查 /var/log/message' 在 flag_fg 中:
xj_title_hs ='主機日志檢查'
elif'檢查transparent_hugepage'在flag_fg:
xj_title_hs ='LINUX系統透明大頁(yè)面檢查'
elif'Check nr_hugepages' 在 flag_fg 中:
xj_title_hs ='Linux系統大頁(yè)面打開(kāi)狀態(tài)檢查'
elif'檢查內存信息'在 flag_fg 中:
xj_title_hs ='PLNOCHECK'
###...
別的:
xj_title_hs = flag_fg #防止無(wú)休止的英文標題很重要
返回 xj_title_hs
第三個(gè)函數源碼(參考):
def get_knowledge(str_input):
str_output = [] # 如果什么都沒(méi)有發(fā)現,首先輸出和檢查是正常的。
str_output_text='檢查正常'
如果在 str_input 中“[always] madvise never”:
str_output = ['Linux 沒(méi)有關(guān)閉透明大頁(yè)面。根據ORACLE安裝要求,應該關(guān)閉透明大頁(yè)面,提高ORACLE內存和IO讀寫(xiě)性能','1111111']
elif'always madvise [never]' 在 str_input 中:
str_output = ['檢查正常:Linux 已關(guān)閉透明大頁(yè)面','000000']
別的:
str_output = ['檢查正常','000000']
返回 str_output
#這個(gè)例子是靜態(tài)比較。其實(shí)就是進(jìn)行動(dòng)態(tài)比較和各種相似度分析。Python非常擅長(cháng)
#知識庫分析,應該能夠區分正常檢查結果和異常檢查結果。本例中'000000'表示正常,'1111111'表示異常
第四個(gè)函數源碼(參考):
def list_dir(file_dir):
dir_list = os.listdir(file_dir)
file_r = []
對于 dir_list 中的 cur_file:
# 準確獲取一個(gè)txt的位置,并使用字符串拼接
路徑 = os.path.join(file_dir, cur_file)
如果 cur_file.startswith("check") & path.endswith(".log"):
file_r.append(路徑)
返回文件_r
后續:主要功能介紹。主要功能實(shí)現文件讀取、文件切分、詞表操作等,是實(shí)現檢查日志自動(dòng)生成詞文件的主要部門(mén)。 查看全部
自動(dòng)采集編寫(xiě)(IT圈內巡檢日志(一):人工巡檢的制勝法寶)
前言:先寫(xiě)
如果只檢查一兩個(gè)庫,則無(wú)需使用此方法。這種方式適用于獲取大量的檢測日志(比如使用腳本從服務(wù)器采集更多的服務(wù)器檢測日志信息),一般我們需要一份拷貝來(lái)寫(xiě)報告,其中的內容檢查日志需要填詞然后分析,真的很累。
一、前言:還需要人工檢查嗎?
說(shuō)到檢驗,很多人嗤之以鼻:現在監控產(chǎn)品遍布全球,比如Zabbix、Prometheus、Graphite等,還需要檢驗嗎?
答案是肯定的,更何況每個(gè)監控產(chǎn)品都有運維盲點(diǎn)。從知識庫的使用來(lái)看,監控產(chǎn)品還是不能替代人工巡檢的一些經(jīng)驗(當然,未來(lái)可能很快會(huì )被替代,但不知道什么時(shí)候)。當不規則的、異常的零星字符經(jīng)過(guò)一個(gè)運維人員身邊時(shí),他敏銳的鬢角被拉長(cháng),眉毛揚起,大腦快速檢索自己的知識庫,用一個(gè)可能只有1%相似度的對比成功率,第一時(shí)間確定異常的基本原因,這已經(jīng)是IT圈最常見(jiàn)的場(chǎng)景了。所以,必須強調的是,人工檢查仍然是保證系統穩定性的最關(guān)鍵手段之一。在日常監控的基礎上,保持一定的人工巡檢頻率,是保證穩定運行的法寶。
二、以前的檢驗報告怎么寫(xiě)
一般流程是這樣的:
第一步:進(jìn)入用戶(hù)系統采集信息。通常通過(guò)腳本、自動(dòng)化采集和少量的手工勞動(dòng)采集來(lái)完成。采集 腳本(或程序)是每個(gè)公司的秘密武器。他們檢查同一個(gè)對象。90%的企業(yè)采集擁有相同的信息,剩下的10%是他們的“內部信息”。畢竟在一個(gè)專(zhuān)業(yè)修煉多年,掌握一些“核心技術(shù)”是理所當然的。
第二步:根據用戶(hù)系統分類(lèi)或機器分類(lèi),各系統按一定格式出具檢測報告。
上報是運維人員最頭疼的事。比如用戶(hù)數據庫系統有上百套,每套報表都要下發(fā)。從采集的日志文件,Ctrl+C,Ctrl+V,我把原來(lái)的日志采集復制到了檢查報告中,非常不爽和痛苦。另外,采集的原木密密麻麻,久了眼睛不舒服。
三、Python 幫忙寫(xiě)報告
大概的概念:
按照指定格式到客戶(hù)端服務(wù)器上的采集日志(分隔符可自定義),將日志下載到本地,放到指定目錄下,運行python程序自動(dòng)生成word檢測報告。
它具有以下特點(diǎn):
1、 批量讀取巡檢日志文件,每個(gè)日志文件生成一個(gè)word文件,從日志文件名中截取word文件名。
2、 可以先填寫(xiě)檢查意見(jiàn)
3、 還是需要打開(kāi)文檔,手動(dòng)填寫(xiě)其他意見(jiàn)(畢竟這些意見(jiàn)是我們的財富,當然如果知識庫功能用得好,就省略了)。
安裝python,安裝pip,然后安裝pip install python-docx,省略。
第一步:導入包:
import re # 正則表達式使用
from docx import Document #word 文檔使用
import os #用于遍歷目錄
從 docx.oxml.ns 導入 nsdecls #word 樣式
from docx.oxml import parse_xml # 文字樣式
步驟 2:定義四個(gè)函數。第一個(gè)函數:數字大小寫(xiě)轉換函數:num_to_char
該函數主要用于將阿拉伯數字轉換為中文大寫(xiě)。例如,如果是一級標題,則使用“一、patrol content”,這是相對于“1、patrol content”的標準寫(xiě)法。
代碼顯示如下:

第二個(gè)函數:get_title函數
這個(gè)功能就是檢驗項目的“標題功能”。例如,“檢查文件系統”就是“主機文件系統檢查”。畢竟我們不是歪的,標題應該還是中文的。

第三個(gè)函數:get_knowledge知識庫函數
該函數為知識庫函數,即當確定采集的結果存在一定問(wèn)題時(shí),利用知識庫輸出初步分析結果。其實(shí)對于動(dòng)態(tài)比較和各種相似度分析,python是很擅長(cháng)的,這里只是一個(gè)函數展示。

第四個(gè)函數:list_dir
該函數用于獲取指定目錄下的所有特定文件。比如這里指定的check*.log格式的文件就是要處理的文件。

因為python代碼有嚴格的縮進(jìn)限制,所有截圖都是給大家看的。部分代碼源碼網(wǎng)絡(luò )。
源碼:由于編輯器的原因,以下可復現的代碼沒(méi)有出現縮進(jìn),請參考圖片:
第一個(gè)函數源碼(參考):
def num_to_char(num):
"""數字轉中文"""
數量 = str(數量)
new_str = ""
num_dict = {"0": u"0", "1": u"one", "2": u"二", "3": u"三", "4": u"四", "5 ": u"五", "6": u"六", "7": u"七", "8": u"八",
"9": 你"九"}
列表編號 = 列表(編號)
# 打?。斜砭幪枺?br /> 舒 = []
對于列表編號中的 i:
# 打?。╪um_dict[i])
shu.append(num_dict[i])
new_str = “”.join(shu)
# 打?。╪ew_str)
返回 new_str
第二個(gè)函數的源碼(參考):
def get_title(flag_fg):# flag_fg是傳入的分隔段,其實(shí)就是英文標題
如果在 flag_fg 中“檢查文件系統”:
xj_title_hs ='主機文件系統檢查'
elif'Check CPU &MEM' in flag_fg:
xj_title_hs ='CPU,內存檢查'
elif'Check ETH' 在 flag_fg 中:
xj_title_hs ='網(wǎng)卡狀態(tài)檢查'
elif'檢查 /var/log/message' 在 flag_fg 中:
xj_title_hs ='主機日志檢查'
elif'檢查transparent_hugepage'在flag_fg:
xj_title_hs ='LINUX系統透明大頁(yè)面檢查'
elif'Check nr_hugepages' 在 flag_fg 中:
xj_title_hs ='Linux系統大頁(yè)面打開(kāi)狀態(tài)檢查'
elif'檢查內存信息'在 flag_fg 中:
xj_title_hs ='PLNOCHECK'
###...
別的:
xj_title_hs = flag_fg #防止無(wú)休止的英文標題很重要
返回 xj_title_hs
第三個(gè)函數源碼(參考):
def get_knowledge(str_input):
str_output = [] # 如果什么都沒(méi)有發(fā)現,首先輸出和檢查是正常的。
str_output_text='檢查正常'
如果在 str_input 中“[always] madvise never”:
str_output = ['Linux 沒(méi)有關(guān)閉透明大頁(yè)面。根據ORACLE安裝要求,應該關(guān)閉透明大頁(yè)面,提高ORACLE內存和IO讀寫(xiě)性能','1111111']
elif'always madvise [never]' 在 str_input 中:
str_output = ['檢查正常:Linux 已關(guān)閉透明大頁(yè)面','000000']
別的:
str_output = ['檢查正常','000000']
返回 str_output
#這個(gè)例子是靜態(tài)比較。其實(shí)就是進(jìn)行動(dòng)態(tài)比較和各種相似度分析。Python非常擅長(cháng)
#知識庫分析,應該能夠區分正常檢查結果和異常檢查結果。本例中'000000'表示正常,'1111111'表示異常
第四個(gè)函數源碼(參考):
def list_dir(file_dir):
dir_list = os.listdir(file_dir)
file_r = []
對于 dir_list 中的 cur_file:
# 準確獲取一個(gè)txt的位置,并使用字符串拼接
路徑 = os.path.join(file_dir, cur_file)
如果 cur_file.startswith("check") & path.endswith(".log"):
file_r.append(路徑)
返回文件_r
后續:主要功能介紹。主要功能實(shí)現文件讀取、文件切分、詞表操作等,是實(shí)現檢查日志自動(dòng)生成詞文件的主要部門(mén)。
自動(dòng)采集編寫(xiě)( 出售友情鏈接網(wǎng)站收錄上1000基本你在友情鏈接交易平臺鏈是沒(méi)問(wèn)題了)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 132 次瀏覽 ? 2021-12-12 18:07
出售友情鏈接網(wǎng)站收錄上1000基本你在友情鏈接交易平臺鏈是沒(méi)問(wèn)題了)
用戶(hù)演示站:
源碼使用環(huán)境
支持環(huán)境:WindowsnuxPHP5.3/4/5/67.1mysql5.
推薦環(huán)境:linuxphp7.1mysql5.6
源代碼功能詳情
1、內置大量?jì)热?,安裝后可省時(shí)省力;
2、內置高效采集插件,每天自動(dòng)采集一次(間隔可自行修改),真正無(wú)人值守;
3、7 內置 采集 規則;
4、內置緩存插件,減輕前端訪(fǎng)問(wèn)壓力;
5、網(wǎng)站管理簡(jiǎn)單快捷,后臺基本可以修改前端顯示信息,無(wú)需代碼;
6、程序完全開(kāi)源,無(wú)任何加密,不定期提供升級;
7、采用前端HTML5 CSS3響應式布局,兼容多終端(PC手機和平板),數據同步,管理方便;
8、采集規則失效不用擔心,我們有強大的技術(shù)團隊,會(huì )提供升級服務(wù)的規則;
9、圖片默認使用遠程地址,節省磁盤(pán)空間,可以在本地設置和保存。
源碼適合人群
1、上班族
白天上班,晚上休息。這個(gè)程序滿(mǎn)足你。安裝完成后配置無(wú)誤即可坐等升級網(wǎng)站,真正無(wú)人值守。
2、做站群
有些人有幾百個(gè)站,要花錢(qián)招人。最好設置一個(gè)無(wú)人值守的采集站,這樣既省時(shí)又省錢(qián)。
源代碼盈利方法
1、廣告聯(lián)盟/網(wǎng)站廣告/淘客
說(shuō)說(shuō)吧,它需要流量上來(lái)。
2、出售友情鏈接
網(wǎng)站收錄多達1000個(gè)基礎,你在友情鏈接交易平臺上賣(mài)朋友沒(méi)問(wèn)題。
3、銷(xiāo)售網(wǎng)站二級目錄
網(wǎng)站收錄好吧,有些人只需要收錄,他們自然會(huì )找到你。
4、賣(mài)站
網(wǎng)站收錄上去賣(mài)一個(gè)5、600 沒(méi)問(wèn)題,重量上來(lái)賣(mài)多。
程序安裝文檔
詳見(jiàn)源碼中付費安裝文檔 查看全部
自動(dòng)采集編寫(xiě)(
出售友情鏈接網(wǎng)站收錄上1000基本你在友情鏈接交易平臺鏈是沒(méi)問(wèn)題了)


用戶(hù)演示站:
源碼使用環(huán)境
支持環(huán)境:WindowsnuxPHP5.3/4/5/67.1mysql5.
推薦環(huán)境:linuxphp7.1mysql5.6
源代碼功能詳情
1、內置大量?jì)热?,安裝后可省時(shí)省力;
2、內置高效采集插件,每天自動(dòng)采集一次(間隔可自行修改),真正無(wú)人值守;
3、7 內置 采集 規則;
4、內置緩存插件,減輕前端訪(fǎng)問(wèn)壓力;
5、網(wǎng)站管理簡(jiǎn)單快捷,后臺基本可以修改前端顯示信息,無(wú)需代碼;
6、程序完全開(kāi)源,無(wú)任何加密,不定期提供升級;
7、采用前端HTML5 CSS3響應式布局,兼容多終端(PC手機和平板),數據同步,管理方便;
8、采集規則失效不用擔心,我們有強大的技術(shù)團隊,會(huì )提供升級服務(wù)的規則;
9、圖片默認使用遠程地址,節省磁盤(pán)空間,可以在本地設置和保存。
源碼適合人群
1、上班族
白天上班,晚上休息。這個(gè)程序滿(mǎn)足你。安裝完成后配置無(wú)誤即可坐等升級網(wǎng)站,真正無(wú)人值守。
2、做站群
有些人有幾百個(gè)站,要花錢(qián)招人。最好設置一個(gè)無(wú)人值守的采集站,這樣既省時(shí)又省錢(qián)。
源代碼盈利方法
1、廣告聯(lián)盟/網(wǎng)站廣告/淘客
說(shuō)說(shuō)吧,它需要流量上來(lái)。
2、出售友情鏈接
網(wǎng)站收錄多達1000個(gè)基礎,你在友情鏈接交易平臺上賣(mài)朋友沒(méi)問(wèn)題。
3、銷(xiāo)售網(wǎng)站二級目錄
網(wǎng)站收錄好吧,有些人只需要收錄,他們自然會(huì )找到你。
4、賣(mài)站
網(wǎng)站收錄上去賣(mài)一個(gè)5、600 沒(méi)問(wèn)題,重量上來(lái)賣(mài)多。
程序安裝文檔
詳見(jiàn)源碼中付費安裝文檔
自動(dòng)采集編寫(xiě)(自動(dòng)采集腳本1.利用pythonexplorer調用githubgithub安裝python模塊)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 133 次瀏覽 ? 2021-12-12 01:01
自動(dòng)采集編寫(xiě)腳本1.利用pythonexplorer調用github安裝python模塊2.如何下載github-square/python:gitclone:操作系統(windows/mac)執行:pipinstallpython-pipmodule版本2.1安裝完成后,記得設置路徑path環(huán)境變量,然后python安裝路徑在“\python\scripts”:cd$path$pipinstallgit2.2是個(gè)坑。
我遇到的git2.3已經(jīng)好了,但是復現時(shí)就出錯了,各位自己理解...2.3.1為什么能復現,但就是不知道為什么不能復現,后來(lái)想起,是命令行那邊的問(wèn)題,因為有可能那邊有錯,正好被轉發(fā)了,然后就復現了,但是無(wú)法打印出cmd的內容2.4這種情況,可以放棄python,用其他語(yǔ)言去驗證的,沒(méi)有這么蛋疼,或者去看python編譯器的幫助文檔2.5最好多問(wèn)一下相關(guān)人員。
必須到不同的sdlds版本下驗證,
用python插件k-lab查看目錄結構,
如果環(huán)境都跟python版本一樣的話(huà),看下python的pdb環(huán)境變量配置是否正確,
python2的話(huà)將/usr/local/bin/替換成/usr/local/bin/python2#python3的話(huà)將/usr/local/bin/替換成/usr/local/bin/python3 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集腳本1.利用pythonexplorer調用githubgithub安裝python模塊)
自動(dòng)采集編寫(xiě)腳本1.利用pythonexplorer調用github安裝python模塊2.如何下載github-square/python:gitclone:操作系統(windows/mac)執行:pipinstallpython-pipmodule版本2.1安裝完成后,記得設置路徑path環(huán)境變量,然后python安裝路徑在“\python\scripts”:cd$path$pipinstallgit2.2是個(gè)坑。
我遇到的git2.3已經(jīng)好了,但是復現時(shí)就出錯了,各位自己理解...2.3.1為什么能復現,但就是不知道為什么不能復現,后來(lái)想起,是命令行那邊的問(wèn)題,因為有可能那邊有錯,正好被轉發(fā)了,然后就復現了,但是無(wú)法打印出cmd的內容2.4這種情況,可以放棄python,用其他語(yǔ)言去驗證的,沒(méi)有這么蛋疼,或者去看python編譯器的幫助文檔2.5最好多問(wèn)一下相關(guān)人員。
必須到不同的sdlds版本下驗證,
用python插件k-lab查看目錄結構,
如果環(huán)境都跟python版本一樣的話(huà),看下python的pdb環(huán)境變量配置是否正確,
python2的話(huà)將/usr/local/bin/替換成/usr/local/bin/python2#python3的話(huà)將/usr/local/bin/替換成/usr/local/bin/python3
自動(dòng)采集編寫(xiě)( 這是網(wǎng)站源碼制作的電子書(shū)網(wǎng)站版面:網(wǎng)上在線(xiàn)報名(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 138 次瀏覽 ? 2021-12-10 12:11
這是網(wǎng)站源碼制作的電子書(shū)網(wǎng)站版面:網(wǎng)上在線(xiàn)報名(組圖))
具有自動(dòng)功能的響應式電子書(shū)采集網(wǎng)站源代碼
源碼介紹
這是一個(gè)帶有自動(dòng)采集功能的電子書(shū)網(wǎng)站源代碼。用本源代碼制作的電子書(shū)網(wǎng)站具有響應功能,可以適配電腦和手機。瀏覽。源碼安裝好后就可以后臺發(fā)布數據采集。
以下是用電子書(shū)網(wǎng)站的源代碼制作的電子書(shū)網(wǎng)站版面:
源代碼下載
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼,購買(mǎi)后請點(diǎn)擊下方下載!
源碼安裝方法下載響應式電子書(shū)網(wǎng)站源碼;解壓壓縮包,獲取源碼文件夾,通過(guò)FTP軟件上傳到自己的網(wǎng)站空間根目錄;使用網(wǎng)站域名/安裝路徑安裝源碼;安裝后使用網(wǎng)站域名/admin登錄網(wǎng)站后臺。
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼主色調,兼容IE、FF、Opera、Safari、chrome等瀏覽器,手機WAP布局,源碼代碼操作需要服務(wù)器環(huán)境為php5.3及以上,mysql數據庫。
購買(mǎi)帶有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源價(jià):¥160
什么是網(wǎng)站源代碼
網(wǎng)站 源碼是將網(wǎng)站程序、網(wǎng)站模板、網(wǎng)站后臺管理、網(wǎng)站數據庫數據打包在一起。用戶(hù)購買(mǎi)網(wǎng)站源碼后,只需直接上傳到網(wǎng)站空間,即可制作并演示網(wǎng)站一模一板網(wǎng)站。
上一課:在線(xiàn)登記管理系統通用源碼 下一課:適合房產(chǎn)中介做的源碼網(wǎng)站
發(fā)布:學(xué)做網(wǎng)站論壇最后更新:2021-11-27 瀏覽次數:115504次
學(xué)會(huì )做網(wǎng)站論壇致力于打造網(wǎng)站在線(xiàn)培訓誠信平臺,讓零基礎學(xué)員學(xué)習做網(wǎng)站,最終可以自主搭建網(wǎng)站.
通過(guò)原創(chuàng )建站教程+講師在線(xiàn)輔導學(xué)習做網(wǎng)站論壇搭建培訓,對各種網(wǎng)站制作方法的講解非常詳細,哪怕是零基礎初學(xué)者可以看懂了就學(xué)會(huì )了。 查看全部
自動(dòng)采集編寫(xiě)(
這是網(wǎng)站源碼制作的電子書(shū)網(wǎng)站版面:網(wǎng)上在線(xiàn)報名(組圖))
具有自動(dòng)功能的響應式電子書(shū)采集網(wǎng)站源代碼
源碼介紹
這是一個(gè)帶有自動(dòng)采集功能的電子書(shū)網(wǎng)站源代碼。用本源代碼制作的電子書(shū)網(wǎng)站具有響應功能,可以適配電腦和手機。瀏覽。源碼安裝好后就可以后臺發(fā)布數據采集。
以下是用電子書(shū)網(wǎng)站的源代碼制作的電子書(shū)網(wǎng)站版面:
https://www.xuewangzhan.net/wp ... 7.jpg 768w" />源代碼下載
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼,購買(mǎi)后請點(diǎn)擊下方下載!
源碼安裝方法下載響應式電子書(shū)網(wǎng)站源碼;解壓壓縮包,獲取源碼文件夾,通過(guò)FTP軟件上傳到自己的網(wǎng)站空間根目錄;使用網(wǎng)站域名/安裝路徑安裝源碼;安裝后使用網(wǎng)站域名/admin登錄網(wǎng)站后臺。
具有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源代碼主色調,兼容IE、FF、Opera、Safari、chrome等瀏覽器,手機WAP布局,源碼代碼操作需要服務(wù)器環(huán)境為php5.3及以上,mysql數據庫。
購買(mǎi)帶有自動(dòng)采集功能的響應式電子書(shū)網(wǎng)站源價(jià):¥160
什么是網(wǎng)站源代碼
網(wǎng)站 源碼是將網(wǎng)站程序、網(wǎng)站模板、網(wǎng)站后臺管理、網(wǎng)站數據庫數據打包在一起。用戶(hù)購買(mǎi)網(wǎng)站源碼后,只需直接上傳到網(wǎng)站空間,即可制作并演示網(wǎng)站一模一板網(wǎng)站。
上一課:在線(xiàn)登記管理系統通用源碼 下一課:適合房產(chǎn)中介做的源碼網(wǎng)站
發(fā)布:學(xué)做網(wǎng)站論壇最后更新:2021-11-27 瀏覽次數:115504次
學(xué)會(huì )做網(wǎng)站論壇致力于打造網(wǎng)站在線(xiàn)培訓誠信平臺,讓零基礎學(xué)員學(xué)習做網(wǎng)站,最終可以自主搭建網(wǎng)站.
通過(guò)原創(chuàng )建站教程+講師在線(xiàn)輔導學(xué)習做網(wǎng)站論壇搭建培訓,對各種網(wǎng)站制作方法的講解非常詳細,哪怕是零基礎初學(xué)者可以看懂了就學(xué)會(huì )了。
自動(dòng)采集編寫(xiě)(神策Android全埋點(diǎn)插件的含義及含義插件介紹)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 209 次瀏覽 ? 2021-12-10 08:00
一、前言
在上一篇文章《神測Android全插件介紹》中,我們了解到神測Android插件其實(shí)就是一個(gè)自定義的Gradle插件。Gradle 是一個(gè)專(zhuān)注于靈活性和性能的開(kāi)源自動(dòng)化構建工具,插件的作用是打包模塊化、可重用的構建邏輯。您可以通過(guò)插件實(shí)現特定的邏輯,并打包分享給他人。例如,神測Android全埋點(diǎn)插件在編譯時(shí)利用該插件處理特定功能,從而實(shí)現控件點(diǎn)擊和Fragment頁(yè)面瀏覽的全埋點(diǎn)采集。
在本文中,我們將首先介紹Gradle 的基礎知識,然后舉例說(shuō)明如何實(shí)現自定義Gradle 插件。這里需要注意的是,文章使用./gradlew來(lái)執行Gradle命令,如果你是Windows用戶(hù),需要將它改成gradlew.bat。
二、Gradle 基礎知識
Gradle 有兩個(gè)重要的概念:Project 和 Task。本節將介紹它們各自的功能以及它們之間的關(guān)系。
2.1 項目介紹
項目是與 Gradle 交互中最重要的 API。我們可以通過(guò)Android Studio的項目結構來(lái)理解Project的含義,如圖2-1所示:
圖2-1 Android Studio 項目結構圖
圖2-1是編寫(xiě)過(guò)程中用到的一個(gè)項目(名為BlogDemo),收錄兩個(gè)Module,app和plugin。在這里,“Project”和“Module”在構建過(guò)程中都會(huì )被Gradle抽象為Project對象。他們的主要關(guān)系是:
1、Android Studio 結構中的項目相當于一個(gè)父項目,一個(gè)項目中的所有模塊都是父項目的子項目;
2、 每個(gè)Project都會(huì )對應一個(gè)build.gradle配置文件,所以在使用Android Studio創(chuàng )建項目時(shí),根目錄下有一個(gè)build.gradle文件,每個(gè)Module的目錄下都有一個(gè)build . gradle 文件;
3、Gradle 使用 settings.gradle 文件來(lái)構建多個(gè)項目。項目之間的關(guān)系也可以從圖2-1看出。
父Project對象可以獲取所有子Project對象,這樣就可以在父Project對應的build.gradle文件中做一些統一的配置,例如:管理依賴(lài)的Maven中心庫:
...
allprojects {
repositories {
google()
jcenter()
}
}
...
2.2 任務(wù)介紹
Project 將在施工過(guò)程中執行一系列任務(wù)。Task的中文翻譯是“任務(wù)”,它的作用其實(shí)就是抽象出一系列有意義的任務(wù),用Gradle官方的話(huà)說(shuō):每個(gè)任務(wù)執行一些基本的工作。例如:當您點(diǎn)擊 Android Studio 的 Run 按鈕時(shí),Android Studio 將編譯并運行該項目。其實(shí)這個(gè)過(guò)程是通過(guò)執行一系列的Task來(lái)完成的??赡馨ǎ壕幾gJava源代碼的任務(wù)、編譯Android資源的任務(wù)、編譯JNI的任務(wù)、混淆任務(wù)、生成Apk文件的任務(wù)、運行App的任務(wù)等。你還可以在Build中看到實(shí)際運行了哪些任務(wù)Android Studio的輸出,如圖2-2所示:
圖 2-2 Android Studio Build 輸出日志
從圖中右側,我們可以看到Task由兩部分組成:任務(wù)所在的Module名稱(chēng)和任務(wù)名稱(chēng)。在運行Task時(shí),也需要通過(guò)這種方式指定一個(gè)Task。
此外,您可以自定義您自己的任務(wù)。讓我們創(chuàng )建最簡(jiǎn)單的任務(wù):
// add to build.gradle
task hello {
println 'Hello World!'
}
這段代碼的意思是創(chuàng )建一個(gè)名為“hello”的Task。如果想單獨執行Task,可以在A(yíng)ndroid Studio的Terminal中輸入“./gradlew hello”,執行后就可以看到控制臺輸出了。你好世界!”。
三、Gradle 插件構建3.1 插件介紹
Plugin和Task其實(shí)和它們的功能沒(méi)有太大區別。它們都封裝了一些業(yè)務(wù)邏輯。Plugin適用于打包需要復用的編譯邏輯的場(chǎng)景(即模塊化部分編譯邏輯)。您可以自定義 Gradle 插件,實(shí)現必要的邏輯并將其發(fā)布到遠程倉庫或作為本地 JAR 包共享。這樣,以后想再次使用或者分享給別人的時(shí)候,可以直接引用遠程倉庫包或者引用本地JAR包。
最常見(jiàn)的 Plugin 應該是 Android 官方提供的 Android Gradle Plugin??梢栽陧椖恐髂K的build.gradle文件第一行看到:“apply plugin:'com.android.application'”,就是Android Gradle Plugin?!癱om.android.application”指的是插件id,插件的作用是幫你生成一個(gè)可運行的APK文件。
該插件還可以讀取 build.gradle 文件中寫(xiě)入的配置。在main Module的build.gradle文件中會(huì )有一個(gè)名為“android”的block,里面定義了一些屬性,比如App支持的最低系統版本,App的版本號等,大家可以比較一下“ android" android 塊在這里作為數據類(lèi)或基類(lèi),定義的屬性類(lèi)似于類(lèi)成員變量。Android Gradle Plugin 可以在運行時(shí)獲取“android”塊實(shí)例化的對象,然后根據對象的屬性值運行不同的編譯邏輯。
3.2 為獨立項目構建 Gradle 插件
Gradle插件的實(shí)現方式有3種,分別是Build腳本、buildSrc項目和Standalone項目:
1、Build 腳本會(huì )直接在 build.gradle 文件中寫(xiě)入邏輯,Plugin 只對當前 build.gradle 文件可見(jiàn);
2、buildSrc項目就是在rootProjectDir/buildSrc/src/main/java(最后一個(gè)路徑文件夾也可以是groovy或者kotlin,看你用什么語(yǔ)言實(shí)現自定義插件)目錄下寫(xiě)邏輯,Plugin僅對當前項目有效;
3、獨立項目就是把邏輯寫(xiě)在一個(gè)單獨的項目中,可以直接編譯JAR包發(fā)布到遠程倉庫或者本地。
基于寫(xiě)這篇文章的目的,這里主要講解Standalone項目,獨立項目的Gradle插件。
3.2.1 目錄結構分析
一個(gè)獨立項目的Gradle插件的大致結構如圖3-1所示:
圖3-1 Gradle插件項目目錄示意圖
主文件夾分為groovy文件夾和resources文件夾:
其中resources文件夾為固定格式META-INF/gradle-plugins/XXXX.properties,XXXX代表以后使用插件時(shí)需要指定的插件id。
目前Android Studio對Gradle插件開(kāi)發(fā)的支持還不夠好。許多IDE本可以完成的任務(wù)需要我們手動(dòng)完成,例如:
1、Android Studio 不能直接新建 Gradle 插件 Module,只能先新建一個(gè) Java Library 類(lèi)型的 Module,然后刪除多余的文件夾;
2、新類(lèi)默認是一個(gè)新的Java類(lèi)。新的文件名后綴是“.java”。如果要新建一個(gè)Groovy語(yǔ)法類(lèi),需要手動(dòng)新建一個(gè)后綴為“.groovy”的文件,然后添加package、class語(yǔ)句;
3、資源都需要手動(dòng)創(chuàng )建,文件夾名需要仔細拼寫(xiě);
4、 刪除Module的build.gradle所有內容,并添加Gradle插件開(kāi)發(fā)所需的Gradle插件、依賴(lài)等。
3.2.2 編寫(xiě)插件
在編寫(xiě)插件代碼之前,我們需要對build.gradle做一些修改,如下圖:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation gradleApi()
implementation localGroovy()
}
uploadArchives{
repositories.mavenDeployer {
//本地倉庫路徑,以放到項目根目錄下的 repo 的文件夾為例
repository(url: uri('../repo'))
//groupId ,自行定義
pom.groupId = 'com.sensorsdata.myplugin'
//artifactId
pom.artifactId = 'MyPlugin'
//插件版本號
pom.version = '1.0.0'
}
}
這主要分為三個(gè)部分:
1、apply plugin:應用'groovy'插件,因為我們的項目是用Groovy語(yǔ)言開(kāi)發(fā)的,以后發(fā)布插件時(shí)會(huì )用到'maven'插件;
2、dependencies:聲明依賴(lài);
3、uploadArchive:這里是一些maven相關(guān)的配置,包括發(fā)布倉庫的位置,groupId,artifactId,版本號。為了調試方便,位置選擇在項目根目錄下的repo文件夾中。
做好以上準備后,就可以開(kāi)始編寫(xiě)源碼了。Gradle插件需要入口類(lèi)實(shí)現org.gradle.api.Plugin接口,然后在apply方法中實(shí)現自己的邏輯:
package com.sensorsdata.plugin
class MyPlugin implements Plugin{
@Override
void apply(Project project) {
println 'Hello,World!'
}
}
這里的例子中,apply方法是我們整個(gè)Gradle插件的入口方法,類(lèi)似于各種語(yǔ)言的main方法。apply方法的輸入參數類(lèi)型Project在第二節已經(jīng)解釋過(guò)了,這里不再贅述。由于Plugin類(lèi)和Project類(lèi)有很多同名的類(lèi),所以在導入的時(shí)候一定要注意選擇org.gradle.api包下的類(lèi)。
最后還需要做一個(gè)準備:Gradle插件不會(huì )自動(dòng)查找入口類(lèi),而是需要開(kāi)發(fā)者在resources/META-INF/gradle-plugins/XXXX.properties中寫(xiě)入入口類(lèi)的類(lèi)名,內容格式對于“implementation-class=入口類(lèi)的全限定名”,這里示例工程的配置如下:
// com.sensorsdata.plugin.properties
implementation-class=com.sensorsdata.plugin.MyPlugin
3.2.3 發(fā)布插件
插件全部?jì)热輰?xiě)完后,在終端執行
./gradlew uploadArchive
您可以發(fā)布插件。在上一節寫(xiě)的插件的build.gradle文件中,發(fā)布到m??aven倉庫的相關(guān)配置是提前配置好的,所以我們這里執行這個(gè)命令后,項目根目錄下就會(huì )出現repo文件夾,文件夾收錄打包的 JAR 文件。
3.2.4 使用插件
使用插件有兩個(gè)主要步驟: 查看全部
自動(dòng)采集編寫(xiě)(神策Android全埋點(diǎn)插件的含義及含義插件介紹)
一、前言
在上一篇文章《神測Android全插件介紹》中,我們了解到神測Android插件其實(shí)就是一個(gè)自定義的Gradle插件。Gradle 是一個(gè)專(zhuān)注于靈活性和性能的開(kāi)源自動(dòng)化構建工具,插件的作用是打包模塊化、可重用的構建邏輯。您可以通過(guò)插件實(shí)現特定的邏輯,并打包分享給他人。例如,神測Android全埋點(diǎn)插件在編譯時(shí)利用該插件處理特定功能,從而實(shí)現控件點(diǎn)擊和Fragment頁(yè)面瀏覽的全埋點(diǎn)采集。
在本文中,我們將首先介紹Gradle 的基礎知識,然后舉例說(shuō)明如何實(shí)現自定義Gradle 插件。這里需要注意的是,文章使用./gradlew來(lái)執行Gradle命令,如果你是Windows用戶(hù),需要將它改成gradlew.bat。
二、Gradle 基礎知識
Gradle 有兩個(gè)重要的概念:Project 和 Task。本節將介紹它們各自的功能以及它們之間的關(guān)系。
2.1 項目介紹
項目是與 Gradle 交互中最重要的 API。我們可以通過(guò)Android Studio的項目結構來(lái)理解Project的含義,如圖2-1所示:

圖2-1 Android Studio 項目結構圖
圖2-1是編寫(xiě)過(guò)程中用到的一個(gè)項目(名為BlogDemo),收錄兩個(gè)Module,app和plugin。在這里,“Project”和“Module”在構建過(guò)程中都會(huì )被Gradle抽象為Project對象。他們的主要關(guān)系是:
1、Android Studio 結構中的項目相當于一個(gè)父項目,一個(gè)項目中的所有模塊都是父項目的子項目;
2、 每個(gè)Project都會(huì )對應一個(gè)build.gradle配置文件,所以在使用Android Studio創(chuàng )建項目時(shí),根目錄下有一個(gè)build.gradle文件,每個(gè)Module的目錄下都有一個(gè)build . gradle 文件;
3、Gradle 使用 settings.gradle 文件來(lái)構建多個(gè)項目。項目之間的關(guān)系也可以從圖2-1看出。
父Project對象可以獲取所有子Project對象,這樣就可以在父Project對應的build.gradle文件中做一些統一的配置,例如:管理依賴(lài)的Maven中心庫:
...
allprojects {
repositories {
google()
jcenter()
}
}
...
2.2 任務(wù)介紹
Project 將在施工過(guò)程中執行一系列任務(wù)。Task的中文翻譯是“任務(wù)”,它的作用其實(shí)就是抽象出一系列有意義的任務(wù),用Gradle官方的話(huà)說(shuō):每個(gè)任務(wù)執行一些基本的工作。例如:當您點(diǎn)擊 Android Studio 的 Run 按鈕時(shí),Android Studio 將編譯并運行該項目。其實(shí)這個(gè)過(guò)程是通過(guò)執行一系列的Task來(lái)完成的??赡馨ǎ壕幾gJava源代碼的任務(wù)、編譯Android資源的任務(wù)、編譯JNI的任務(wù)、混淆任務(wù)、生成Apk文件的任務(wù)、運行App的任務(wù)等。你還可以在Build中看到實(shí)際運行了哪些任務(wù)Android Studio的輸出,如圖2-2所示:

圖 2-2 Android Studio Build 輸出日志
從圖中右側,我們可以看到Task由兩部分組成:任務(wù)所在的Module名稱(chēng)和任務(wù)名稱(chēng)。在運行Task時(shí),也需要通過(guò)這種方式指定一個(gè)Task。
此外,您可以自定義您自己的任務(wù)。讓我們創(chuàng )建最簡(jiǎn)單的任務(wù):
// add to build.gradle
task hello {
println 'Hello World!'
}
這段代碼的意思是創(chuàng )建一個(gè)名為“hello”的Task。如果想單獨執行Task,可以在A(yíng)ndroid Studio的Terminal中輸入“./gradlew hello”,執行后就可以看到控制臺輸出了。你好世界!”。
三、Gradle 插件構建3.1 插件介紹
Plugin和Task其實(shí)和它們的功能沒(méi)有太大區別。它們都封裝了一些業(yè)務(wù)邏輯。Plugin適用于打包需要復用的編譯邏輯的場(chǎng)景(即模塊化部分編譯邏輯)。您可以自定義 Gradle 插件,實(shí)現必要的邏輯并將其發(fā)布到遠程倉庫或作為本地 JAR 包共享。這樣,以后想再次使用或者分享給別人的時(shí)候,可以直接引用遠程倉庫包或者引用本地JAR包。
最常見(jiàn)的 Plugin 應該是 Android 官方提供的 Android Gradle Plugin??梢栽陧椖恐髂K的build.gradle文件第一行看到:“apply plugin:'com.android.application'”,就是Android Gradle Plugin?!癱om.android.application”指的是插件id,插件的作用是幫你生成一個(gè)可運行的APK文件。
該插件還可以讀取 build.gradle 文件中寫(xiě)入的配置。在main Module的build.gradle文件中會(huì )有一個(gè)名為“android”的block,里面定義了一些屬性,比如App支持的最低系統版本,App的版本號等,大家可以比較一下“ android" android 塊在這里作為數據類(lèi)或基類(lèi),定義的屬性類(lèi)似于類(lèi)成員變量。Android Gradle Plugin 可以在運行時(shí)獲取“android”塊實(shí)例化的對象,然后根據對象的屬性值運行不同的編譯邏輯。
3.2 為獨立項目構建 Gradle 插件
Gradle插件的實(shí)現方式有3種,分別是Build腳本、buildSrc項目和Standalone項目:
1、Build 腳本會(huì )直接在 build.gradle 文件中寫(xiě)入邏輯,Plugin 只對當前 build.gradle 文件可見(jiàn);
2、buildSrc項目就是在rootProjectDir/buildSrc/src/main/java(最后一個(gè)路徑文件夾也可以是groovy或者kotlin,看你用什么語(yǔ)言實(shí)現自定義插件)目錄下寫(xiě)邏輯,Plugin僅對當前項目有效;
3、獨立項目就是把邏輯寫(xiě)在一個(gè)單獨的項目中,可以直接編譯JAR包發(fā)布到遠程倉庫或者本地。
基于寫(xiě)這篇文章的目的,這里主要講解Standalone項目,獨立項目的Gradle插件。
3.2.1 目錄結構分析
一個(gè)獨立項目的Gradle插件的大致結構如圖3-1所示:

圖3-1 Gradle插件項目目錄示意圖
主文件夾分為groovy文件夾和resources文件夾:
其中resources文件夾為固定格式META-INF/gradle-plugins/XXXX.properties,XXXX代表以后使用插件時(shí)需要指定的插件id。
目前Android Studio對Gradle插件開(kāi)發(fā)的支持還不夠好。許多IDE本可以完成的任務(wù)需要我們手動(dòng)完成,例如:
1、Android Studio 不能直接新建 Gradle 插件 Module,只能先新建一個(gè) Java Library 類(lèi)型的 Module,然后刪除多余的文件夾;
2、新類(lèi)默認是一個(gè)新的Java類(lèi)。新的文件名后綴是“.java”。如果要新建一個(gè)Groovy語(yǔ)法類(lèi),需要手動(dòng)新建一個(gè)后綴為“.groovy”的文件,然后添加package、class語(yǔ)句;
3、資源都需要手動(dòng)創(chuàng )建,文件夾名需要仔細拼寫(xiě);
4、 刪除Module的build.gradle所有內容,并添加Gradle插件開(kāi)發(fā)所需的Gradle插件、依賴(lài)等。
3.2.2 編寫(xiě)插件
在編寫(xiě)插件代碼之前,我們需要對build.gradle做一些修改,如下圖:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation gradleApi()
implementation localGroovy()
}
uploadArchives{
repositories.mavenDeployer {
//本地倉庫路徑,以放到項目根目錄下的 repo 的文件夾為例
repository(url: uri('../repo'))
//groupId ,自行定義
pom.groupId = 'com.sensorsdata.myplugin'
//artifactId
pom.artifactId = 'MyPlugin'
//插件版本號
pom.version = '1.0.0'
}
}
這主要分為三個(gè)部分:
1、apply plugin:應用'groovy'插件,因為我們的項目是用Groovy語(yǔ)言開(kāi)發(fā)的,以后發(fā)布插件時(shí)會(huì )用到'maven'插件;
2、dependencies:聲明依賴(lài);
3、uploadArchive:這里是一些maven相關(guān)的配置,包括發(fā)布倉庫的位置,groupId,artifactId,版本號。為了調試方便,位置選擇在項目根目錄下的repo文件夾中。
做好以上準備后,就可以開(kāi)始編寫(xiě)源碼了。Gradle插件需要入口類(lèi)實(shí)現org.gradle.api.Plugin接口,然后在apply方法中實(shí)現自己的邏輯:
package com.sensorsdata.plugin
class MyPlugin implements Plugin{
@Override
void apply(Project project) {
println 'Hello,World!'
}
}
這里的例子中,apply方法是我們整個(gè)Gradle插件的入口方法,類(lèi)似于各種語(yǔ)言的main方法。apply方法的輸入參數類(lèi)型Project在第二節已經(jīng)解釋過(guò)了,這里不再贅述。由于Plugin類(lèi)和Project類(lèi)有很多同名的類(lèi),所以在導入的時(shí)候一定要注意選擇org.gradle.api包下的類(lèi)。
最后還需要做一個(gè)準備:Gradle插件不會(huì )自動(dòng)查找入口類(lèi),而是需要開(kāi)發(fā)者在resources/META-INF/gradle-plugins/XXXX.properties中寫(xiě)入入口類(lèi)的類(lèi)名,內容格式對于“implementation-class=入口類(lèi)的全限定名”,這里示例工程的配置如下:
// com.sensorsdata.plugin.properties
implementation-class=com.sensorsdata.plugin.MyPlugin
3.2.3 發(fā)布插件
插件全部?jì)热輰?xiě)完后,在終端執行
./gradlew uploadArchive
您可以發(fā)布插件。在上一節寫(xiě)的插件的build.gradle文件中,發(fā)布到m??aven倉庫的相關(guān)配置是提前配置好的,所以我們這里執行這個(gè)命令后,項目根目錄下就會(huì )出現repo文件夾,文件夾收錄打包的 JAR 文件。
3.2.4 使用插件
使用插件有兩個(gè)主要步驟:


