文章實(shí)時(shí)采集
文章實(shí)時(shí)采集(FlinkX實(shí)時(shí)采集插件的核心是如何實(shí)時(shí)捕獲數據庫數據的)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 123 次瀏覽 ? 2021-11-06 16:08
一、FlinkX 實(shí)時(shí)采集功能基本介紹
首先介紹一下FlinkX實(shí)時(shí)模塊的分類(lèi),如下圖所示:
1、實(shí)時(shí)采集模塊(CDC)
1)MySQL Binlog 插件
使用阿里開(kāi)源的Canal組件從MySQL實(shí)時(shí)捕獲變化數據。
2)PostgreSQL Wal 插件
<p>PostgreSQL實(shí)時(shí)采集基于PostgreSQL的邏輯復制和邏輯解碼功能。同步數據邏輯復制的原理是在Wal日志生成的數據庫上,邏輯分析模塊對Wal日志進(jìn)行初步分析。其分析結果為ReorderBufferChange(可以簡(jiǎn)單理解為HeapTupleData),Pgoutput Plugin對中間結果進(jìn)行過(guò)濾和消息拼接后發(fā)送給訂閱端,訂閱端通過(guò)邏輯解碼函數進(jìn)行分析。 查看全部
文章實(shí)時(shí)采集(FlinkX實(shí)時(shí)采集插件的核心是如何實(shí)時(shí)捕獲數據庫數據的)
一、FlinkX 實(shí)時(shí)采集功能基本介紹
首先介紹一下FlinkX實(shí)時(shí)模塊的分類(lèi),如下圖所示:
1、實(shí)時(shí)采集模塊(CDC)
1)MySQL Binlog 插件
使用阿里開(kāi)源的Canal組件從MySQL實(shí)時(shí)捕獲變化數據。
2)PostgreSQL Wal 插件
<p>PostgreSQL實(shí)時(shí)采集基于PostgreSQL的邏輯復制和邏輯解碼功能。同步數據邏輯復制的原理是在Wal日志生成的數據庫上,邏輯分析模塊對Wal日志進(jìn)行初步分析。其分析結果為ReorderBufferChange(可以簡(jiǎn)單理解為HeapTupleData),Pgoutput Plugin對中間結果進(jìn)行過(guò)濾和消息拼接后發(fā)送給訂閱端,訂閱端通過(guò)邏輯解碼函數進(jìn)行分析。
文章實(shí)時(shí)采集(如何用uid推送廣告?爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 178 次瀏覽 ? 2021-11-03 16:01
文章實(shí)時(shí)采集,開(kāi)發(fā)者可以獲取網(wǎng)頁(yè)全部網(wǎng)址或者根據網(wǎng)頁(yè)標題等特征設置ip地址獲取指定url。用戶(hù)通過(guò)特定策略,訪(fǎng)問(wèn)網(wǎng)頁(yè)就能獲取到相應內容,還是挺方便的。
謝邀推薦使用useragentmap
你看看這個(gè):howtosurveythecontentofachineseuser?大部分問(wèn)題你都能用這種手段解決。
allchineserequestswentintobecomeamoregeneralhackingads,alsonotinthebrandloginmethod.viacnncorruptchina
你需要自己搞一個(gè)簡(jiǎn)潔的用戶(hù)界面。目前沒(méi)什么好辦法。不過(guò)新浪提供了服務(wù)接口?;旧夏阆胗胾id進(jìn)行推送廣告的方法你都能用上。如果你有這方面需求,可以聯(lián)系找找看。如果涉及你在“南方日報”和“央視新聞”,也可以聯(lián)系上面的市場(chǎng)部。
如果你像@layly說(shuō)的那樣,你得懂爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)!你的技術(shù)可以想辦法,但是爬蟲(chóng)爬蟲(chóng),爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫。 查看全部
文章實(shí)時(shí)采集(如何用uid推送廣告?爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng))
文章實(shí)時(shí)采集,開(kāi)發(fā)者可以獲取網(wǎng)頁(yè)全部網(wǎng)址或者根據網(wǎng)頁(yè)標題等特征設置ip地址獲取指定url。用戶(hù)通過(guò)特定策略,訪(fǎng)問(wèn)網(wǎng)頁(yè)就能獲取到相應內容,還是挺方便的。
謝邀推薦使用useragentmap
你看看這個(gè):howtosurveythecontentofachineseuser?大部分問(wèn)題你都能用這種手段解決。
allchineserequestswentintobecomeamoregeneralhackingads,alsonotinthebrandloginmethod.viacnncorruptchina
你需要自己搞一個(gè)簡(jiǎn)潔的用戶(hù)界面。目前沒(méi)什么好辦法。不過(guò)新浪提供了服務(wù)接口?;旧夏阆胗胾id進(jìn)行推送廣告的方法你都能用上。如果你有這方面需求,可以聯(lián)系找找看。如果涉及你在“南方日報”和“央視新聞”,也可以聯(lián)系上面的市場(chǎng)部。
如果你像@layly說(shuō)的那樣,你得懂爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)!你的技術(shù)可以想辦法,但是爬蟲(chóng)爬蟲(chóng),爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫。
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)的實(shí)現方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 124 次瀏覽 ? 2021-11-02 22:01
文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)信息:數據要求是文字或者圖片,前端只需要預覽一次大堂的尺寸就可以保存到hbase。后端會(huì )實(shí)時(shí)寫(xiě)入數據庫中。文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。需要的技術(shù)棧:開(kāi)發(fā)環(huán)境tomcat7.0springboot5.0.6eclipse14.0.2python2.7.14sql2015版本前端:jquery+flask+requests數據庫:mysql+mongodb主要實(shí)現方法:文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號碼-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:1,設置請求url2,設置請求頭,header:accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;*/*;user-agent:mozilla/5.0(windowsnt6.1;wow64)applewebkit/537.36(khtml,likegecko)chrome/50.0.2724.116safari/537.3647.94save/first3,設置請求header,如下:header'content-type':'application/xhtml+xml;q=0.9,*/*;q=0.8'4,如果服務(wù)器不開(kāi)放wifi接口,設置請求url用請求報文地址,即mysql和requests_file-db報文地址。
inet_native_private_port=8000jlink虛擬機大樓頂部的尺寸為15m*20m左右,所以尺寸有45*15*20=4800m。大堂的尺寸為15m*20m左右,所以尺寸有10m*40*20=3200m。每一個(gè)大堂的id號碼都會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:將數據寫(xiě)入mysql中:1,創(chuàng )建一個(gè)mysql對象2,將每一個(gè)大堂的id號碼寫(xiě)入mysql表中3,將表中每一個(gè)大堂的id號碼寫(xiě)入數據庫中4,重啟mysql實(shí)例5,將該表中的每一個(gè)大堂編號寫(xiě)入db表中6,讀取并寫(xiě)入數據庫。 查看全部
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)的實(shí)現方法)
文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)信息:數據要求是文字或者圖片,前端只需要預覽一次大堂的尺寸就可以保存到hbase。后端會(huì )實(shí)時(shí)寫(xiě)入數據庫中。文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。需要的技術(shù)棧:開(kāi)發(fā)環(huán)境tomcat7.0springboot5.0.6eclipse14.0.2python2.7.14sql2015版本前端:jquery+flask+requests數據庫:mysql+mongodb主要實(shí)現方法:文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號碼-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:1,設置請求url2,設置請求頭,header:accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;*/*;user-agent:mozilla/5.0(windowsnt6.1;wow64)applewebkit/537.36(khtml,likegecko)chrome/50.0.2724.116safari/537.3647.94save/first3,設置請求header,如下:header'content-type':'application/xhtml+xml;q=0.9,*/*;q=0.8'4,如果服務(wù)器不開(kāi)放wifi接口,設置請求url用請求報文地址,即mysql和requests_file-db報文地址。
inet_native_private_port=8000jlink虛擬機大樓頂部的尺寸為15m*20m左右,所以尺寸有45*15*20=4800m。大堂的尺寸為15m*20m左右,所以尺寸有10m*40*20=3200m。每一個(gè)大堂的id號碼都會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:將數據寫(xiě)入mysql中:1,創(chuàng )建一個(gè)mysql對象2,將每一個(gè)大堂的id號碼寫(xiě)入mysql表中3,將表中每一個(gè)大堂的id號碼寫(xiě)入數據庫中4,重啟mysql實(shí)例5,將該表中的每一個(gè)大堂編號寫(xiě)入db表中6,讀取并寫(xiě)入數據庫。
文章實(shí)時(shí)采集(C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼及AAC編碼的音視頻RTMP )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 198 次瀏覽 ? 2021-11-02 09:02
)
C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼和AAC編碼的音視頻
RTMP(Real Time Messaging Protocol)是一種專(zhuān)門(mén)用于傳輸音視頻數據的流媒體協(xié)議。它最初由Macromedia 創(chuàng )建,后來(lái)歸它所有。它是一個(gè)私有協(xié)議,主要用于聯(lián)系Flash Player和RtmpServer,如FMS、Red5、crtmpserver等。RTMP協(xié)議可以實(shí)現直播和點(diǎn)播應用,通過(guò)FMLE(Flash Media Live Encoder)將音視頻數據推送到RtmpServer,可以實(shí)現攝像機的實(shí)時(shí)直播。但是,畢竟FMLE的應用范圍是有限的。如果想嵌入到自己的程序中,還是要自己實(shí)現RTMP協(xié)議推送。我已經(jīng)實(shí)現了一個(gè) RTMPLiveEncoder,通過(guò) 采集 攝像頭視頻和麥克風(fēng)音頻,以及 H.264 和 AAC 編碼,然后發(fā)送到FMS和crtmpserver實(shí)現實(shí)時(shí)直播,通過(guò)flash播放器可以正常觀(guān)看,目前效果不錯。延遲時(shí)間約為 2 秒。本文介紹了RTMPLiveEncoder的主要思想和關(guān)鍵點(diǎn),希望對需要該技術(shù)的朋友有所幫助。
技術(shù)分析
實(shí)現RTMPLiveEncoder,需要以下四項關(guān)鍵技術(shù):
其中,前兩項技術(shù)在我之前的文章《采集音頻和攝像頭視頻和實(shí)時(shí)H264編碼和AAC編碼》中已經(jīng)介紹過(guò),這里就不啰嗦了.
將音頻和視頻數據封裝到可播放的流中是一個(gè)難點(diǎn)。仔細研究,你會(huì )發(fā)現RTMP Packet中封裝的音視頻數據流其實(shí)和FLV封裝音視頻數據的方式是一樣的。所以我們只需要根據FLV封裝H264和AAC就可以生成Play流了。
我們再來(lái)看看RTMP協(xié)議。Adobe 曾經(jīng)發(fā)布過(guò)一個(gè)文檔《RTMP 規范》,但維基百科指出該文檔隱藏了很多細節,僅憑它是無(wú)法正確實(shí)現 RTMP 的。不過(guò)還是有參考意義的。事實(shí)上,在A(yíng)dobe發(fā)布之前RTMP協(xié)議幾乎就已經(jīng)被破解了,現在已經(jīng)有了比較完善的實(shí)現,比如RTMPDump,它提供了一個(gè)C語(yǔ)言的接口,這意味著(zhù)它可以很容易地被其他語(yǔ)言調用。
計劃框架
和我之前的文章《采集音視頻與實(shí)時(shí)H264編碼與AAC編碼》文章一樣,使用DirectShow技術(shù)實(shí)現音視頻采集,音視頻編碼, 循環(huán)在各自的線(xiàn)程(AudioEncoderThread 和 VideoEncoderThread)中,RTMP的push開(kāi)始一個(gè)新的線(xiàn)程(RtmpThread)。兩個(gè)編碼線(xiàn)程實(shí)時(shí)對音視頻數據進(jìn)行編碼后,將數據交給Rtmp線(xiàn)程,Rtmp線(xiàn)程循環(huán)封裝Rtmp Packet,然后發(fā)送出去。
線(xiàn)程之間的數據交換是通過(guò)一個(gè)隊列DataBufferQueue來(lái)實(shí)現的。AudioEncoderThread 和 VideoEncoderThread 將數據指針發(fā)布到 DataBufferQueue 后立即返回,以免因發(fā)送 Rtmp 消息而影響編碼線(xiàn)程的正常執行時(shí)間。
RtmpThread的主要工作是發(fā)送音頻數據流的解碼信息頭和視頻數據流的解碼信息頭,不斷地從DataBufferQueue中取出數據,封裝成RTMP Packet,發(fā)送出去。流程如下代碼所示:(process_buf_queue_,也就是上圖中的DataBufferQueue)
librtmp一、 編譯 librtmp
下載rtmpdump的代碼,你會(huì )發(fā)現它是一個(gè)正宗的linux項目,除了一個(gè)簡(jiǎn)單的Makefile,沒(méi)有別的??磥?lái)librtmp并不依賴(lài)系統,所以我們可以在windows上編譯,不用花太多精力。但是,librtmp 依賴(lài)于 openssl 和 zlib,我們需要先編譯它們。
1. 編譯 openssl1.0.0e
a) 下載并安裝 ActivePerl
b) 下載并安裝 nasm()
c) 解壓openssl壓縮包
d) 運行cmd命令行,切換到openssl目錄,分別執行以下命令
>perl Configure VC-WIN32 --prefix=c:\some\dir
>ms\do_nasm
e) 運行Visual Studio Command Prompt(2010),切入openssl目錄,分別執行以下命令。
>nmake -f ms\nt.mak
>nmake -f ms\nt.mak install
f) 編譯完成后,可以在第一條命令指定的目錄中找到編譯好的SDK。
2. 編譯 zlib
a) 解壓zlib壓縮包
b) 運行Visual Studio Command Prompt(2010),切到openssl目錄,分別執行以下命令
>cd contrib\masmx86
>bld_ml32.bat
c) 回到zlib目錄,進(jìn)入contrib\vstudio\vc10目錄,打開(kāi)vs2010解決方案文件,
在zlibstat項目屬性中,去掉預編譯宏ZLIB_WINAPI
d) 選擇 debug 或 release 編譯
3. 編譯 librtmp
a) 首先打開(kāi)visual studio 2010,新建一個(gè)win32控制臺項目,指定為靜態(tài)鏈接庫
b) 將librtmp代碼導入工程中,將openssl、zlib和librtmp的頭文件放在一起,將編譯好的openssl和zlib的靜態(tài)庫放在一起
c) 在項目設置中,添加之前編譯好的openssl和zlib庫,然后編譯。
二、librtmp 的使用
首先初始化RTMP結構
啟動(dòng)后需要向RTMP Server發(fā)起握手連接消息
如果連接成功,就可以開(kāi)始循環(huán)發(fā)送消息了。在這里您需要指定時(shí)間戳和數據類(lèi)型(音頻、視頻、元數據)。這里需要注意的一點(diǎn)是,在調用Send之前,buf中的數據必須是封裝好的H264或者AAC數據流。
關(guān)閉
終于發(fā)布了
H264 和 AAC 數據流
如本文所述,RTMP推送的音視頻流的封裝類(lèi)似于FLV格式??梢钥闯?,要將H264和AAC直播流推送到FMS,需要先發(fā)送“AVC序列頭”和“AAC序列頭”。數據收錄重要的編碼信息,沒(méi)有它們,解碼器將無(wú)法解碼。
AVC 序列頭是 AVCDecoderConfigurationRecord 結構,在標準文檔“ISO-14496-15 AVC 文件格式”中有詳細描述。
AAC 序列頭存儲 AudioSpecificConfig 結構,在“ISO-14496-3 Audio”中有描述。AudioSpecificConfig 結構體的描述非常復雜。在這里,我將簡(jiǎn)化它。預先設置要編碼的音頻格式。其中,音頻編碼選擇“AAC-LC”,音頻采樣率為44100,因此AudioSpecificConfig簡(jiǎn)化為下表:
這樣就可以基本確定AVC序列頭和AAC序列頭的內容了。更詳細的信息,您可以查看相關(guān)文檔。
運行結果
RtmpLiveEncoder 開(kāi)始運行
用 FMS 自帶的 flash 播放器玩
++++++++++++++++++++++++++++++++++++++++++++++++++ ++ +++++++++++++
查看全部
文章實(shí)時(shí)采集(C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼及AAC編碼的音視頻RTMP
)
C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼和AAC編碼的音視頻
RTMP(Real Time Messaging Protocol)是一種專(zhuān)門(mén)用于傳輸音視頻數據的流媒體協(xié)議。它最初由Macromedia 創(chuàng )建,后來(lái)歸它所有。它是一個(gè)私有協(xié)議,主要用于聯(lián)系Flash Player和RtmpServer,如FMS、Red5、crtmpserver等。RTMP協(xié)議可以實(shí)現直播和點(diǎn)播應用,通過(guò)FMLE(Flash Media Live Encoder)將音視頻數據推送到RtmpServer,可以實(shí)現攝像機的實(shí)時(shí)直播。但是,畢竟FMLE的應用范圍是有限的。如果想嵌入到自己的程序中,還是要自己實(shí)現RTMP協(xié)議推送。我已經(jīng)實(shí)現了一個(gè) RTMPLiveEncoder,通過(guò) 采集 攝像頭視頻和麥克風(fēng)音頻,以及 H.264 和 AAC 編碼,然后發(fā)送到FMS和crtmpserver實(shí)現實(shí)時(shí)直播,通過(guò)flash播放器可以正常觀(guān)看,目前效果不錯。延遲時(shí)間約為 2 秒。本文介紹了RTMPLiveEncoder的主要思想和關(guān)鍵點(diǎn),希望對需要該技術(shù)的朋友有所幫助。
技術(shù)分析
實(shí)現RTMPLiveEncoder,需要以下四項關(guān)鍵技術(shù):
其中,前兩項技術(shù)在我之前的文章《采集音頻和攝像頭視頻和實(shí)時(shí)H264編碼和AAC編碼》中已經(jīng)介紹過(guò),這里就不啰嗦了.
將音頻和視頻數據封裝到可播放的流中是一個(gè)難點(diǎn)。仔細研究,你會(huì )發(fā)現RTMP Packet中封裝的音視頻數據流其實(shí)和FLV封裝音視頻數據的方式是一樣的。所以我們只需要根據FLV封裝H264和AAC就可以生成Play流了。
我們再來(lái)看看RTMP協(xié)議。Adobe 曾經(jīng)發(fā)布過(guò)一個(gè)文檔《RTMP 規范》,但維基百科指出該文檔隱藏了很多細節,僅憑它是無(wú)法正確實(shí)現 RTMP 的。不過(guò)還是有參考意義的。事實(shí)上,在A(yíng)dobe發(fā)布之前RTMP協(xié)議幾乎就已經(jīng)被破解了,現在已經(jīng)有了比較完善的實(shí)現,比如RTMPDump,它提供了一個(gè)C語(yǔ)言的接口,這意味著(zhù)它可以很容易地被其他語(yǔ)言調用。
計劃框架
和我之前的文章《采集音視頻與實(shí)時(shí)H264編碼與AAC編碼》文章一樣,使用DirectShow技術(shù)實(shí)現音視頻采集,音視頻編碼, 循環(huán)在各自的線(xiàn)程(AudioEncoderThread 和 VideoEncoderThread)中,RTMP的push開(kāi)始一個(gè)新的線(xiàn)程(RtmpThread)。兩個(gè)編碼線(xiàn)程實(shí)時(shí)對音視頻數據進(jìn)行編碼后,將數據交給Rtmp線(xiàn)程,Rtmp線(xiàn)程循環(huán)封裝Rtmp Packet,然后發(fā)送出去。
線(xiàn)程之間的數據交換是通過(guò)一個(gè)隊列DataBufferQueue來(lái)實(shí)現的。AudioEncoderThread 和 VideoEncoderThread 將數據指針發(fā)布到 DataBufferQueue 后立即返回,以免因發(fā)送 Rtmp 消息而影響編碼線(xiàn)程的正常執行時(shí)間。

RtmpThread的主要工作是發(fā)送音頻數據流的解碼信息頭和視頻數據流的解碼信息頭,不斷地從DataBufferQueue中取出數據,封裝成RTMP Packet,發(fā)送出去。流程如下代碼所示:(process_buf_queue_,也就是上圖中的DataBufferQueue)

librtmp一、 編譯 librtmp
下載rtmpdump的代碼,你會(huì )發(fā)現它是一個(gè)正宗的linux項目,除了一個(gè)簡(jiǎn)單的Makefile,沒(méi)有別的??磥?lái)librtmp并不依賴(lài)系統,所以我們可以在windows上編譯,不用花太多精力。但是,librtmp 依賴(lài)于 openssl 和 zlib,我們需要先編譯它們。
1. 編譯 openssl1.0.0e
a) 下載并安裝 ActivePerl
b) 下載并安裝 nasm()
c) 解壓openssl壓縮包
d) 運行cmd命令行,切換到openssl目錄,分別執行以下命令
>perl Configure VC-WIN32 --prefix=c:\some\dir
>ms\do_nasm
e) 運行Visual Studio Command Prompt(2010),切入openssl目錄,分別執行以下命令。
>nmake -f ms\nt.mak
>nmake -f ms\nt.mak install
f) 編譯完成后,可以在第一條命令指定的目錄中找到編譯好的SDK。
2. 編譯 zlib
a) 解壓zlib壓縮包
b) 運行Visual Studio Command Prompt(2010),切到openssl目錄,分別執行以下命令
>cd contrib\masmx86
>bld_ml32.bat
c) 回到zlib目錄,進(jìn)入contrib\vstudio\vc10目錄,打開(kāi)vs2010解決方案文件,
在zlibstat項目屬性中,去掉預編譯宏ZLIB_WINAPI
d) 選擇 debug 或 release 編譯
3. 編譯 librtmp
a) 首先打開(kāi)visual studio 2010,新建一個(gè)win32控制臺項目,指定為靜態(tài)鏈接庫
b) 將librtmp代碼導入工程中,將openssl、zlib和librtmp的頭文件放在一起,將編譯好的openssl和zlib的靜態(tài)庫放在一起


c) 在項目設置中,添加之前編譯好的openssl和zlib庫,然后編譯。

二、librtmp 的使用
首先初始化RTMP結構

啟動(dòng)后需要向RTMP Server發(fā)起握手連接消息

如果連接成功,就可以開(kāi)始循環(huán)發(fā)送消息了。在這里您需要指定時(shí)間戳和數據類(lèi)型(音頻、視頻、元數據)。這里需要注意的一點(diǎn)是,在調用Send之前,buf中的數據必須是封裝好的H264或者AAC數據流。

關(guān)閉

終于發(fā)布了

H264 和 AAC 數據流
如本文所述,RTMP推送的音視頻流的封裝類(lèi)似于FLV格式??梢钥闯?,要將H264和AAC直播流推送到FMS,需要先發(fā)送“AVC序列頭”和“AAC序列頭”。數據收錄重要的編碼信息,沒(méi)有它們,解碼器將無(wú)法解碼。
AVC 序列頭是 AVCDecoderConfigurationRecord 結構,在標準文檔“ISO-14496-15 AVC 文件格式”中有詳細描述。

AAC 序列頭存儲 AudioSpecificConfig 結構,在“ISO-14496-3 Audio”中有描述。AudioSpecificConfig 結構體的描述非常復雜。在這里,我將簡(jiǎn)化它。預先設置要編碼的音頻格式。其中,音頻編碼選擇“AAC-LC”,音頻采樣率為44100,因此AudioSpecificConfig簡(jiǎn)化為下表:

這樣就可以基本確定AVC序列頭和AAC序列頭的內容了。更詳細的信息,您可以查看相關(guān)文檔。
運行結果
RtmpLiveEncoder 開(kāi)始運行

用 FMS 自帶的 flash 播放器玩

++++++++++++++++++++++++++++++++++++++++++++++++++ ++ +++++++++++++
文章實(shí)時(shí)采集( 日志服務(wù)LogHub提供日志數據實(shí)時(shí)采集功能支持30+種手段)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 183 次瀏覽 ? 2021-10-31 01:11
日志服務(wù)LogHub提供日志數據實(shí)時(shí)采集功能支持30+種手段)
21CTO 社區指南:日志服務(wù) LogHub 提供日志數據的實(shí)時(shí)采集和消費。其中,實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的采集方法。
日志服務(wù)LogHub功能提供日志數據的實(shí)時(shí)采集和消費。實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的接入方式。
data采集一般有兩種方式,區別如下。這里主要討論通過(guò)LogHub采集進(jìn)行流式導入(實(shí)時(shí))。
背景
“我要點(diǎn)外賣(mài)”是一個(gè)基于平臺的電商網(wǎng)站,用戶(hù)、餐廳、送餐員等,用戶(hù)可以通過(guò)網(wǎng)頁(yè)、App、微信、支付寶等方式下單;商家收到訂單后開(kāi)始處理,并自動(dòng)通知周邊快遞員;快遞員將食物送到用戶(hù)手中。
操作要求
在操作過(guò)程中,發(fā)現了以下問(wèn)題:
獲取用戶(hù)難。向渠道(網(wǎng)頁(yè)、微信推送)投放大量廣告費,接收部分用戶(hù),但無(wú)法判斷各渠道效果
用戶(hù)經(jīng)常抱怨發(fā)貨慢,但是下單、發(fā)貨、處理的慢在什么階段?如何優(yōu)化?
用戶(hù)操作,經(jīng)常搞一些優(yōu)惠活動(dòng)(送優(yōu)惠券),卻得不到效果
排期問(wèn)題,如何在高峰時(shí)段幫助商家提前備貨?如何派送更多的快遞到指定區域?
客服,用戶(hù)反饋下單失敗,用戶(hù)背后是什么操作?系統是否有錯誤?
數據采集難點(diǎn)
在數據操作的過(guò)程中,第一步是如何集中采集分散的日志數據,會(huì )遇到以下挑戰:
我們需要采集分散的外部和內部日志并統一管理。以前這個(gè)區域需要做很多工作,現在可以通過(guò)LogHub采集函數訪(fǎng)問(wèn)。
統一的日志管理和配置
創(chuàng )建一個(gè)管理日志項目Project,例如叫myorder
創(chuàng )建日志存儲Logstore,用于從不同數據源生成日志,例如:
如果需要清理原創(chuàng )數據和ETL,可以創(chuàng )建一些中間結果logstore
?。ǜ嗖僮髡垍⒖伎焖偃腴T(mén)/管理控制臺)
用戶(hù)推廣日志采集實(shí)踐
定義如下注冊服務(wù)器地址,生成二維碼(傳單、網(wǎng)頁(yè))供用戶(hù)注冊和掃描。當用戶(hù)掃描頁(yè)面進(jìn)行注冊時(shí),他知道用戶(hù)是通過(guò)特定來(lái)源進(jìn)入并記錄日志的。
;ref=kd4b
當服務(wù)器接受請求時(shí),服務(wù)器輸出如下日志:
2016-06-2019:00:00e41234ab342ef034,102345,5k4d,467890
采集方式:
1. 應用通過(guò)Logtail將日志輸出到硬盤(pán)采集
2. 應用是通過(guò)SDK編寫(xiě)的,見(jiàn)SDK
服務(wù)器數據采集
支付寶/微信公眾號編程是典型的web端模式,日志一般分為三種:
實(shí)踐
日志寫(xiě)入本地文件,通過(guò)Logtail配置正則表達式寫(xiě)入指定Logstore
Docker 中生成的日志可以使用容器服務(wù)來(lái)集成日志服務(wù)
Java程序可以使用Log4J Appender日志,無(wú)需日志記錄,LogHub Producer Library(客戶(hù)端高并發(fā)寫(xiě)入);Log4J 附加程序
可以使用SDK編寫(xiě)C#、Python、Java、PHP、C等
Windows服務(wù)器可以使用Logstash采集
最終用戶(hù)日志訪(fǎng)問(wèn)
Web/M 站點(diǎn)頁(yè)面用戶(hù)行為
頁(yè)面用戶(hù)行為采集可以分為兩類(lèi):
1. 頁(yè)面與后臺服務(wù)器交互:如下單、登錄、退出等。
2. 頁(yè)面無(wú)后臺服務(wù)器交互:前端直接處理請求,如滾動(dòng)、關(guān)閉頁(yè)面等。
實(shí)踐
第一種方法可以參考服務(wù)器采集方法
第二個(gè)可以使用Tracking Pixel/JS Library來(lái)采集頁(yè)面行為,參考Tracking Web interface
服務(wù)器日志運維
例如:
實(shí)踐
不同網(wǎng)絡(luò )環(huán)境下的數據采集
LogHub在每個(gè)區域提供接入點(diǎn),每個(gè)區域提供三個(gè)接入點(diǎn):
更多信息請參考網(wǎng)絡(luò )接入,總有一款適合您。
其他
查看LogHub的完整采集方法。
查看日志實(shí)時(shí)消耗,涉及流計算、數據清洗、數據倉庫、索引查詢(xún)等功能。
作者:簡(jiǎn)志,阿里云計算高級專(zhuān)家,擅長(cháng)日志分析處理領(lǐng)域 查看全部
文章實(shí)時(shí)采集(
日志服務(wù)LogHub提供日志數據實(shí)時(shí)采集功能支持30+種手段)

21CTO 社區指南:日志服務(wù) LogHub 提供日志數據的實(shí)時(shí)采集和消費。其中,實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的采集方法。
日志服務(wù)LogHub功能提供日志數據的實(shí)時(shí)采集和消費。實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的接入方式。

data采集一般有兩種方式,區別如下。這里主要討論通過(guò)LogHub采集進(jìn)行流式導入(實(shí)時(shí))。
背景
“我要點(diǎn)外賣(mài)”是一個(gè)基于平臺的電商網(wǎng)站,用戶(hù)、餐廳、送餐員等,用戶(hù)可以通過(guò)網(wǎng)頁(yè)、App、微信、支付寶等方式下單;商家收到訂單后開(kāi)始處理,并自動(dòng)通知周邊快遞員;快遞員將食物送到用戶(hù)手中。

操作要求
在操作過(guò)程中,發(fā)現了以下問(wèn)題:
獲取用戶(hù)難。向渠道(網(wǎng)頁(yè)、微信推送)投放大量廣告費,接收部分用戶(hù),但無(wú)法判斷各渠道效果
用戶(hù)經(jīng)常抱怨發(fā)貨慢,但是下單、發(fā)貨、處理的慢在什么階段?如何優(yōu)化?
用戶(hù)操作,經(jīng)常搞一些優(yōu)惠活動(dòng)(送優(yōu)惠券),卻得不到效果
排期問(wèn)題,如何在高峰時(shí)段幫助商家提前備貨?如何派送更多的快遞到指定區域?
客服,用戶(hù)反饋下單失敗,用戶(hù)背后是什么操作?系統是否有錯誤?
數據采集難點(diǎn)
在數據操作的過(guò)程中,第一步是如何集中采集分散的日志數據,會(huì )遇到以下挑戰:
我們需要采集分散的外部和內部日志并統一管理。以前這個(gè)區域需要做很多工作,現在可以通過(guò)LogHub采集函數訪(fǎng)問(wèn)。

統一的日志管理和配置
創(chuàng )建一個(gè)管理日志項目Project,例如叫myorder
創(chuàng )建日志存儲Logstore,用于從不同數據源生成日志,例如:
如果需要清理原創(chuàng )數據和ETL,可以創(chuàng )建一些中間結果logstore
?。ǜ嗖僮髡垍⒖伎焖偃腴T(mén)/管理控制臺)
用戶(hù)推廣日志采集實(shí)踐
定義如下注冊服務(wù)器地址,生成二維碼(傳單、網(wǎng)頁(yè))供用戶(hù)注冊和掃描。當用戶(hù)掃描頁(yè)面進(jìn)行注冊時(shí),他知道用戶(hù)是通過(guò)特定來(lái)源進(jìn)入并記錄日志的。
;ref=kd4b
當服務(wù)器接受請求時(shí),服務(wù)器輸出如下日志:
2016-06-2019:00:00e41234ab342ef034,102345,5k4d,467890
采集方式:
1. 應用通過(guò)Logtail將日志輸出到硬盤(pán)采集
2. 應用是通過(guò)SDK編寫(xiě)的,見(jiàn)SDK
服務(wù)器數據采集
支付寶/微信公眾號編程是典型的web端模式,日志一般分為三種:

實(shí)踐
日志寫(xiě)入本地文件,通過(guò)Logtail配置正則表達式寫(xiě)入指定Logstore
Docker 中生成的日志可以使用容器服務(wù)來(lái)集成日志服務(wù)
Java程序可以使用Log4J Appender日志,無(wú)需日志記錄,LogHub Producer Library(客戶(hù)端高并發(fā)寫(xiě)入);Log4J 附加程序
可以使用SDK編寫(xiě)C#、Python、Java、PHP、C等
Windows服務(wù)器可以使用Logstash采集
最終用戶(hù)日志訪(fǎng)問(wèn)
Web/M 站點(diǎn)頁(yè)面用戶(hù)行為
頁(yè)面用戶(hù)行為采集可以分為兩類(lèi):
1. 頁(yè)面與后臺服務(wù)器交互:如下單、登錄、退出等。
2. 頁(yè)面無(wú)后臺服務(wù)器交互:前端直接處理請求,如滾動(dòng)、關(guān)閉頁(yè)面等。
實(shí)踐
第一種方法可以參考服務(wù)器采集方法
第二個(gè)可以使用Tracking Pixel/JS Library來(lái)采集頁(yè)面行為,參考Tracking Web interface
服務(wù)器日志運維
例如:

實(shí)踐
不同網(wǎng)絡(luò )環(huán)境下的數據采集
LogHub在每個(gè)區域提供接入點(diǎn),每個(gè)區域提供三個(gè)接入點(diǎn):
更多信息請參考網(wǎng)絡(luò )接入,總有一款適合您。
其他
查看LogHub的完整采集方法。
查看日志實(shí)時(shí)消耗,涉及流計算、數據清洗、數據倉庫、索引查詢(xún)等功能。
作者:簡(jiǎn)志,阿里云計算高級專(zhuān)家,擅長(cháng)日志分析處理領(lǐng)域
文章實(shí)時(shí)采集( 啟蒙續集之Halcon聯(lián)合C#以及手眼以及標定實(shí)時(shí)采集方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 193 次瀏覽 ? 2021-10-30 22:22
啟蒙續集之Halcon聯(lián)合C#以及手眼以及標定實(shí)時(shí)采集方法)
Halcon結合C#實(shí)時(shí)采集圖像 Halcon結合C#實(shí)時(shí)采集圖像
內容中引用的學(xué)習課程為超人視頻:Halcon結合C#和手眼校準
實(shí)時(shí)采集方法有四種:循環(huán)采集、定時(shí)器、多線(xiàn)程、回調函數
這篇文章在之前的代碼上做了改進(jìn),所以我把之前的代碼復制了一份,再次打開(kāi)發(fā)現這個(gè)界面:
如何打開(kāi) C# 設計窗口:
改進(jìn)過(guò)程:
1.halcon 部分
在halcon中打開(kāi)采集助手,自動(dòng)檢測接口,連接,實(shí)時(shí),插入代碼
Halcon 代碼的一部分是:
* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', 8, 'rgb', -1, 'false', 'default', '0030532361ef_Basler_acA160020gc', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
get_image_size (Image, Width, Height)
dev_set_part (0, 0, Height, Width)
endwhile
close_framegrabber (AcqHandle)
2.C#部分
配置如上一篇文章,我直接用上次代碼改了,所以沒(méi)有重新配置。
添加控件定時(shí)器,屬性欄如下。定時(shí)器方法不準確,間隔越長(cháng)越不準確。單擊閃電符號,Interval 更改為 40ms,事件將在 40ms 后執行。定時(shí)器開(kāi)啟后,不要采集關(guān)閉,否則會(huì )出現錯誤:HALCON error #2454: HALCON handle has already clear in operatorgrab_image_async
下一步就是雙擊不同的控件,然后將halcon導出的代碼復制粘貼到相應位置即可。
在Halcon導出的C#代碼中,只需要關(guān)注action函數中的代碼即可:
// Local iconic variables
HObject ho_Image=null;
// Local control variables
HTuple hv_AcqHandle = new HTuple(), hv_Width = new HTuple();
HTuple hv_Height = new HTuple();
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Image);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
while ((int)(1) != 0)
{
ho_Image.Dispose();
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
hv_Width.Dispose();hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
}
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Image.Dispose();
hv_AcqHandle.Dispose();
hv_Width.Dispose();
hv_Height.Dispose();
打開(kāi)相機部分的代碼:
#region 打開(kāi)相機
private void button3_Click(object sender, EventArgs e)
{
//清空、打開(kāi)、初始化相機
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Timg);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
textBox1.Text = "相機已打開(kāi)!";
}
#endregion
采集顯示部分代碼:
注意:如果顯示的圖像只是halcon中可以看到的一部分,則說(shuō)明halcon中沒(méi)有使用dev_set_part()函數
#region 采集顯示
///
/// 此部分包含定時(shí)器的觸發(fā)
///
///
///
private void button4_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
//打開(kāi)窗口顯示圖片
HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);
HDevWindowStack.Push(hv_WindowHandle);
}
private void timer1_Tick(object sender, EventArgs e)
{
ho_Timg.Dispose();
//獲取圖片
HOperatorSet.GrabImageAsync(out ho_Timg, hv_AcqHandle, -1);
//獲取圖片長(cháng)寬
hv_Width.Dispose(); hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Timg, out hv_Width, out hv_Height);
//設置獲取的圖片在窗口中顯示大?。ù瞬糠秩绻麤](méi)有,則只能顯示采集到的一部分圖像)
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
//如果窗口打開(kāi),顯示圖片
if (HDevWindowStack.IsOpen())
{
HOperatorSet.DispObj(ho_Timg, HDevWindowStack.GetActive());
textBox1.Text = "實(shí)時(shí)錄像成功!";
}
}
#endregion
關(guān)閉相機部分代碼:
#region 關(guān)閉相機
private void button5_Click(object sender, EventArgs e)
{
//關(guān)閉定時(shí)器這步十分重要,不能少了
timer1.Enabled = false;
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Timg.Dispose();
textBox1.Text = "關(guān)閉相機成功!";
}
#endregion
Halcon與C#實(shí)時(shí)采集圖像相關(guān)教程Unity與nodejs實(shí)時(shí)連接,實(shí)時(shí)音視頻圖像識別halcon基礎應用及方法經(jīng)驗分享構建直播時(shí)實(shí)時(shí)音視頻平臺(一)實(shí)時(shí)預測用戶(hù)對物品的偏好阿里云推薦引擎幫助您更好的提升業(yè)務(wù)。海量數據實(shí)時(shí)查詢(xún)域名數據庫設計小記(一)Spark實(shí)時(shí)e -商務(wù)數據分析與可視化HTML前端實(shí)時(shí)可視化開(kāi)發(fā)工具Android平臺美顏相機/相機實(shí)時(shí)濾鏡/視頻編解碼/圖片貼/人臉 查看全部
文章實(shí)時(shí)采集(
啟蒙續集之Halcon聯(lián)合C#以及手眼以及標定實(shí)時(shí)采集方法)
Halcon結合C#實(shí)時(shí)采集圖像 Halcon結合C#實(shí)時(shí)采集圖像
內容中引用的學(xué)習課程為超人視頻:Halcon結合C#和手眼校準
實(shí)時(shí)采集方法有四種:循環(huán)采集、定時(shí)器、多線(xiàn)程、回調函數
這篇文章在之前的代碼上做了改進(jìn),所以我把之前的代碼復制了一份,再次打開(kāi)發(fā)現這個(gè)界面:

如何打開(kāi) C# 設計窗口:

改進(jìn)過(guò)程:
1.halcon 部分
在halcon中打開(kāi)采集助手,自動(dòng)檢測接口,連接,實(shí)時(shí),插入代碼




Halcon 代碼的一部分是:
* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', 8, 'rgb', -1, 'false', 'default', '0030532361ef_Basler_acA160020gc', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
get_image_size (Image, Width, Height)
dev_set_part (0, 0, Height, Width)
endwhile
close_framegrabber (AcqHandle)
2.C#部分
配置如上一篇文章,我直接用上次代碼改了,所以沒(méi)有重新配置。
添加控件定時(shí)器,屬性欄如下。定時(shí)器方法不準確,間隔越長(cháng)越不準確。單擊閃電符號,Interval 更改為 40ms,事件將在 40ms 后執行。定時(shí)器開(kāi)啟后,不要采集關(guān)閉,否則會(huì )出現錯誤:HALCON error #2454: HALCON handle has already clear in operatorgrab_image_async


下一步就是雙擊不同的控件,然后將halcon導出的代碼復制粘貼到相應位置即可。
在Halcon導出的C#代碼中,只需要關(guān)注action函數中的代碼即可:
// Local iconic variables
HObject ho_Image=null;
// Local control variables
HTuple hv_AcqHandle = new HTuple(), hv_Width = new HTuple();
HTuple hv_Height = new HTuple();
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Image);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
while ((int)(1) != 0)
{
ho_Image.Dispose();
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
hv_Width.Dispose();hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
}
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Image.Dispose();
hv_AcqHandle.Dispose();
hv_Width.Dispose();
hv_Height.Dispose();
打開(kāi)相機部分的代碼:
#region 打開(kāi)相機
private void button3_Click(object sender, EventArgs e)
{
//清空、打開(kāi)、初始化相機
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Timg);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
textBox1.Text = "相機已打開(kāi)!";
}
#endregion
采集顯示部分代碼:
注意:如果顯示的圖像只是halcon中可以看到的一部分,則說(shuō)明halcon中沒(méi)有使用dev_set_part()函數
#region 采集顯示
///
/// 此部分包含定時(shí)器的觸發(fā)
///
///
///
private void button4_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
//打開(kāi)窗口顯示圖片
HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);
HDevWindowStack.Push(hv_WindowHandle);
}
private void timer1_Tick(object sender, EventArgs e)
{
ho_Timg.Dispose();
//獲取圖片
HOperatorSet.GrabImageAsync(out ho_Timg, hv_AcqHandle, -1);
//獲取圖片長(cháng)寬
hv_Width.Dispose(); hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Timg, out hv_Width, out hv_Height);
//設置獲取的圖片在窗口中顯示大?。ù瞬糠秩绻麤](méi)有,則只能顯示采集到的一部分圖像)
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
//如果窗口打開(kāi),顯示圖片
if (HDevWindowStack.IsOpen())
{
HOperatorSet.DispObj(ho_Timg, HDevWindowStack.GetActive());
textBox1.Text = "實(shí)時(shí)錄像成功!";
}
}
#endregion
關(guān)閉相機部分代碼:
#region 關(guān)閉相機
private void button5_Click(object sender, EventArgs e)
{
//關(guān)閉定時(shí)器這步十分重要,不能少了
timer1.Enabled = false;
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Timg.Dispose();
textBox1.Text = "關(guān)閉相機成功!";
}
#endregion
Halcon與C#實(shí)時(shí)采集圖像相關(guān)教程Unity與nodejs實(shí)時(shí)連接,實(shí)時(shí)音視頻圖像識別halcon基礎應用及方法經(jīng)驗分享構建直播時(shí)實(shí)時(shí)音視頻平臺(一)實(shí)時(shí)預測用戶(hù)對物品的偏好阿里云推薦引擎幫助您更好的提升業(yè)務(wù)。海量數據實(shí)時(shí)查詢(xún)域名數據庫設計小記(一)Spark實(shí)時(shí)e -商務(wù)數據分析與可視化HTML前端實(shí)時(shí)可視化開(kāi)發(fā)工具Android平臺美顏相機/相機實(shí)時(shí)濾鏡/視頻編解碼/圖片貼/人臉
文章實(shí)時(shí)采集(優(yōu)采云·云采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效抓取網(wǎng)站文章(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 152 次瀏覽 ? 2021-10-29 08:10
優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效爬取網(wǎng)站文章現在大部分內容已經(jīng)完成需要參考很多網(wǎng)頁(yè)文章,那么今天的互聯(lián)網(wǎng)報告開(kāi)發(fā)中如何高效抓取網(wǎng)站文章。本文以UO標題為例。UC頭條是UC瀏覽器團隊打造的新聞資訊推薦平臺,擁有海量新聞資訊內容,通過(guò)阿里大數據推薦和機器學(xué)習算法,為用戶(hù)提供優(yōu)質(zhì)貼心的文章 . 很多用戶(hù)可能有采集UC頭條文章采集的需求,這里有采集文章的文字和圖片。正文可以直接采集,對于圖片,必須先下載圖片網(wǎng)址采集,然后將圖片網(wǎng)址批量轉換成圖片。本文中采集UC標題文章和采集的字段為:標題、出版商、發(fā)布時(shí)間、文章內容、頁(yè)面網(wǎng)址、圖片網(wǎng)址、圖片存儲地址. 采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén)
網(wǎng)頁(yè)打開(kāi)后,默認顯示“推薦”文章。觀(guān)察到該網(wǎng)頁(yè)沒(méi)有翻頁(yè)按鈕,而是通過(guò)下拉加載,不斷加載新內容。因此,我們選擇“打開(kāi)網(wǎng)頁(yè)”這一步,在高級選項中勾選“頁(yè)面加載后向下滾動(dòng)”,滾動(dòng)根據自己的需要設置次數,根據網(wǎng)頁(yè)設置間隔時(shí)間裝載情況。滾動(dòng)方式為“向下滾動(dòng)一屏”,然后點(diǎn)擊“確定”(注意:間隔時(shí)間需要針對網(wǎng)站情況設置,不是絕對。一般情況下間隔時(shí)間>網(wǎng)站 加載時(shí)間夠了,有時(shí)候網(wǎng)速慢,網(wǎng)頁(yè)加載慢,并且需要根據具體情況進(jìn)行調整。詳情請看:優(yōu)采云7.0Tutorial-AJAX滾動(dòng)教程HYPERLINK "/tutorial/ajgd_7.aspx?t=1" /tutorial/ajgd_7.aspx?t =1) 超鏈接 "/article /javascript:;" 第二步:創(chuàng )建翻頁(yè)循環(huán)并提取數據 1) 移動(dòng)鼠標,選擇頁(yè)面上的第一個(gè)文章鏈接。系統會(huì )自動(dòng)識別相似鏈接。在操作提示框中選擇“全選”2)選擇“循環(huán)點(diǎn)擊每個(gè)鏈接”3)系統會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。點(diǎn)擊需要采集的字段(先點(diǎn)擊這里文章title),在操作提示框中選擇“采集元素的文本”<
以下采集是文章 HYPERLINK "/article/javascript:;" 的正文 第三步:提取UC標題文章圖片地址1)接下來(lái)開(kāi)始采集圖片地址。點(diǎn)擊文章中的第一張圖片,然后點(diǎn)擊頁(yè)面上的第二張圖片。在彈出的操作提示框中選擇“采集下圖地址”2)修改字段名,然后點(diǎn)擊“確定”3)現在我們有了采集@ > 到達圖片網(wǎng)址,我們準備批量導出圖片。批量導出圖片時(shí),我們希望將同一文章文章中的圖片放到同一個(gè)文件中,文件夾名稱(chēng)為文章。首先我們選擇標題,在操作提示框中選擇“采集
我們通過(guò)這個(gè)Xpath發(fā)現://DIV[@class='news-list']/UL[1]/LI/DIV[1]/DIV[1]/A,都需要在頁(yè)面文章都位于。3) 將修改后的Xpath復制粘貼到優(yōu)采云所示位置,然后點(diǎn)擊“確定” 第五步:文章Data采集并導出1)點(diǎn)擊左上角“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集” 注意:本地采集占用當前電腦資源繼續采集,如果有采集時(shí)間要求或當前電腦長(cháng)時(shí)間無(wú)法執行采集可以使用云采集功能,云采集在網(wǎng)絡(luò ) 采集 ,沒(méi)有當前電腦的支持,電腦可以關(guān)機,可以設置多個(gè)云節點(diǎn)共享任務(wù),10個(gè)節點(diǎn)相當于10臺電腦分配任務(wù)幫你采集,速度降低到原來(lái)的十分之一;采集 @>數據可以在云端存儲三個(gè)月,隨時(shí)可以導出。采集 完成后會(huì )彈出提示,選擇“導出數據”,選擇“合適的導出方式”,導出采集好的數據。這里我們選擇excel作為導出格式,導出數據如下圖 Step 6: HYPERLINK "/article/javascript:;" 批量將圖片網(wǎng)址轉換為圖片。經(jīng)過(guò)以上操作,我們得到了圖片的URL為采集。接下來(lái)使用優(yōu)采云專(zhuān)用圖片批量下載工具
圖片批量下載工具:HYPERLINK "/s/1c2n60NI" /s/1c2n60NI1)download優(yōu)采云 圖片批量下載工具,雙擊文件中的MyDownloader.app.exe文件打開(kāi)軟件< @2) 打開(kāi)文件菜單,選擇從 EXCEL 導入(目前只支持 EXCEL 格式的文件)3) 進(jìn)行相關(guān)設置。設置完成后,單擊“確定”導入文件。選擇EXCEL文件:導入需要下載圖片地址的EXCEL文件。名稱(chēng):對應數據表的名稱(chēng) File URL 列名稱(chēng):表中對應URL的列名稱(chēng),這里是“圖片網(wǎng)址”保存文件夾名稱(chēng):EXCEL中需要單獨的一欄列出圖片所在的路徑想要保存到文件夾中,
1、操作簡(jiǎn)單,任何人都可以使用:無(wú)需技術(shù)背景,即可上網(wǎng)采集。過(guò)程完全可視化,點(diǎn)擊鼠標即可完成操作,2分鐘即可快速上手。2、功能強大,任意一個(gè)網(wǎng)站都可以:點(diǎn)擊、登錄、翻頁(yè)、識別驗證碼、瀑布流、Ajax腳本,通過(guò)簡(jiǎn)單的設置異步加載數據頁(yè)面。采集。3、云采集,可以關(guān)掉。配置完采集任務(wù)后,可以關(guān)閉,任務(wù)可以在云端執行。龐達云采集集群24*7不間斷運行,無(wú)需擔心IP被封、網(wǎng)絡(luò )中斷。4、特色免費+增值服務(wù),您可以根據自己的需要進(jìn)行選擇。免費版功能齊全,可以滿(mǎn)足用戶(hù)基本的采集需求。同時(shí),還建立了一些增值服務(wù)(如私有云),以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求。 查看全部
文章實(shí)時(shí)采集(優(yōu)采云·云采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效抓取網(wǎng)站文章(組圖))
優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效爬取網(wǎng)站文章現在大部分內容已經(jīng)完成需要參考很多網(wǎng)頁(yè)文章,那么今天的互聯(lián)網(wǎng)報告開(kāi)發(fā)中如何高效抓取網(wǎng)站文章。本文以UO標題為例。UC頭條是UC瀏覽器團隊打造的新聞資訊推薦平臺,擁有海量新聞資訊內容,通過(guò)阿里大數據推薦和機器學(xué)習算法,為用戶(hù)提供優(yōu)質(zhì)貼心的文章 . 很多用戶(hù)可能有采集UC頭條文章采集的需求,這里有采集文章的文字和圖片。正文可以直接采集,對于圖片,必須先下載圖片網(wǎng)址采集,然后將圖片網(wǎng)址批量轉換成圖片。本文中采集UC標題文章和采集的字段為:標題、出版商、發(fā)布時(shí)間、文章內容、頁(yè)面網(wǎng)址、圖片網(wǎng)址、圖片存儲地址. 采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén)
網(wǎng)頁(yè)打開(kāi)后,默認顯示“推薦”文章。觀(guān)察到該網(wǎng)頁(yè)沒(méi)有翻頁(yè)按鈕,而是通過(guò)下拉加載,不斷加載新內容。因此,我們選擇“打開(kāi)網(wǎng)頁(yè)”這一步,在高級選項中勾選“頁(yè)面加載后向下滾動(dòng)”,滾動(dòng)根據自己的需要設置次數,根據網(wǎng)頁(yè)設置間隔時(shí)間裝載情況。滾動(dòng)方式為“向下滾動(dòng)一屏”,然后點(diǎn)擊“確定”(注意:間隔時(shí)間需要針對網(wǎng)站情況設置,不是絕對。一般情況下間隔時(shí)間>網(wǎng)站 加載時(shí)間夠了,有時(shí)候網(wǎng)速慢,網(wǎng)頁(yè)加載慢,并且需要根據具體情況進(jìn)行調整。詳情請看:優(yōu)采云7.0Tutorial-AJAX滾動(dòng)教程HYPERLINK "/tutorial/ajgd_7.aspx?t=1" /tutorial/ajgd_7.aspx?t =1) 超鏈接 "/article /javascript:;" 第二步:創(chuàng )建翻頁(yè)循環(huán)并提取數據 1) 移動(dòng)鼠標,選擇頁(yè)面上的第一個(gè)文章鏈接。系統會(huì )自動(dòng)識別相似鏈接。在操作提示框中選擇“全選”2)選擇“循環(huán)點(diǎn)擊每個(gè)鏈接”3)系統會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。點(diǎn)擊需要采集的字段(先點(diǎn)擊這里文章title),在操作提示框中選擇“采集元素的文本”<
以下采集是文章 HYPERLINK "/article/javascript:;" 的正文 第三步:提取UC標題文章圖片地址1)接下來(lái)開(kāi)始采集圖片地址。點(diǎn)擊文章中的第一張圖片,然后點(diǎn)擊頁(yè)面上的第二張圖片。在彈出的操作提示框中選擇“采集下圖地址”2)修改字段名,然后點(diǎn)擊“確定”3)現在我們有了采集@ > 到達圖片網(wǎng)址,我們準備批量導出圖片。批量導出圖片時(shí),我們希望將同一文章文章中的圖片放到同一個(gè)文件中,文件夾名稱(chēng)為文章。首先我們選擇標題,在操作提示框中選擇“采集
我們通過(guò)這個(gè)Xpath發(fā)現://DIV[@class='news-list']/UL[1]/LI/DIV[1]/DIV[1]/A,都需要在頁(yè)面文章都位于。3) 將修改后的Xpath復制粘貼到優(yōu)采云所示位置,然后點(diǎn)擊“確定” 第五步:文章Data采集并導出1)點(diǎn)擊左上角“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集” 注意:本地采集占用當前電腦資源繼續采集,如果有采集時(shí)間要求或當前電腦長(cháng)時(shí)間無(wú)法執行采集可以使用云采集功能,云采集在網(wǎng)絡(luò ) 采集 ,沒(méi)有當前電腦的支持,電腦可以關(guān)機,可以設置多個(gè)云節點(diǎn)共享任務(wù),10個(gè)節點(diǎn)相當于10臺電腦分配任務(wù)幫你采集,速度降低到原來(lái)的十分之一;采集 @>數據可以在云端存儲三個(gè)月,隨時(shí)可以導出。采集 完成后會(huì )彈出提示,選擇“導出數據”,選擇“合適的導出方式”,導出采集好的數據。這里我們選擇excel作為導出格式,導出數據如下圖 Step 6: HYPERLINK "/article/javascript:;" 批量將圖片網(wǎng)址轉換為圖片。經(jīng)過(guò)以上操作,我們得到了圖片的URL為采集。接下來(lái)使用優(yōu)采云專(zhuān)用圖片批量下載工具
圖片批量下載工具:HYPERLINK "/s/1c2n60NI" /s/1c2n60NI1)download優(yōu)采云 圖片批量下載工具,雙擊文件中的MyDownloader.app.exe文件打開(kāi)軟件< @2) 打開(kāi)文件菜單,選擇從 EXCEL 導入(目前只支持 EXCEL 格式的文件)3) 進(jìn)行相關(guān)設置。設置完成后,單擊“確定”導入文件。選擇EXCEL文件:導入需要下載圖片地址的EXCEL文件。名稱(chēng):對應數據表的名稱(chēng) File URL 列名稱(chēng):表中對應URL的列名稱(chēng),這里是“圖片網(wǎng)址”保存文件夾名稱(chēng):EXCEL中需要單獨的一欄列出圖片所在的路徑想要保存到文件夾中,
1、操作簡(jiǎn)單,任何人都可以使用:無(wú)需技術(shù)背景,即可上網(wǎng)采集。過(guò)程完全可視化,點(diǎn)擊鼠標即可完成操作,2分鐘即可快速上手。2、功能強大,任意一個(gè)網(wǎng)站都可以:點(diǎn)擊、登錄、翻頁(yè)、識別驗證碼、瀑布流、Ajax腳本,通過(guò)簡(jiǎn)單的設置異步加載數據頁(yè)面。采集。3、云采集,可以關(guān)掉。配置完采集任務(wù)后,可以關(guān)閉,任務(wù)可以在云端執行。龐達云采集集群24*7不間斷運行,無(wú)需擔心IP被封、網(wǎng)絡(luò )中斷。4、特色免費+增值服務(wù),您可以根據自己的需要進(jìn)行選擇。免費版功能齊全,可以滿(mǎn)足用戶(hù)基本的采集需求。同時(shí),還建立了一些增值服務(wù)(如私有云),以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求。
文章實(shí)時(shí)采集(p2p貸款如何讓你看到的不僅僅是你想看到)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2021-10-27 04:05
文章實(shí)時(shí)采集人們的無(wú)形財富并保存。請認真閱讀此文,及時(shí)閱讀最新的渠道策略和工具策略,對于你未來(lái)的理財非常有幫助。人們在網(wǎng)上獲取有價(jià)值的信息。所以讓你看到的不僅僅是你想看到的。就算不那么好,也是必要的。讓我們先來(lái)看一下以下這張圖:來(lái)自一個(gè)很有個(gè)性的網(wǎng)站,它內容全是你自己的財務(wù)狀況,收入和支出情況。它也是一個(gè)非常有名氣的服務(wù)供應商,它的名字叫p2p貸款。
在這個(gè)網(wǎng)站上的所有公司名稱(chēng)全是獨特的,但它們的所有內容全是相同的。我相信這樣做會(huì )有助于你解決風(fēng)險和預期成本。風(fēng)險:風(fēng)險在于,我不確定我看到的是不是我想看到的。但我在網(wǎng)上找到了我想看到的東西。支出:收入支出全是相同的。(實(shí)際上要比收入支出總量更少)。所以不要在這樣的一個(gè)服務(wù)上投入太多精力。并且分散到很多低風(fēng)險的貸款上,這會(huì )提高我們的收益。
當然最好選擇那些產(chǎn)品太豐富而有一些小問(wèn)題的網(wǎng)站。重要的是,人們不會(huì )將這個(gè)服務(wù)當成一個(gè)額外的放貸者來(lái)看待。而是將它看成一個(gè)有生意的好客戶(hù)。同時(shí)他們也會(huì )為了符合我們的規則和盡可能多的貸款資質(zhì)來(lái)創(chuàng )建。如果你要征信違約的,很遺憾,你的錢(qián)是不會(huì )到另一個(gè)人手里。換句話(huà)說(shuō),我建議你提供個(gè)人信息,還是要看那些需要的細節情況。
如果你已經(jīng)做到了,就應該盡量多提供這些數據和信息,這就像如果你已經(jīng)成為一個(gè)常人,你就應該能基本做到一樣。當然比你想象的那樣,你提供信息的人們會(huì )要求更多。這個(gè)時(shí)候你就不得不提供給他們我們需要的數據,這就是后話(huà)了?;氐交A設施角度,你要問(wèn)自己,那么多公司,不同的風(fēng)險偏好,如何保存這些信息?你將他們分割到盡可能多的貸款上嗎?有兩種做法。
1.將這些貸款不要提供給不想對他們負責的人,就比如要設置自己的賬戶(hù),它的利率,還款方式。2.將他們打包在一起。3.或者你再其他地方存儲這些數據的時(shí)候,只分發(fā)前2種。4.不對他們負責5.不對他們負責6.不對他們負責一個(gè)更快捷的方法是購買(mǎi)短期貸款,然后把每月的款項打到那里7.將短期貸款作為其他可支配貸款的替代品而不是存在自己的賬戶(hù)8.重要的是要記住,到頭來(lái)他們都只是一次性貸款。
如果你不把他們放到新貸款,那你之前所有的貸款都會(huì )消失。他們也不再能幫助你。這意味著(zhù)你把所有的短期貸款一次性購買(mǎi)一次性?xún)斶€,而不是分別購買(mǎi)。9.銀行的支持,找一個(gè)靠譜的信用卡公司或者支付公司,讓他們們看看你的資金狀況,然后幫你審批貸款。10.沒(méi)有誰(shuí)需要你花錢(qián)買(mǎi)他們,重要的是你的錢(qián)。11.不要將短期貸款放在不確定的貸款機構。你正在設置你的賬戶(hù),通常。 查看全部
文章實(shí)時(shí)采集(p2p貸款如何讓你看到的不僅僅是你想看到)
文章實(shí)時(shí)采集人們的無(wú)形財富并保存。請認真閱讀此文,及時(shí)閱讀最新的渠道策略和工具策略,對于你未來(lái)的理財非常有幫助。人們在網(wǎng)上獲取有價(jià)值的信息。所以讓你看到的不僅僅是你想看到的。就算不那么好,也是必要的。讓我們先來(lái)看一下以下這張圖:來(lái)自一個(gè)很有個(gè)性的網(wǎng)站,它內容全是你自己的財務(wù)狀況,收入和支出情況。它也是一個(gè)非常有名氣的服務(wù)供應商,它的名字叫p2p貸款。
在這個(gè)網(wǎng)站上的所有公司名稱(chēng)全是獨特的,但它們的所有內容全是相同的。我相信這樣做會(huì )有助于你解決風(fēng)險和預期成本。風(fēng)險:風(fēng)險在于,我不確定我看到的是不是我想看到的。但我在網(wǎng)上找到了我想看到的東西。支出:收入支出全是相同的。(實(shí)際上要比收入支出總量更少)。所以不要在這樣的一個(gè)服務(wù)上投入太多精力。并且分散到很多低風(fēng)險的貸款上,這會(huì )提高我們的收益。
當然最好選擇那些產(chǎn)品太豐富而有一些小問(wèn)題的網(wǎng)站。重要的是,人們不會(huì )將這個(gè)服務(wù)當成一個(gè)額外的放貸者來(lái)看待。而是將它看成一個(gè)有生意的好客戶(hù)。同時(shí)他們也會(huì )為了符合我們的規則和盡可能多的貸款資質(zhì)來(lái)創(chuàng )建。如果你要征信違約的,很遺憾,你的錢(qián)是不會(huì )到另一個(gè)人手里。換句話(huà)說(shuō),我建議你提供個(gè)人信息,還是要看那些需要的細節情況。
如果你已經(jīng)做到了,就應該盡量多提供這些數據和信息,這就像如果你已經(jīng)成為一個(gè)常人,你就應該能基本做到一樣。當然比你想象的那樣,你提供信息的人們會(huì )要求更多。這個(gè)時(shí)候你就不得不提供給他們我們需要的數據,這就是后話(huà)了?;氐交A設施角度,你要問(wèn)自己,那么多公司,不同的風(fēng)險偏好,如何保存這些信息?你將他們分割到盡可能多的貸款上嗎?有兩種做法。
1.將這些貸款不要提供給不想對他們負責的人,就比如要設置自己的賬戶(hù),它的利率,還款方式。2.將他們打包在一起。3.或者你再其他地方存儲這些數據的時(shí)候,只分發(fā)前2種。4.不對他們負責5.不對他們負責6.不對他們負責一個(gè)更快捷的方法是購買(mǎi)短期貸款,然后把每月的款項打到那里7.將短期貸款作為其他可支配貸款的替代品而不是存在自己的賬戶(hù)8.重要的是要記住,到頭來(lái)他們都只是一次性貸款。
如果你不把他們放到新貸款,那你之前所有的貸款都會(huì )消失。他們也不再能幫助你。這意味著(zhù)你把所有的短期貸款一次性購買(mǎi)一次性?xún)斶€,而不是分別購買(mǎi)。9.銀行的支持,找一個(gè)靠譜的信用卡公司或者支付公司,讓他們們看看你的資金狀況,然后幫你審批貸款。10.沒(méi)有誰(shuí)需要你花錢(qián)買(mǎi)他們,重要的是你的錢(qián)。11.不要將短期貸款放在不確定的貸款機構。你正在設置你的賬戶(hù),通常。
文章實(shí)時(shí)采集( 80集Python基礎入門(mén)視頻教學(xué)點(diǎn)免費觀(guān)看事百科段子)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 173 次瀏覽 ? 2021-10-24 11:17
80集Python基礎入門(mén)視頻教學(xué)點(diǎn)免費觀(guān)看事百科段子)
Python爬蟲(chóng)實(shí)戰練習:采集尷尬百科段數據
更新時(shí)間:2021年10月21日10:45:35 作者:松鼠愛(ài)吃餅干
讀一萬(wàn)本書(shū)不如行萬(wàn)里。僅僅學(xué)習書(shū)中的理論是遠遠不夠的。只有在實(shí)戰中才能獲得能力的提升。段落的數據,可以檢查過(guò)程中的差距,提高水平
內容
知識點(diǎn)
1.爬行的基本步驟
2.請求模塊
3.解析模塊
4.xpath數據分析方法
5.分頁(yè)功能
爬蟲(chóng)的基本步驟:
1.獲取網(wǎng)頁(yè)地址(維基百科段落地址)
2.發(fā)送請求
3.數據分析
4.本地保存
爬蟲(chóng)代碼導入需要的模塊
import re
import requests
import parsel
獲取網(wǎng)址
url = 'https://www.qiushibaike.com/text/'
# 請求頭 偽裝客戶(hù)端向服務(wù)器發(fā)送請求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
發(fā)送請求
requ = requests.get(url=url, headers=headers).text
數據分析
sel = parsel.Selector(requ) # 解析對象
href = sel.xpath('//body/div/div/div[2]/div/a[1]/@href').getall()
for html in href:
txt_ + html
requ2 = requests.get(url=txt_href, headers=headers).text
sel2 = parsel.Selector(requ2)
title = sel2.xpath('//body/div[2]/div/div[2]/h1/text()').get().strip()
title = re.sub(r'[|/\:?*]','_',title)
# content = sel2.xpath('//div[@class="content"]/text()').getall()
content = sel2.xpath('//body/div[2]/div/div[2]/div[2]/div[1]/div/text()').getall()
contents = '\n'.join(content)
保存數據
with open('糗事百科text\\'+title + '.txt', mode='w', encoding='utf-8') as fp:
fp.write(contents)
print(title, '下載成功')
運行代碼獲取數據
【付費VIP完整版】只要看完就能學(xué)會(huì )的教程,80集Python基礎入門(mén)視頻教學(xué)
點(diǎn)擊這里免費在線(xiàn)觀(guān)看
至此,這篇關(guān)于Python爬蟲(chóng)實(shí)戰演練采集尷尬百科段落數據文章的介紹就到這里,更多Python相關(guān)采集尷尬百科段落內容,請搜索腳本首頁(yè)上一頁(yè)< @文章 或繼續瀏覽下方的相關(guān)文章,希望大家以后多多支持Scripthome! 查看全部
文章實(shí)時(shí)采集(
80集Python基礎入門(mén)視頻教學(xué)點(diǎn)免費觀(guān)看事百科段子)
Python爬蟲(chóng)實(shí)戰練習:采集尷尬百科段數據
更新時(shí)間:2021年10月21日10:45:35 作者:松鼠愛(ài)吃餅干
讀一萬(wàn)本書(shū)不如行萬(wàn)里。僅僅學(xué)習書(shū)中的理論是遠遠不夠的。只有在實(shí)戰中才能獲得能力的提升。段落的數據,可以檢查過(guò)程中的差距,提高水平
內容
知識點(diǎn)
1.爬行的基本步驟
2.請求模塊
3.解析模塊
4.xpath數據分析方法
5.分頁(yè)功能
爬蟲(chóng)的基本步驟:
1.獲取網(wǎng)頁(yè)地址(維基百科段落地址)
2.發(fā)送請求
3.數據分析
4.本地保存
爬蟲(chóng)代碼導入需要的模塊
import re
import requests
import parsel
獲取網(wǎng)址
url = 'https://www.qiushibaike.com/text/'
# 請求頭 偽裝客戶(hù)端向服務(wù)器發(fā)送請求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
發(fā)送請求
requ = requests.get(url=url, headers=headers).text
數據分析
sel = parsel.Selector(requ) # 解析對象
href = sel.xpath('//body/div/div/div[2]/div/a[1]/@href').getall()
for html in href:
txt_ + html
requ2 = requests.get(url=txt_href, headers=headers).text
sel2 = parsel.Selector(requ2)
title = sel2.xpath('//body/div[2]/div/div[2]/h1/text()').get().strip()
title = re.sub(r'[|/\:?*]','_',title)
# content = sel2.xpath('//div[@class="content"]/text()').getall()
content = sel2.xpath('//body/div[2]/div/div[2]/div[2]/div[1]/div/text()').getall()
contents = '\n'.join(content)
保存數據
with open('糗事百科text\\'+title + '.txt', mode='w', encoding='utf-8') as fp:
fp.write(contents)
print(title, '下載成功')
運行代碼獲取數據


【付費VIP完整版】只要看完就能學(xué)會(huì )的教程,80集Python基礎入門(mén)視頻教學(xué)
點(diǎn)擊這里免費在線(xiàn)觀(guān)看
至此,這篇關(guān)于Python爬蟲(chóng)實(shí)戰演練采集尷尬百科段落數據文章的介紹就到這里,更多Python相關(guān)采集尷尬百科段落內容,請搜索腳本首頁(yè)上一頁(yè)< @文章 或繼續瀏覽下方的相關(guān)文章,希望大家以后多多支持Scripthome!
文章實(shí)時(shí)采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計和實(shí)現)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 187 次瀏覽 ? 2021-10-23 11:11
本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,使用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
一、 方案說(shuō)明(一) 概述 本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,并傳輸到CKafka,將CKafka數據連接到Oceanus(Flink)進(jìn)行流計算,通過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理輸出到Elasticsearch,最后通過(guò)Kibana頁(yè)面查詢(xún)結果。計劃中使用Promethus監控系統指標,如作為流計算 Oceanus 作業(yè)運行狀態(tài),Cloud Grafana 監控 CVM 或業(yè)務(wù)應用指標。
(二)方案架構
二、前期準備 在實(shí)施本方案之前,請確保已經(jīng)創(chuàng )建并配置了相應的大數據組件。(一)創(chuàng )建私網(wǎng)VPC 私網(wǎng)VPC是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間,建議在搭建CKafka、流計算Oceanus、Elasticsearch集群等時(shí)選擇同一個(gè)VPC服務(wù).詳情創(chuàng )建步驟請參考幫助文檔()。(二)創(chuàng )建CKafka實(shí)例Kafka建議選擇最新的2.4.1版本,與Filebeat兼容性更好< @采集工具購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info(三) 創(chuàng )建流計算Oceanus集群 流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具?;贏(yíng)pache Flink,一站式開(kāi)發(fā),無(wú)縫連接、亞秒級延遲、低成本、安全穩定的企業(yè)級實(shí)時(shí)大數據分析平臺。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。在流計算中在Oceanus控制臺的【集群管理】->【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。(四)在Elasticsearch控制臺創(chuàng )建Elasticsearch實(shí)例,點(diǎn)擊左上角【新建】創(chuàng )建集群,具體步驟請參考幫助文檔()。(五)
為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
(六)創(chuàng )建獨立的Grafana資源獨立Grafana在灰色發(fā)布中,需要在Grafana管理頁(yè)面()單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
?。ㄆ撸┌惭b配置Filebeat Filebeat是一個(gè)輕量級的日志數據工具采集,通過(guò)監控指定位置的文件來(lái)采集信息,在這個(gè)VPC下提供給需要監控主機的云服務(wù)器信息及應用信息 安裝Filebeat 安裝方法一:下載Filebeat 下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】->【beats管理】中提供的Filebeat,本例采用方法一。下載到CVM然后配置Filebeat,在filebeat.yml文件中添加如下配置項:
# 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:programdataelasticsearchlogs*
# 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka 版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的 IP 地址+端口topic: 'topic-app-info' # 請填寫(xiě)實(shí)際的 topic
請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
三、項目實(shí)現
接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
(一)Filebeat 采集 數據
1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集jar應用日志、JVM使用情況、監聽(tīng)端口等,詳情請參考Filebeat官網(wǎng)
()。
# filebeat 啟動(dòng)<br />./filebeat -e -c filebeat.yml<br /><br /># 監控系統信息寫(xiě)入 test.log 文件<br />top -d 10 >>/tmp/test.log
2、 進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
Filebeat采集中Kafka的數據格式:
{ "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
(二)創(chuàng )建 Flink SQL 作業(yè)
使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。1、 定義Source,根據Filebeat中json消息的格式構造Flink Table Source。
CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( 'connector' = 'kafka', -- 可選 'kafka','kafka-0.11'. 注意選擇對應的內置 Connector 'topic' = 'topic-app-info', -- 替換為您要消費的 Topic 'scan.startup.mode' = 'earliest-offset', 'properties.bootstrap.servers' = '10.0.0.29:9092', 'properties.group.id' = 'oceanus_group2', -- 必選參數, 一定要指定 Group ID 'format' = 'json', 'json.ignore-parse-errors' = 'true', -- 忽略 JSON 結構解析異常 'json.fail-on-missing-field' = 'false' -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
2、定義接收器
CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( 'connector.type' = 'elasticsearch', 'connector.version' = '6', 'connector.hosts' = 'http://10.0.0.175:9200', 'connector.index' = 'oceanus_test2', 'connector.document-type' = '_doc', 'connector.username' = 'elastic', 'connector.password' = 'yourpassword', 'update-mode' = 'upsert', -- 可選無(wú)主鍵的 'append' 模式,或有主鍵的 'upsert' 模式 'connector.key-null-literal' = 'n/a', -- 主鍵為 null 時(shí)的替代字符串,默認是 'null' 'format.type' = 'json' -- 輸出數據格式, 目前只支持 'json');
3、處理業(yè)務(wù)數據
INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
4、配置作業(yè)參數【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka 注意:根據實(shí)際版本選擇5、查詢(xún)ES數據,在Kibana上查詢(xún)數據ES控制臺頁(yè)面,或進(jìn)入同一子網(wǎng)的CVM下,使用以下命令查詢(xún):
# 查詢(xún)索引 username:password 請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H 'Content-Type: application/json' -d'{ "query": { "match_all": {}}, "size": 10}'
更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。(三)系統指標監控本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。Prometheus是一個(gè)非常靈活的時(shí)序數據庫,通常用于監控數據的存儲、計算和告警。流計算Oceanus建議用戶(hù)使用騰訊云監控提供的Prometheus服務(wù),避免部署和運維成本,同時(shí)還支持騰訊云的通知模板,可以通過(guò)短信、電話(huà)、郵件等方式輕松到達不同的報警信息、企業(yè)微信機器人等 Receiver. 監控配置 流計算 Oceanus 作業(yè)監控
除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
2、 在任何流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(灰度級Grafana這里不能輸入),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
()。
3、3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【編輯】設置不同的Panel,優(yōu)化顯示效果。
告警配置1、進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】 ] 配置相關(guān)信息。具體操作請參考訪(fǎng)問(wèn)Prometheus自定義監控()。
2、設置報警通知。選擇[選擇模板]或[新建]設置通知模板。
3、短信通知信息
?。ㄋ模I(yè)務(wù)指標監控通過(guò)Filebeat采集給應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
1、Grafana 配置 ES 數據源。進(jìn)入灰色發(fā)布中的Grafana控制臺(),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】 ,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,添加數據源。
2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
3、 顯示效果如下:
注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
四、總結 本方案嘗試了系統監控指標和業(yè)務(wù)監控指標兩個(gè)監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Prometus相關(guān)操作。此外,需要注意的是:
火熱進(jìn)行中↓↓
點(diǎn)擊文末“閱讀原文”,了解更多騰訊云流媒體Oceanus~騰訊云大數據
長(cháng)按二維碼 查看全部
文章實(shí)時(shí)采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計和實(shí)現)
本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,使用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
一、 方案說(shuō)明(一) 概述 本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,并傳輸到CKafka,將CKafka數據連接到Oceanus(Flink)進(jìn)行流計算,通過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理輸出到Elasticsearch,最后通過(guò)Kibana頁(yè)面查詢(xún)結果。計劃中使用Promethus監控系統指標,如作為流計算 Oceanus 作業(yè)運行狀態(tài),Cloud Grafana 監控 CVM 或業(yè)務(wù)應用指標。

(二)方案架構

二、前期準備 在實(shí)施本方案之前,請確保已經(jīng)創(chuàng )建并配置了相應的大數據組件。(一)創(chuàng )建私網(wǎng)VPC 私網(wǎng)VPC是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間,建議在搭建CKafka、流計算Oceanus、Elasticsearch集群等時(shí)選擇同一個(gè)VPC服務(wù).詳情創(chuàng )建步驟請參考幫助文檔()。(二)創(chuàng )建CKafka實(shí)例Kafka建議選擇最新的2.4.1版本,與Filebeat兼容性更好< @采集工具購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info(三) 創(chuàng )建流計算Oceanus集群 流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具?;贏(yíng)pache Flink,一站式開(kāi)發(fā),無(wú)縫連接、亞秒級延遲、低成本、安全穩定的企業(yè)級實(shí)時(shí)大數據分析平臺。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。在流計算中在Oceanus控制臺的【集群管理】->【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。(四)在Elasticsearch控制臺創(chuàng )建Elasticsearch實(shí)例,點(diǎn)擊左上角【新建】創(chuàng )建集群,具體步驟請參考幫助文檔()。(五)
為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
(六)創(chuàng )建獨立的Grafana資源獨立Grafana在灰色發(fā)布中,需要在Grafana管理頁(yè)面()單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
?。ㄆ撸┌惭b配置Filebeat Filebeat是一個(gè)輕量級的日志數據工具采集,通過(guò)監控指定位置的文件來(lái)采集信息,在這個(gè)VPC下提供給需要監控主機的云服務(wù)器信息及應用信息 安裝Filebeat 安裝方法一:下載Filebeat 下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】->【beats管理】中提供的Filebeat,本例采用方法一。下載到CVM然后配置Filebeat,在filebeat.yml文件中添加如下配置項:
# 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:programdataelasticsearchlogs*
# 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka 版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的 IP 地址+端口topic: 'topic-app-info' # 請填寫(xiě)實(shí)際的 topic
請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
三、項目實(shí)現
接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
(一)Filebeat 采集 數據
1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集jar應用日志、JVM使用情況、監聽(tīng)端口等,詳情請參考Filebeat官網(wǎng)
()。
# filebeat 啟動(dòng)<br />./filebeat -e -c filebeat.yml<br /><br /># 監控系統信息寫(xiě)入 test.log 文件<br />top -d 10 >>/tmp/test.log
2、 進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
Filebeat采集中Kafka的數據格式:
{ "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
(二)創(chuàng )建 Flink SQL 作業(yè)
使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。1、 定義Source,根據Filebeat中json消息的格式構造Flink Table Source。
CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( 'connector' = 'kafka', -- 可選 'kafka','kafka-0.11'. 注意選擇對應的內置 Connector 'topic' = 'topic-app-info', -- 替換為您要消費的 Topic 'scan.startup.mode' = 'earliest-offset', 'properties.bootstrap.servers' = '10.0.0.29:9092', 'properties.group.id' = 'oceanus_group2', -- 必選參數, 一定要指定 Group ID 'format' = 'json', 'json.ignore-parse-errors' = 'true', -- 忽略 JSON 結構解析異常 'json.fail-on-missing-field' = 'false' -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
2、定義接收器
CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( 'connector.type' = 'elasticsearch', 'connector.version' = '6', 'connector.hosts' = 'http://10.0.0.175:9200', 'connector.index' = 'oceanus_test2', 'connector.document-type' = '_doc', 'connector.username' = 'elastic', 'connector.password' = 'yourpassword', 'update-mode' = 'upsert', -- 可選無(wú)主鍵的 'append' 模式,或有主鍵的 'upsert' 模式 'connector.key-null-literal' = 'n/a', -- 主鍵為 null 時(shí)的替代字符串,默認是 'null' 'format.type' = 'json' -- 輸出數據格式, 目前只支持 'json');
3、處理業(yè)務(wù)數據
INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
4、配置作業(yè)參數【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka 注意:根據實(shí)際版本選擇5、查詢(xún)ES數據,在Kibana上查詢(xún)數據ES控制臺頁(yè)面,或進(jìn)入同一子網(wǎng)的CVM下,使用以下命令查詢(xún):
# 查詢(xún)索引 username:password 請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H 'Content-Type: application/json' -d'{ "query": { "match_all": {}}, "size": 10}'
更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。(三)系統指標監控本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。Prometheus是一個(gè)非常靈活的時(shí)序數據庫,通常用于監控數據的存儲、計算和告警。流計算Oceanus建議用戶(hù)使用騰訊云監控提供的Prometheus服務(wù),避免部署和運維成本,同時(shí)還支持騰訊云的通知模板,可以通過(guò)短信、電話(huà)、郵件等方式輕松到達不同的報警信息、企業(yè)微信機器人等 Receiver. 監控配置 流計算 Oceanus 作業(yè)監控
除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
2、 在任何流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(灰度級Grafana這里不能輸入),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
()。

3、3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【編輯】設置不同的Panel,優(yōu)化顯示效果。

告警配置1、進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】 ] 配置相關(guān)信息。具體操作請參考訪(fǎng)問(wèn)Prometheus自定義監控()。

2、設置報警通知。選擇[選擇模板]或[新建]設置通知模板。

3、短信通知信息
?。ㄋ模I(yè)務(wù)指標監控通過(guò)Filebeat采集給應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
1、Grafana 配置 ES 數據源。進(jìn)入灰色發(fā)布中的Grafana控制臺(),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】 ,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,添加數據源。
2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
3、 顯示效果如下:

注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
四、總結 本方案嘗試了系統監控指標和業(yè)務(wù)監控指標兩個(gè)監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Prometus相關(guān)操作。此外,需要注意的是:
火熱進(jìn)行中↓↓
點(diǎn)擊文末“閱讀原文”,了解更多騰訊云流媒體Oceanus~騰訊云大數據
長(cháng)按二維碼
文章實(shí)時(shí)采集(查找自媒體爆文素材比較方便的渠道,合理的使用)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 325 次瀏覽 ? 2021-10-22 00:03
從事自媒體運營(yíng)行業(yè),每天都需要不斷學(xué)習新知識,比如標題的寫(xiě)作技巧是什么,如何切入熱點(diǎn)跟蹤角度,這些都需要積極閱讀材料和然后學(xué)習,但學(xué)習的目的歸根結底還是你自己的實(shí)際操作。如果我們每天都需要大量的文章素材,而且都是優(yōu)質(zhì)的爆文素材,我們不可能天天到處搜索,那么有沒(méi)有什么工具可以實(shí)現呢?
今天小編為大家推薦三個(gè)采集站點(diǎn)自媒體爆文。當你需要大量爆文資料參考時(shí),只要根據自己的行業(yè)數據想知道關(guān)鍵詞都可以看到。
1、簡(jiǎn)單的文章
易傳采集擁有市面上所有主流自媒體平臺的所有爆文數據,并提供基礎閱讀分析數據和互動(dòng)數據。參考采集的爆文的分析,為我自己的創(chuàng )作提供靈感和方向。
您也可以根據您的特定領(lǐng)域搜索您想要的爆文材料。除了采集爆文,您還可以提供文章編輯、短視頻素材采集和下載、文章原創(chuàng )度檢測和真實(shí)-時(shí)間熱點(diǎn)追蹤功能,是一款非常好用的自媒體輔助工具。
2、西瓜助手
西瓜助手的西瓜數據也是采集很多領(lǐng)域的爆文素材。不同的是它有提取標簽的功能,而且在一些有用的工具中還有熱門(mén)標題的更新,聊勝于無(wú)。畢竟,不是每個(gè)人都可以使用它。
3、樂(lè )觀(guān)
Optimism的優(yōu)勢之一是網(wǎng)站的部分功能無(wú)需注冊即可應用,詳細功能需要登錄。Optimism 沒(méi)有很多內容篩選,但是可以綁定一些邊緣自媒體平臺,然后一鍵將內容同步到這些平臺。
以上三個(gè)網(wǎng)站是小編覺(jué)得找自媒體爆文素材比較方便的渠道。對于剛剛進(jìn)入行業(yè)的新人來(lái)說(shuō),合理使用這三個(gè)。一個(gè)網(wǎng)站可以大大提高自己的運營(yíng)效率。 查看全部
文章實(shí)時(shí)采集(查找自媒體爆文素材比較方便的渠道,合理的使用)
從事自媒體運營(yíng)行業(yè),每天都需要不斷學(xué)習新知識,比如標題的寫(xiě)作技巧是什么,如何切入熱點(diǎn)跟蹤角度,這些都需要積極閱讀材料和然后學(xué)習,但學(xué)習的目的歸根結底還是你自己的實(shí)際操作。如果我們每天都需要大量的文章素材,而且都是優(yōu)質(zhì)的爆文素材,我們不可能天天到處搜索,那么有沒(méi)有什么工具可以實(shí)現呢?

今天小編為大家推薦三個(gè)采集站點(diǎn)自媒體爆文。當你需要大量爆文資料參考時(shí),只要根據自己的行業(yè)數據想知道關(guān)鍵詞都可以看到。
1、簡(jiǎn)單的文章
易傳采集擁有市面上所有主流自媒體平臺的所有爆文數據,并提供基礎閱讀分析數據和互動(dòng)數據。參考采集的爆文的分析,為我自己的創(chuàng )作提供靈感和方向。
您也可以根據您的特定領(lǐng)域搜索您想要的爆文材料。除了采集爆文,您還可以提供文章編輯、短視頻素材采集和下載、文章原創(chuàng )度檢測和真實(shí)-時(shí)間熱點(diǎn)追蹤功能,是一款非常好用的自媒體輔助工具。
2、西瓜助手
西瓜助手的西瓜數據也是采集很多領(lǐng)域的爆文素材。不同的是它有提取標簽的功能,而且在一些有用的工具中還有熱門(mén)標題的更新,聊勝于無(wú)。畢竟,不是每個(gè)人都可以使用它。
3、樂(lè )觀(guān)
Optimism的優(yōu)勢之一是網(wǎng)站的部分功能無(wú)需注冊即可應用,詳細功能需要登錄。Optimism 沒(méi)有很多內容篩選,但是可以綁定一些邊緣自媒體平臺,然后一鍵將內容同步到這些平臺。
以上三個(gè)網(wǎng)站是小編覺(jué)得找自媒體爆文素材比較方便的渠道。對于剛剛進(jìn)入行業(yè)的新人來(lái)說(shuō),合理使用這三個(gè)。一個(gè)網(wǎng)站可以大大提高自己的運營(yíng)效率。
文章實(shí)時(shí)采集(基于MIT開(kāi)源協(xié)議發(fā)布NSQ的數據流模型結構如下圖解析 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 161 次瀏覽 ? 2021-10-12 21:19
)
NSQ 是一個(gè)基于 Go 語(yǔ)言的分布式實(shí)時(shí)消息平臺。它是基于 MIT 開(kāi)源協(xié)議發(fā)布的。代碼托管在 GitHub 上。最新版本為0.3.1。NSQ 可用于大型系統中的實(shí)時(shí)消息服務(wù),每天可處理數億條消息。它的設計目標是為在分布式環(huán)境中運行的去中心化服務(wù)提供強大的基礎設施。NSQ具有分布式、去中心化的拓撲結構,具有無(wú)單點(diǎn)故障、容錯、高可用、消息傳遞可靠等特點(diǎn)。NSQ 非常易于配置和部署,并且具有最大的靈活性,支持多種消息傳遞協(xié)議。此外,官方還提供了開(kāi)箱即用的 Go 和 Python 庫。
NSQ 由四個(gè)重要組件組成:
NSQ的主要特點(diǎn)如下:
為了實(shí)現高效的分布式消息服務(wù),NSQ 實(shí)現了合理的智能權衡,使其能夠在生產(chǎn)環(huán)境中得到充分的應用。具體內容如下:
官方和第三方也為NSQ開(kāi)發(fā)了很多客戶(hù)端函數庫,比如官方的基于HTTP、Go客戶(hù)端go-nsq、Python客戶(hù)端pynsq、基于Node.js的JavaScript客戶(hù)端nsqjs,以及異步C客戶(hù)端libnsq、Java客戶(hù)端nsq -java 和許多基于各種語(yǔ)言的第三方客戶(hù)端函數庫。更多客戶(hù)端函數庫請點(diǎn)擊查看。
從NSQ設計文檔可知,單個(gè)nsqd被設計為一次處理多個(gè)流數據,NSQ中的數據流模型由stream和consumer組成。Topic 是一個(gè)獨特的流,Channel 是訂閱給定 Topic 的消費者的邏輯分組。NSQ的數據流模型結構如下圖所示:
從上圖可以看出,單個(gè)nsqd可以有多個(gè)topic,每個(gè)topic可以有多個(gè)channel。Channel可以接收所有Topic消息的副本,從而實(shí)現消息組播分發(fā);并且Channel上的每條消息都分發(fā)給它的訂閱者,從而實(shí)現負載均衡,所有這些形成一個(gè)單片,可以代表各種簡(jiǎn)單和復雜的拓撲結構。
NSQ 最初是為 Bitly 開(kāi)發(fā)的,Bitly 是一個(gè)提供短鏈接服務(wù)的應用程序。另外還有很多使用NSQ的知名應用,比如社交新聞網(wǎng)站Digg、私有社交應用Path、知名開(kāi)源應用容器引擎Docker、支付公司Stripe、新聞聚合網(wǎng)站@ >Buzzfeed,移動(dòng)應用Life360、 網(wǎng)絡(luò )工具公司SimpleReach 等,用于檢查家庭成員的位置。
有興趣的讀者也可以向NSQ貢獻代碼,反饋問(wèn)題,或者通過(guò)官方的快速入門(mén)教程體驗NSQ給高吞吐量網(wǎng)絡(luò )服務(wù)帶來(lái)的性能提升。NSQ安裝部署、客戶(hù)端開(kāi)發(fā)等相關(guān)信息請登錄其官網(wǎng)。
感謝郭磊對本文的審閱。
如有問(wèn)題請聯(lián)系站長(cháng)微信(非本文作者)
查看全部
文章實(shí)時(shí)采集(基于MIT開(kāi)源協(xié)議發(fā)布NSQ的數據流模型結構如下圖解析
)
NSQ 是一個(gè)基于 Go 語(yǔ)言的分布式實(shí)時(shí)消息平臺。它是基于 MIT 開(kāi)源協(xié)議發(fā)布的。代碼托管在 GitHub 上。最新版本為0.3.1。NSQ 可用于大型系統中的實(shí)時(shí)消息服務(wù),每天可處理數億條消息。它的設計目標是為在分布式環(huán)境中運行的去中心化服務(wù)提供強大的基礎設施。NSQ具有分布式、去中心化的拓撲結構,具有無(wú)單點(diǎn)故障、容錯、高可用、消息傳遞可靠等特點(diǎn)。NSQ 非常易于配置和部署,并且具有最大的靈活性,支持多種消息傳遞協(xié)議。此外,官方還提供了開(kāi)箱即用的 Go 和 Python 庫。
NSQ 由四個(gè)重要組件組成:
NSQ的主要特點(diǎn)如下:
為了實(shí)現高效的分布式消息服務(wù),NSQ 實(shí)現了合理的智能權衡,使其能夠在生產(chǎn)環(huán)境中得到充分的應用。具體內容如下:
官方和第三方也為NSQ開(kāi)發(fā)了很多客戶(hù)端函數庫,比如官方的基于HTTP、Go客戶(hù)端go-nsq、Python客戶(hù)端pynsq、基于Node.js的JavaScript客戶(hù)端nsqjs,以及異步C客戶(hù)端libnsq、Java客戶(hù)端nsq -java 和許多基于各種語(yǔ)言的第三方客戶(hù)端函數庫。更多客戶(hù)端函數庫請點(diǎn)擊查看。
從NSQ設計文檔可知,單個(gè)nsqd被設計為一次處理多個(gè)流數據,NSQ中的數據流模型由stream和consumer組成。Topic 是一個(gè)獨特的流,Channel 是訂閱給定 Topic 的消費者的邏輯分組。NSQ的數據流模型結構如下圖所示:

從上圖可以看出,單個(gè)nsqd可以有多個(gè)topic,每個(gè)topic可以有多個(gè)channel。Channel可以接收所有Topic消息的副本,從而實(shí)現消息組播分發(fā);并且Channel上的每條消息都分發(fā)給它的訂閱者,從而實(shí)現負載均衡,所有這些形成一個(gè)單片,可以代表各種簡(jiǎn)單和復雜的拓撲結構。
NSQ 最初是為 Bitly 開(kāi)發(fā)的,Bitly 是一個(gè)提供短鏈接服務(wù)的應用程序。另外還有很多使用NSQ的知名應用,比如社交新聞網(wǎng)站Digg、私有社交應用Path、知名開(kāi)源應用容器引擎Docker、支付公司Stripe、新聞聚合網(wǎng)站@ >Buzzfeed,移動(dòng)應用Life360、 網(wǎng)絡(luò )工具公司SimpleReach 等,用于檢查家庭成員的位置。
有興趣的讀者也可以向NSQ貢獻代碼,反饋問(wèn)題,或者通過(guò)官方的快速入門(mén)教程體驗NSQ給高吞吐量網(wǎng)絡(luò )服務(wù)帶來(lái)的性能提升。NSQ安裝部署、客戶(hù)端開(kāi)發(fā)等相關(guān)信息請登錄其官網(wǎng)。
感謝郭磊對本文的審閱。
如有問(wèn)題請聯(lián)系站長(cháng)微信(非本文作者)
文章實(shí)時(shí)采集(日志解析失敗錯誤json._root.yml)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 190 次瀏覽 ? 2021-10-09 10:17
說(shuō)明 Filebeat 版本為 5.3.0
之所以用beats家族的Filebeat來(lái)代替Logstash,是因為L(cháng)ogstash消耗資源太多(如果服務(wù)器資源充足請忽略)
官網(wǎng)下載Logstash有89M,而Filebeat只有8.4M,可見(jiàn)
Logstash 可以配置 jvm 參數。經(jīng)過(guò)我自己調試,內存分配小,啟動(dòng)很慢,有時(shí)根本起不來(lái)。如果分配很大,其他服務(wù)將沒(méi)有資源。
都說(shuō)對于低配置的服務(wù)器,選擇Filebeat是最好的選擇,現在Filebeat已經(jīng)開(kāi)始替代Logstash了。還是需要修改nginx的日志格式,nginx.config。
更改日志記錄的格式
log_format json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
文件節拍.yml
#=========================== Filebeat prospectors =============================
filebeat.prospectors:
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/nginx/*access*.log
json.keys_under_root: true
json.overwrite_keys: true
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["ip:port","ip:port"]
index: "filebeat_server_nginx_%{+YYYY-MM}"
這里要注意的是
json.keys_under_root:默認值為FALSE,表示我們的json日志解析后會(huì )放在json key上。設置為 TRUE,所有鍵都將放置在根節點(diǎn)中
json.overwrite_keys:是否覆蓋原來(lái)的key,這個(gè)是key的配置。設置keys_under_root為T(mén)RUE后,再設置overwrite_keys為T(mén)RUE,覆蓋filebeat的默認key值
還有其他配置
json.add_error_key: 添加json_error key key 記錄json解析失敗錯誤
json.message_key:指定解析后的json日志放哪個(gè)key,默認為json,也可以指定log等。
說(shuō)白了,區別就是elasticsearch的配置前的數據是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9sVOkCcRcg0IPg399",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T03:00:17.544Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"input_type": "log",
"json": {},
"message": "{ "@timestamp": "2018-05-08T11:00:11+08:00", "time": "2018-05-08T11:00:11+08:00", "remote_addr": "113.16.251.67", "remote_user": "-", "body_bytes_sent": "403", "request_time": "0.000", "status": "200", "host": "blog.joylau.cn", "request": "GET /img/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90.png HTTP/1.1", "request_method": "GET", "uri": "/img/\xE7\xBD\x91\xE6\x98\x93\xE4\xBA\x91\xE9\x9F\xB3\xE4\xB9\x90.png", "http_referrer": "http://blog.joylau.cn/css/style.css", "body_bytes_sent":"403", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" }",
"offset": 7633,
"source": "/var/log/nginx/access.log",
"type": "log"
}
}
配置好之后是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9rjLd8mVZNgvhdnN9",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T02:56:50.000Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"body_bytes_sent": "12576",
"host": "blog.joylau.cn",
"http_referrer": "http://blog.joylau.cn/",
"http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
"http_x_forwarded_for": "-",
"input_type": "log",
"offset": 3916,
"remote_addr": "60.166.12.138",
"remote_user": "-",
"request": "GET /2018/03/01/JDK8-Stream-Distinct/ HTTP/1.1",
"request_method": "GET",
"request_time": "0.000",
"source": "/var/log/nginx/access.log",
"status": "200",
"time": "2018-05-08T10:56:50+08:00",
"type": "log",
"uri": "/2018/03/01/JDK8-Stream-Distinct/index.html"
}
}
所以看起來(lái)很舒服
啟動(dòng) FileBeat
進(jìn)入Filebeat目錄
nohup sudo ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
更新
如果 nginx 日志收錄中文,則會(huì )將中文轉換為 Unicode 編碼。如果沒(méi)有,只需添加 escape=json 參數。
log_format json escape=json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
信息 查看全部
文章實(shí)時(shí)采集(日志解析失敗錯誤json._root.yml)
說(shuō)明 Filebeat 版本為 5.3.0
之所以用beats家族的Filebeat來(lái)代替Logstash,是因為L(cháng)ogstash消耗資源太多(如果服務(wù)器資源充足請忽略)
官網(wǎng)下載Logstash有89M,而Filebeat只有8.4M,可見(jiàn)
Logstash 可以配置 jvm 參數。經(jīng)過(guò)我自己調試,內存分配小,啟動(dòng)很慢,有時(shí)根本起不來(lái)。如果分配很大,其他服務(wù)將沒(méi)有資源。
都說(shuō)對于低配置的服務(wù)器,選擇Filebeat是最好的選擇,現在Filebeat已經(jīng)開(kāi)始替代Logstash了。還是需要修改nginx的日志格式,nginx.config。
更改日志記錄的格式
log_format json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
文件節拍.yml
#=========================== Filebeat prospectors =============================
filebeat.prospectors:
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/nginx/*access*.log
json.keys_under_root: true
json.overwrite_keys: true
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["ip:port","ip:port"]
index: "filebeat_server_nginx_%{+YYYY-MM}"
這里要注意的是
json.keys_under_root:默認值為FALSE,表示我們的json日志解析后會(huì )放在json key上。設置為 TRUE,所有鍵都將放置在根節點(diǎn)中
json.overwrite_keys:是否覆蓋原來(lái)的key,這個(gè)是key的配置。設置keys_under_root為T(mén)RUE后,再設置overwrite_keys為T(mén)RUE,覆蓋filebeat的默認key值
還有其他配置
json.add_error_key: 添加json_error key key 記錄json解析失敗錯誤
json.message_key:指定解析后的json日志放哪個(gè)key,默認為json,也可以指定log等。
說(shuō)白了,區別就是elasticsearch的配置前的數據是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9sVOkCcRcg0IPg399",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T03:00:17.544Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"input_type": "log",
"json": {},
"message": "{ "@timestamp": "2018-05-08T11:00:11+08:00", "time": "2018-05-08T11:00:11+08:00", "remote_addr": "113.16.251.67", "remote_user": "-", "body_bytes_sent": "403", "request_time": "0.000", "status": "200", "host": "blog.joylau.cn", "request": "GET /img/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90.png HTTP/1.1", "request_method": "GET", "uri": "/img/\xE7\xBD\x91\xE6\x98\x93\xE4\xBA\x91\xE9\x9F\xB3\xE4\xB9\x90.png", "http_referrer": "http://blog.joylau.cn/css/style.css", "body_bytes_sent":"403", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" }",
"offset": 7633,
"source": "/var/log/nginx/access.log",
"type": "log"
}
}
配置好之后是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9rjLd8mVZNgvhdnN9",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T02:56:50.000Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"body_bytes_sent": "12576",
"host": "blog.joylau.cn",
"http_referrer": "http://blog.joylau.cn/",
"http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
"http_x_forwarded_for": "-",
"input_type": "log",
"offset": 3916,
"remote_addr": "60.166.12.138",
"remote_user": "-",
"request": "GET /2018/03/01/JDK8-Stream-Distinct/ HTTP/1.1",
"request_method": "GET",
"request_time": "0.000",
"source": "/var/log/nginx/access.log",
"status": "200",
"time": "2018-05-08T10:56:50+08:00",
"type": "log",
"uri": "/2018/03/01/JDK8-Stream-Distinct/index.html"
}
}
所以看起來(lái)很舒服
啟動(dòng) FileBeat
進(jìn)入Filebeat目錄
nohup sudo ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
更新
如果 nginx 日志收錄中文,則會(huì )將中文轉換為 Unicode 編碼。如果沒(méi)有,只需添加 escape=json 參數。
log_format json escape=json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
信息
文章實(shí)時(shí)采集(如何實(shí)時(shí)采集微信公眾號圖文信息?(附教程))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 541 次瀏覽 ? 2021-10-05 01:01
文章實(shí)時(shí)采集微信公眾號圖文信息
一、目標制定選擇可采集優(yōu)質(zhì)圖文的平臺進(jìn)行操作,或根據圖文標題/封面等進(jìn)行分析判斷。
二、準備工作根據工作量,以及所能采集的資源,大致可分為以下3個(gè)步驟:1.采集圖文背景圖的過(guò)程,請在采集頁(yè)面中進(jìn)行操作,請不要把素材放入某些需要填寫(xiě)素材目錄的文件夾中。素材采集時(shí)會(huì )產(chǎn)生大量data_file,需要保存一份到網(wǎng)盤(pán)上。(如出現素材丟失或丟失的現象,請抓取原始圖片并進(jìn)行相應的處理。)data_file定位要求:至少要預留上傳素材的路徑。
操作步驟:選擇圖文上傳目錄---圖文上傳---上傳剛剛保存的data_file.png,部分目錄定位需要多次操作。2.采集圖文標題的過(guò)程,請在微信平臺商務(wù)后臺里將標題進(jìn)行命名。操作步驟:選擇自己想要采集的標題,點(diǎn)擊插入---圖文標題---發(fā)送。注意標題后,請使用編號進(jìn)行標注。發(fā)送時(shí)請填寫(xiě)上傳文件的路徑。
3.采集圖文封面的過(guò)程,請在商務(wù)后臺里設置發(fā)送標題、采集位置、收貨地址等內容,并命名圖文封面。操作步驟:選擇采集文件目錄---收貨地址---設置標題---開(kāi)始采集文章。圖文封面采集大致如此。
三、軟件選擇采集微信公眾號內容主要靠軟件,目前市面上提供采集、編輯、群發(fā)功能的軟件較多,具體可參考:今日頭條采集器【軟件】今日頭條訂閱號內容采集。新浪扶翼采集器【軟件】新浪網(wǎng)新聞源采集。pp紅采集器【軟件】pp紅網(wǎng)站內容采集。(建議在使用pp紅,性?xún)r(jià)比高,主要是采集標題、封面。)今日頭條【采集器】(注意需版權問(wèn)題,需要購買(mǎi)版權才能采集封面和封面圖文章。)。
四、采集過(guò)程采集過(guò)程中請注意避免出現死鏈、延遲采集封面圖文。建議把文章的標題/封面采集到服務(wù)器(專(zhuān)門(mén)的服務(wù)器文件夾中)。文章采集數量不要太多,也不要太少,兩三篇差不多就行。如采集到500篇,在qq群/論壇等發(fā)布擴展地址出現繁雜信息,用戶(hù)點(diǎn)擊難,即為可能出現死鏈。因此,文章采集需要分頁(yè),建議每頁(yè)都采集,采集較長(cháng)文章也能通過(guò)多個(gè)頁(yè)面進(jìn)行多次采集。
只有文章真正的覆蓋到了微信公眾號所發(fā)布的文章,才算是完成初步采集和封面采集。更多采集、編輯、微信公眾號編輯排版相關(guān)文章,請關(guān)注公眾號:20155633473。 查看全部
文章實(shí)時(shí)采集(如何實(shí)時(shí)采集微信公眾號圖文信息?(附教程))
文章實(shí)時(shí)采集微信公眾號圖文信息
一、目標制定選擇可采集優(yōu)質(zhì)圖文的平臺進(jìn)行操作,或根據圖文標題/封面等進(jìn)行分析判斷。
二、準備工作根據工作量,以及所能采集的資源,大致可分為以下3個(gè)步驟:1.采集圖文背景圖的過(guò)程,請在采集頁(yè)面中進(jìn)行操作,請不要把素材放入某些需要填寫(xiě)素材目錄的文件夾中。素材采集時(shí)會(huì )產(chǎn)生大量data_file,需要保存一份到網(wǎng)盤(pán)上。(如出現素材丟失或丟失的現象,請抓取原始圖片并進(jìn)行相應的處理。)data_file定位要求:至少要預留上傳素材的路徑。
操作步驟:選擇圖文上傳目錄---圖文上傳---上傳剛剛保存的data_file.png,部分目錄定位需要多次操作。2.采集圖文標題的過(guò)程,請在微信平臺商務(wù)后臺里將標題進(jìn)行命名。操作步驟:選擇自己想要采集的標題,點(diǎn)擊插入---圖文標題---發(fā)送。注意標題后,請使用編號進(jìn)行標注。發(fā)送時(shí)請填寫(xiě)上傳文件的路徑。
3.采集圖文封面的過(guò)程,請在商務(wù)后臺里設置發(fā)送標題、采集位置、收貨地址等內容,并命名圖文封面。操作步驟:選擇采集文件目錄---收貨地址---設置標題---開(kāi)始采集文章。圖文封面采集大致如此。
三、軟件選擇采集微信公眾號內容主要靠軟件,目前市面上提供采集、編輯、群發(fā)功能的軟件較多,具體可參考:今日頭條采集器【軟件】今日頭條訂閱號內容采集。新浪扶翼采集器【軟件】新浪網(wǎng)新聞源采集。pp紅采集器【軟件】pp紅網(wǎng)站內容采集。(建議在使用pp紅,性?xún)r(jià)比高,主要是采集標題、封面。)今日頭條【采集器】(注意需版權問(wèn)題,需要購買(mǎi)版權才能采集封面和封面圖文章。)。
四、采集過(guò)程采集過(guò)程中請注意避免出現死鏈、延遲采集封面圖文。建議把文章的標題/封面采集到服務(wù)器(專(zhuān)門(mén)的服務(wù)器文件夾中)。文章采集數量不要太多,也不要太少,兩三篇差不多就行。如采集到500篇,在qq群/論壇等發(fā)布擴展地址出現繁雜信息,用戶(hù)點(diǎn)擊難,即為可能出現死鏈。因此,文章采集需要分頁(yè),建議每頁(yè)都采集,采集較長(cháng)文章也能通過(guò)多個(gè)頁(yè)面進(jìn)行多次采集。
只有文章真正的覆蓋到了微信公眾號所發(fā)布的文章,才算是完成初步采集和封面采集。更多采集、編輯、微信公眾號編輯排版相關(guān)文章,請關(guān)注公眾號:20155633473。
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集并推送給服務(wù)器,前端路由好點(diǎn)的話(huà))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 165 次瀏覽 ? 2021-10-04 13:03
文章實(shí)時(shí)采集并推送給服務(wù)器,服務(wù)器再推送給客戶(hù)端。前端路由好點(diǎn)的話(huà),抓包,分析url的utm特征,爬蟲(chóng)最好也接入,能抓一抓也不錯,
就題主的問(wèn)題,
1、抓包容易丟包或中斷;
2、人工分析每一次請求中每一個(gè)字段,
3、模擬返回很累,
4、別人抓包分析你也不放心;綜上,建議題主用第一個(gè)方案:一步步弄清每個(gè)字段具體含義,分析并獲取鏈接及驗證其他參數,最后聚合顯示結果。
1、登錄:你的每一次訪(fǎng)問(wèn)都會(huì )在你自己的服務(wù)器上生成一個(gè)記錄,當你從別人那里登錄后,這個(gè)登錄時(shí)間段的記錄就會(huì )同步到你自己的服務(wù)器上。
2、抓包:爬取的是整個(gè)站點(diǎn)的數據,一般的服務(wù)器都會(huì )有默認的模擬ip,打開(kāi)的網(wǎng)頁(yè)是無(wú)法發(fā)起請求的,但是你可以通過(guò)修改其他字段發(fā)送請求。
3、模擬返回:在訪(fǎng)問(wèn)一些靜態(tài)文件時(shí),你可以把它模擬成你自己的網(wǎng)站,這樣你就能返回給你合適的網(wǎng)站地址,這樣你每次瀏覽這些文件都是獲取你的網(wǎng)站地址,順著(zhù)網(wǎng)址就可以到對應的服務(wù)器上了。
4、聚合:看你的爬蟲(chóng)是不是有收集其他網(wǎng)站數據的,比如ip、cookie這些,如果有的話(huà),你就可以把這些數據爬取過(guò)來(lái),用聚合接口就可以聚合到一起。
5、最后,所有的信息統計是比較少的,估計做不下來(lái),更何況你分析這些數據是不是有些數據是重復的,人工統計是比較費力的,如果是數據預處理,還要編寫(xiě)一些特征工程代碼,實(shí)現這些功能,你不可能每一次都請求數據庫把重復的數據過(guò)濾出來(lái)吧,而且到時(shí)候服務(wù)器出現問(wèn)題還要花時(shí)間去處理,最后數據的可用性才能得到保證,如果每一次請求都需要使用nginx,你每次請求的數據都需要到nginx的數據庫中去查詢(xún),然后就把數據保存到數據庫中,有一點(diǎn)風(fēng)險。
最后,根據我的理解,你沒(méi)必要大費周章,一步步從第一個(gè)到后面一個(gè),爬蟲(chóng)總會(huì )成熟的,不用有點(diǎn)困難就困難一步,會(huì )過(guò)的很吃力的。 查看全部
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集并推送給服務(wù)器,前端路由好點(diǎn)的話(huà))
文章實(shí)時(shí)采集并推送給服務(wù)器,服務(wù)器再推送給客戶(hù)端。前端路由好點(diǎn)的話(huà),抓包,分析url的utm特征,爬蟲(chóng)最好也接入,能抓一抓也不錯,
就題主的問(wèn)題,
1、抓包容易丟包或中斷;
2、人工分析每一次請求中每一個(gè)字段,
3、模擬返回很累,
4、別人抓包分析你也不放心;綜上,建議題主用第一個(gè)方案:一步步弄清每個(gè)字段具體含義,分析并獲取鏈接及驗證其他參數,最后聚合顯示結果。
1、登錄:你的每一次訪(fǎng)問(wèn)都會(huì )在你自己的服務(wù)器上生成一個(gè)記錄,當你從別人那里登錄后,這個(gè)登錄時(shí)間段的記錄就會(huì )同步到你自己的服務(wù)器上。
2、抓包:爬取的是整個(gè)站點(diǎn)的數據,一般的服務(wù)器都會(huì )有默認的模擬ip,打開(kāi)的網(wǎng)頁(yè)是無(wú)法發(fā)起請求的,但是你可以通過(guò)修改其他字段發(fā)送請求。
3、模擬返回:在訪(fǎng)問(wèn)一些靜態(tài)文件時(shí),你可以把它模擬成你自己的網(wǎng)站,這樣你就能返回給你合適的網(wǎng)站地址,這樣你每次瀏覽這些文件都是獲取你的網(wǎng)站地址,順著(zhù)網(wǎng)址就可以到對應的服務(wù)器上了。
4、聚合:看你的爬蟲(chóng)是不是有收集其他網(wǎng)站數據的,比如ip、cookie這些,如果有的話(huà),你就可以把這些數據爬取過(guò)來(lái),用聚合接口就可以聚合到一起。
5、最后,所有的信息統計是比較少的,估計做不下來(lái),更何況你分析這些數據是不是有些數據是重復的,人工統計是比較費力的,如果是數據預處理,還要編寫(xiě)一些特征工程代碼,實(shí)現這些功能,你不可能每一次都請求數據庫把重復的數據過(guò)濾出來(lái)吧,而且到時(shí)候服務(wù)器出現問(wèn)題還要花時(shí)間去處理,最后數據的可用性才能得到保證,如果每一次請求都需要使用nginx,你每次請求的數據都需要到nginx的數據庫中去查詢(xún),然后就把數據保存到數據庫中,有一點(diǎn)風(fēng)險。
最后,根據我的理解,你沒(méi)必要大費周章,一步步從第一個(gè)到后面一個(gè),爬蟲(chóng)總會(huì )成熟的,不用有點(diǎn)困難就困難一步,會(huì )過(guò)的很吃力的。
文章實(shí)時(shí)采集(mysql實(shí)時(shí)數據采集框架maxwell基本介紹-蘇州安嘉 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 166 次瀏覽 ? 2021-10-02 11:18
)
介紹本文文章主要介紹MaxWell(Mysql實(shí)時(shí)數據采集)及相關(guān)經(jīng)驗和技巧。文章約13381字,瀏覽量317,點(diǎn)贊2,值得參考!
mysql實(shí)時(shí)數據采集框架maxwell基礎介紹
maxwell 是一個(gè)可以實(shí)時(shí)讀取 MySQL 二進(jìn)制日志 binlog 并生成 JSON 格式消息的應用程序,這些消息作為生產(chǎn)者發(fā)送到 Kafka、Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其他平臺。其常見(jiàn)的應用場(chǎng)景包括ETL、維護緩存、采集表級dml指標、遞增到搜索引擎、數據分區遷移、切割數據庫binlog回滾方案等。
Maxwell主要提供以下功能:
支持 SELECT * FROM 表進(jìn)行 44 行全數據初始化。支持主庫故障轉移后binlog位置(GTID)的自動(dòng)恢復??梢詫祿M(jìn)行分區以解決數據傾斜問(wèn)題。發(fā)送到 Kafka 的數據支持數據庫、表和列。等級數據分區的工作方式是偽裝成slave,接收binlog事件,然后根據scheme信息進(jìn)行組裝,可以接受ddl、xid、row等各種事件binlog的引入。
Binlog是mysql中的二進(jìn)制日志。主要用于記錄mysql數據庫中發(fā)生或潛在改變數據的SQL語(yǔ)句,以二進(jìn)制形式存儲在磁盤(pán)中。如果我們后面需要配置主從數據庫,如果我們需要從數據庫同步主數據庫的內容,我們可以通過(guò)binlog進(jìn)行同步。說(shuō)白了,可以用binlog來(lái)解決mysql數據庫中數據的實(shí)時(shí)同步問(wèn)題。還有三種 binlog 格式:STATEMENT、ROW 和 MIXED。
基于行的復制(RBR):它不記錄每個(gè) SQL 語(yǔ)句的上下文信息。它只需要記錄修改了哪些數據,修改成了什么?;旌蠌椭疲∕BR):以上兩種模式的結合。一般復制使用 STATEMENT 方式保存 binlog。對于 STATEMENT 模式下無(wú)法復制的操作,使用 ROW 模式保存 binlog。MySQL會(huì )根據執行的SQL語(yǔ)句進(jìn)行選擇。日志保存方法。
因為語(yǔ)句只有sql,沒(méi)有數據,無(wú)法獲取到原來(lái)的變更日志,一般建議使用ROW模式)mysql數據實(shí)時(shí)同步,我們可以通過(guò)解析mysql bin-log來(lái)實(shí)現,有很多bin-log的解析方式,可以通過(guò)canal或者max-well實(shí)現。下面是各種提取方法的對比介紹
啟用binlog功能第一步:添加一個(gè)普通用戶(hù)maxwell
在mysql中添加一個(gè)普通用戶(hù)maxwell,因為maxwell軟件默認用戶(hù)是maxwell用戶(hù),進(jìn)入mysql客戶(hù)端,然后執行如下命令授權
mysql?-uroot??-p?
set?global?validate_password_policy=LOW;
set?global?validate_password_length=6;
CREATE?USER?'maxwell'@'%'?IDENTIFIED?BY?'123456';
GRANT?ALL?ON?maxwell.*?TO?'maxwell'@'%';
GRANT?SELECT,?REPLICATION?CLIENT,?REPLICATION?SLAVE?on?*.*?to?'maxwell'@'%';
flush?privileges;
第二步:開(kāi)啟binlog機制
對于我們的mysql數據庫,我們可以打開(kāi)mysql的binlog功能,通過(guò)修改mysql配置文件來(lái)啟用。修改配置文件后,我們需要重啟mysql服務(wù)
sudo?vim?/etc/my.cnf
#?添加或修改以下三行配置
log-bin=?/var/lib/mysql/mysql-bin?#?日志存放位置
binlog-format=ROW?#?binlog格式
server_id=1?#?server?id
#?重啟mysql
sudo?service?mysqld?restart
第三步:驗證mysql服務(wù)
#?進(jìn)入mysql客戶(hù)端,并執行以下命令進(jìn)行驗證
mysql?-uroot?-p
mysql>?show?variables?like?'%log_bin%';
+---------------------------------+-----------------------------+
|?Variable_name???????????????????|?Value???????????????????????|
+---------------------------------+-----------------------------+
|?log_bin?????????????????????????|?ON??????????????????????????|
|?log_bin_basename????????????????|?/var/lib/mysql/binlog???????|
|?log_bin_index???????????????????|?/var/lib/mysql/binlog.index?|
|?log_bin_trust_function_creators?|?OFF?????????????????????????|
|?log_bin_use_v1_row_events???????|?OFF?????????????????????????|
|?sql_log_bin?????????????????????|?ON??????????????????????????|
+---------------------------------+-----------------------------+
root@0f3525c74115:/#?cd?/var/lib/mysql/
root@0f3525c74115:/var/lib/mysql#?ls?-la
-rw-r-----??1?mysql?mysql??????324?Jul??2?14:54??binlog.000007
-rw-r-----??1?mysql?mysql??????156?Jul??2?14:54??binlog.000008
-rw-r-----??1?mysql?mysql???????32?Jul??2?14:54??binlog.index
#?以上是binlog文件說(shuō)明已經(jīng)開(kāi)啟
安裝maxwell實(shí)現實(shí)時(shí)采集mysql數據第一步:下載maxwell
下載:
第二步:修改配置
啟動(dòng)服務(wù)。啟動(dòng)我們的動(dòng)物園管理員服務(wù)。啟動(dòng)kafka服務(wù)并創(chuàng )建kafka主題。啟動(dòng)maxwell服務(wù),測試插入數據到數據庫,查看kafka是否可以同步到mysql數據
#?創(chuàng )建kafka?topic?分區?3?副本?2
bin/kafka-topics.sh??--create?--topic?maxwell_kafka?--partitions?3?--replication-factor?2?--zookeeper?node01:2181
#?創(chuàng )建kafka?消費者?
bin/kafka-console-consumer.sh?--topic?maxwell_kafka?--from-beginning?--bootstrap-server?node01:9092,node02:9092,node03:9092
#?啟動(dòng)maxwell
bin/maxwell
插入數據測試
--?創(chuàng )建目標庫
CREATE?DATABASE?/*!32312?IF?NOT?EXISTS*/`test`?/*!40100?DEFAULT?CHARACTER?SET?utf8?*/;
USE?`test`;
--?創(chuàng )建表
CREATE?TABLE?`myuser`?(
??`id`?int(12)?NOT?NULL,
??`name`?varchar(32)?DEFAULT?NULL,
??`age`?varchar(32)?DEFAULT?NULL,
??PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
--?插入數據
insert??into?`myuser`(`id`,`name`,`age`)?values?(1,'zhangsan',NULL),(2,'xxx',NULL),(3,'ggg',NULL),(5,'xxxx',NULL),(8,'skldjlskdf',NULL),(10,'ggggg',NULL),(99,'ttttt',NULL),(114,NULL,NULL),(121,'xxx',NULL);
--?豈容kafka消費者,會(huì )看到消費的數據
bin/kafka-console-consumer.sh?--bootstrap-server?node01:9092,node02:9092,node03:9092?--topic??maxwell_kafka 查看全部
文章實(shí)時(shí)采集(mysql實(shí)時(shí)數據采集框架maxwell基本介紹-蘇州安嘉
)
介紹本文文章主要介紹MaxWell(Mysql實(shí)時(shí)數據采集)及相關(guān)經(jīng)驗和技巧。文章約13381字,瀏覽量317,點(diǎn)贊2,值得參考!
mysql實(shí)時(shí)數據采集框架maxwell基礎介紹
maxwell 是一個(gè)可以實(shí)時(shí)讀取 MySQL 二進(jìn)制日志 binlog 并生成 JSON 格式消息的應用程序,這些消息作為生產(chǎn)者發(fā)送到 Kafka、Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其他平臺。其常見(jiàn)的應用場(chǎng)景包括ETL、維護緩存、采集表級dml指標、遞增到搜索引擎、數據分區遷移、切割數據庫binlog回滾方案等。
Maxwell主要提供以下功能:
支持 SELECT * FROM 表進(jìn)行 44 行全數據初始化。支持主庫故障轉移后binlog位置(GTID)的自動(dòng)恢復??梢詫祿M(jìn)行分區以解決數據傾斜問(wèn)題。發(fā)送到 Kafka 的數據支持數據庫、表和列。等級數據分區的工作方式是偽裝成slave,接收binlog事件,然后根據scheme信息進(jìn)行組裝,可以接受ddl、xid、row等各種事件binlog的引入。
Binlog是mysql中的二進(jìn)制日志。主要用于記錄mysql數據庫中發(fā)生或潛在改變數據的SQL語(yǔ)句,以二進(jìn)制形式存儲在磁盤(pán)中。如果我們后面需要配置主從數據庫,如果我們需要從數據庫同步主數據庫的內容,我們可以通過(guò)binlog進(jìn)行同步。說(shuō)白了,可以用binlog來(lái)解決mysql數據庫中數據的實(shí)時(shí)同步問(wèn)題。還有三種 binlog 格式:STATEMENT、ROW 和 MIXED。
基于行的復制(RBR):它不記錄每個(gè) SQL 語(yǔ)句的上下文信息。它只需要記錄修改了哪些數據,修改成了什么?;旌蠌椭疲∕BR):以上兩種模式的結合。一般復制使用 STATEMENT 方式保存 binlog。對于 STATEMENT 模式下無(wú)法復制的操作,使用 ROW 模式保存 binlog。MySQL會(huì )根據執行的SQL語(yǔ)句進(jìn)行選擇。日志保存方法。
因為語(yǔ)句只有sql,沒(méi)有數據,無(wú)法獲取到原來(lái)的變更日志,一般建議使用ROW模式)mysql數據實(shí)時(shí)同步,我們可以通過(guò)解析mysql bin-log來(lái)實(shí)現,有很多bin-log的解析方式,可以通過(guò)canal或者max-well實(shí)現。下面是各種提取方法的對比介紹
啟用binlog功能第一步:添加一個(gè)普通用戶(hù)maxwell
在mysql中添加一個(gè)普通用戶(hù)maxwell,因為maxwell軟件默認用戶(hù)是maxwell用戶(hù),進(jìn)入mysql客戶(hù)端,然后執行如下命令授權
mysql?-uroot??-p?
set?global?validate_password_policy=LOW;
set?global?validate_password_length=6;
CREATE?USER?'maxwell'@'%'?IDENTIFIED?BY?'123456';
GRANT?ALL?ON?maxwell.*?TO?'maxwell'@'%';
GRANT?SELECT,?REPLICATION?CLIENT,?REPLICATION?SLAVE?on?*.*?to?'maxwell'@'%';
flush?privileges;
第二步:開(kāi)啟binlog機制
對于我們的mysql數據庫,我們可以打開(kāi)mysql的binlog功能,通過(guò)修改mysql配置文件來(lái)啟用。修改配置文件后,我們需要重啟mysql服務(wù)
sudo?vim?/etc/my.cnf
#?添加或修改以下三行配置
log-bin=?/var/lib/mysql/mysql-bin?#?日志存放位置
binlog-format=ROW?#?binlog格式
server_id=1?#?server?id
#?重啟mysql
sudo?service?mysqld?restart
第三步:驗證mysql服務(wù)
#?進(jìn)入mysql客戶(hù)端,并執行以下命令進(jìn)行驗證
mysql?-uroot?-p
mysql>?show?variables?like?'%log_bin%';
+---------------------------------+-----------------------------+
|?Variable_name???????????????????|?Value???????????????????????|
+---------------------------------+-----------------------------+
|?log_bin?????????????????????????|?ON??????????????????????????|
|?log_bin_basename????????????????|?/var/lib/mysql/binlog???????|
|?log_bin_index???????????????????|?/var/lib/mysql/binlog.index?|
|?log_bin_trust_function_creators?|?OFF?????????????????????????|
|?log_bin_use_v1_row_events???????|?OFF?????????????????????????|
|?sql_log_bin?????????????????????|?ON??????????????????????????|
+---------------------------------+-----------------------------+
root@0f3525c74115:/#?cd?/var/lib/mysql/
root@0f3525c74115:/var/lib/mysql#?ls?-la
-rw-r-----??1?mysql?mysql??????324?Jul??2?14:54??binlog.000007
-rw-r-----??1?mysql?mysql??????156?Jul??2?14:54??binlog.000008
-rw-r-----??1?mysql?mysql???????32?Jul??2?14:54??binlog.index
#?以上是binlog文件說(shuō)明已經(jīng)開(kāi)啟
安裝maxwell實(shí)現實(shí)時(shí)采集mysql數據第一步:下載maxwell
下載:
第二步:修改配置
啟動(dòng)服務(wù)。啟動(dòng)我們的動(dòng)物園管理員服務(wù)。啟動(dòng)kafka服務(wù)并創(chuàng )建kafka主題。啟動(dòng)maxwell服務(wù),測試插入數據到數據庫,查看kafka是否可以同步到mysql數據
#?創(chuàng )建kafka?topic?分區?3?副本?2
bin/kafka-topics.sh??--create?--topic?maxwell_kafka?--partitions?3?--replication-factor?2?--zookeeper?node01:2181
#?創(chuàng )建kafka?消費者?
bin/kafka-console-consumer.sh?--topic?maxwell_kafka?--from-beginning?--bootstrap-server?node01:9092,node02:9092,node03:9092
#?啟動(dòng)maxwell
bin/maxwell
插入數據測試
--?創(chuàng )建目標庫
CREATE?DATABASE?/*!32312?IF?NOT?EXISTS*/`test`?/*!40100?DEFAULT?CHARACTER?SET?utf8?*/;
USE?`test`;
--?創(chuàng )建表
CREATE?TABLE?`myuser`?(
??`id`?int(12)?NOT?NULL,
??`name`?varchar(32)?DEFAULT?NULL,
??`age`?varchar(32)?DEFAULT?NULL,
??PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
--?插入數據
insert??into?`myuser`(`id`,`name`,`age`)?values?(1,'zhangsan',NULL),(2,'xxx',NULL),(3,'ggg',NULL),(5,'xxxx',NULL),(8,'skldjlskdf',NULL),(10,'ggggg',NULL),(99,'ttttt',NULL),(114,NULL,NULL),(121,'xxx',NULL);
--?豈容kafka消費者,會(huì )看到消費的數據
bin/kafka-console-consumer.sh?--bootstrap-server?node01:9092,node02:9092,node03:9092?--topic??maxwell_kafka
文章實(shí)時(shí)采集(自動(dòng)提交又可以分為主動(dòng)推送和sitemap三種鏈接提交通道)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2021-10-01 10:07
很多人為了節省時(shí)間,選擇了自動(dòng)提交的方式。但是,如您所知,自動(dòng)提交可以分為三個(gè)鏈接提交渠道:主動(dòng)推送(實(shí)時(shí))、自動(dòng)推送和站點(diǎn)地圖。
下面我就給大家分析一下這三種鏈接提交渠道的優(yōu)劣,看看哪個(gè)更適合我們。
1、主動(dòng)推送(實(shí)時(shí))
這是最快的提交方式。技術(shù)改造后,您的網(wǎng)站每次更新文章時(shí),都可以通過(guò)這種方式主動(dòng)推送給百度,保證新鏈接能及時(shí)被百度收錄接收。但有一個(gè)缺點(diǎn),就是技術(shù)發(fā)展起來(lái)后才能使用。
2、自動(dòng)推送
自動(dòng)推送是百度搜索資源平臺推出的一款提高網(wǎng)站新網(wǎng)頁(yè)發(fā)現速度的工具。安裝了自動(dòng)推送JS代碼的網(wǎng)頁(yè),無(wú)論訪(fǎng)問(wèn)哪個(gè)頁(yè)面,頁(yè)面URL都會(huì )立即自動(dòng)推送到百度。
要使用它,需要將JS代碼安裝在一個(gè)全站共享的模板頁(yè)面中,例如在一個(gè)類(lèi)似于header.htm的header模板頁(yè)面中,以達到一次安裝,整個(gè)站點(diǎn)的效果。
這個(gè)方法很好,很適合優(yōu)采云,安裝完成后可以實(shí)現自動(dòng)鏈接推送功能。但是這樣的js代碼會(huì )拖慢網(wǎng)站,一點(diǎn)也不友好。
3、站點(diǎn)地圖提交
Sitemap是站點(diǎn)地圖的意思,指的是你網(wǎng)站上的網(wǎng)頁(yè)列表。創(chuàng )建并提交站點(diǎn)地圖將幫助百度找到并理解您網(wǎng)站 上的所有網(wǎng)頁(yè)。
除了這個(gè)便捷的功能,您還可以使用Sitemap提供關(guān)于您的其他信息網(wǎng)站,如最后更新日期、Sitemap文件的更新頻率等,僅供百度蜘蛛參考。
百度不保證所提交的站點(diǎn)地圖數據的所有網(wǎng)址都會(huì )被抓取并編入索引。不過(guò),百度搜索引擎會(huì )利用Sitemap中的數據來(lái)了解網(wǎng)站的結構等信息,可以幫助百度搜索引擎蜘蛛改進(jìn)爬取策略,在以后更好的捕獲網(wǎng)站的Pick。
順便說(shuō)一下,Sitemap網(wǎng)站 地圖可以使用愛(ài)站SEO toolkit 和SitemapX 等工具制作。還有一點(diǎn)需要說(shuō)明的是,百度搜索引擎蜘蛛不會(huì )定期來(lái)更新Sitemap網(wǎng)站。
此站點(diǎn)地圖與搜索排名無(wú)關(guān)。不是說(shuō)更新站點(diǎn)地圖越頻繁,網(wǎng)站的排名就越高,不是這樣的。
所以,綜上所述,最適合我們的鏈接提交方式是主動(dòng)推送(實(shí)時(shí))。
接下來(lái)教大家修改API提交,實(shí)現只要在WordPress后臺點(diǎn)擊發(fā)布文章,就可以主動(dòng)推送文章(實(shí)時(shí))到百度.
其實(shí)方法很簡(jiǎn)單。我們只需要在funtions.php模板中寫(xiě)入如下代碼,發(fā)布文章就會(huì )自動(dòng)推送到百度。
date_default_timezone_set('Asia/Shanghai'); add_action('publish_post', 'publish_bd_submit', 999);
function publish_bd_submit($post_ID){ global $post;
$bd_submit_enabled = true;
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B
if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
}
上面的代碼有兩個(gè)API,改成自己的就好了。注:第一個(gè)api是天機收錄的接口調用地址。只有受原創(chuàng )保護的站長(cháng)才有資格使用它。第二個(gè)api地址是主動(dòng)推送(實(shí)時(shí))接口調用地址,別搞錯了。
另一個(gè)是關(guān)于 funtions.php 模板的路徑?,F在我給你一些提示。目前Kang使用的wordpress主題是Robin,這個(gè)funtions.php模板的路徑在/wp-content/themes/begin/根目錄下,大家可以自己找。
版權所有:科鼎博客 ? WNAG.COM.CN
文章標題:《wordpress如何實(shí)現向百度發(fā)布文章主動(dòng)推送(實(shí)時(shí))》
這篇文章的鏈接:
特別聲明:除非另有說(shuō)明,本站所有文章均為原創(chuàng ),本站文章原則上禁止轉載。如果真的要轉載請聯(lián)系我們:尊重他人勞動(dòng)成果,謝謝Over~ 查看全部
文章實(shí)時(shí)采集(自動(dòng)提交又可以分為主動(dòng)推送和sitemap三種鏈接提交通道)
很多人為了節省時(shí)間,選擇了自動(dòng)提交的方式。但是,如您所知,自動(dòng)提交可以分為三個(gè)鏈接提交渠道:主動(dòng)推送(實(shí)時(shí))、自動(dòng)推送和站點(diǎn)地圖。
下面我就給大家分析一下這三種鏈接提交渠道的優(yōu)劣,看看哪個(gè)更適合我們。
1、主動(dòng)推送(實(shí)時(shí))
這是最快的提交方式。技術(shù)改造后,您的網(wǎng)站每次更新文章時(shí),都可以通過(guò)這種方式主動(dòng)推送給百度,保證新鏈接能及時(shí)被百度收錄接收。但有一個(gè)缺點(diǎn),就是技術(shù)發(fā)展起來(lái)后才能使用。
2、自動(dòng)推送
自動(dòng)推送是百度搜索資源平臺推出的一款提高網(wǎng)站新網(wǎng)頁(yè)發(fā)現速度的工具。安裝了自動(dòng)推送JS代碼的網(wǎng)頁(yè),無(wú)論訪(fǎng)問(wèn)哪個(gè)頁(yè)面,頁(yè)面URL都會(huì )立即自動(dòng)推送到百度。
要使用它,需要將JS代碼安裝在一個(gè)全站共享的模板頁(yè)面中,例如在一個(gè)類(lèi)似于header.htm的header模板頁(yè)面中,以達到一次安裝,整個(gè)站點(diǎn)的效果。
這個(gè)方法很好,很適合優(yōu)采云,安裝完成后可以實(shí)現自動(dòng)鏈接推送功能。但是這樣的js代碼會(huì )拖慢網(wǎng)站,一點(diǎn)也不友好。
3、站點(diǎn)地圖提交
Sitemap是站點(diǎn)地圖的意思,指的是你網(wǎng)站上的網(wǎng)頁(yè)列表。創(chuàng )建并提交站點(diǎn)地圖將幫助百度找到并理解您網(wǎng)站 上的所有網(wǎng)頁(yè)。
除了這個(gè)便捷的功能,您還可以使用Sitemap提供關(guān)于您的其他信息網(wǎng)站,如最后更新日期、Sitemap文件的更新頻率等,僅供百度蜘蛛參考。
百度不保證所提交的站點(diǎn)地圖數據的所有網(wǎng)址都會(huì )被抓取并編入索引。不過(guò),百度搜索引擎會(huì )利用Sitemap中的數據來(lái)了解網(wǎng)站的結構等信息,可以幫助百度搜索引擎蜘蛛改進(jìn)爬取策略,在以后更好的捕獲網(wǎng)站的Pick。
順便說(shuō)一下,Sitemap網(wǎng)站 地圖可以使用愛(ài)站SEO toolkit 和SitemapX 等工具制作。還有一點(diǎn)需要說(shuō)明的是,百度搜索引擎蜘蛛不會(huì )定期來(lái)更新Sitemap網(wǎng)站。
此站點(diǎn)地圖與搜索排名無(wú)關(guān)。不是說(shuō)更新站點(diǎn)地圖越頻繁,網(wǎng)站的排名就越高,不是這樣的。
所以,綜上所述,最適合我們的鏈接提交方式是主動(dòng)推送(實(shí)時(shí))。
接下來(lái)教大家修改API提交,實(shí)現只要在WordPress后臺點(diǎn)擊發(fā)布文章,就可以主動(dòng)推送文章(實(shí)時(shí))到百度.
其實(shí)方法很簡(jiǎn)單。我們只需要在funtions.php模板中寫(xiě)入如下代碼,發(fā)布文章就會(huì )自動(dòng)推送到百度。
date_default_timezone_set('Asia/Shanghai'); add_action('publish_post', 'publish_bd_submit', 999);
function publish_bd_submit($post_ID){ global $post;
$bd_submit_enabled = true;
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B
if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
}
上面的代碼有兩個(gè)API,改成自己的就好了。注:第一個(gè)api是天機收錄的接口調用地址。只有受原創(chuàng )保護的站長(cháng)才有資格使用它。第二個(gè)api地址是主動(dòng)推送(實(shí)時(shí))接口調用地址,別搞錯了。
另一個(gè)是關(guān)于 funtions.php 模板的路徑?,F在我給你一些提示。目前Kang使用的wordpress主題是Robin,這個(gè)funtions.php模板的路徑在/wp-content/themes/begin/根目錄下,大家可以自己找。
版權所有:科鼎博客 ? WNAG.COM.CN
文章標題:《wordpress如何實(shí)現向百度發(fā)布文章主動(dòng)推送(實(shí)時(shí))》
這篇文章的鏈接:
特別聲明:除非另有說(shuō)明,本站所有文章均為原創(chuàng ),本站文章原則上禁止轉載。如果真的要轉載請聯(lián)系我們:尊重他人勞動(dòng)成果,謝謝Over~
文章實(shí)時(shí)采集(gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)(一))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 161 次瀏覽 ? 2021-09-29 13:08
文章實(shí)時(shí)采集簡(jiǎn)介gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)
1、原理簡(jiǎn)介1.1預備知識計算機視覺(jué)方面的基礎知識,一般來(lái)說(shuō)所謂cnn模型,即使是神經(jīng)網(wǎng)絡(luò )模型,其圖像或者視頻或者信號或者文本數據都是二維數據,而且有噪聲(灰度、噪聲、扭曲等)。一般來(lái)說(shuō)在視頻等情況下,由于存在信號的持續傳播和速度的限制,一幀的信號單單通過(guò)激活函數是無(wú)法達到精確的分類(lèi)結果。同樣的道理,一個(gè)信號如果如果沒(méi)有經(jīng)過(guò)人工修正參數,或者完全只通過(guò)識別系統來(lái)識別,誤識率也會(huì )不斷提高,這樣一個(gè)模型的分類(lèi)精度也難以提高。
1.2卷積神經(jīng)網(wǎng)絡(luò )(cnn)1.2.1卷積層在計算機視覺(jué)計算上,卷積層有許多的應用。通過(guò)作用上的分類(lèi)比如:圖像、識別、文本分類(lèi)、網(wǎng)頁(yè)識別等等。由于cnn采用一個(gè)一個(gè)的卷積核使得該方法在圖像分類(lèi)和文本分類(lèi)等其他的一些任務(wù)上都取得了非常好的效果。假設我們想要的是分類(lèi)最準確的模型。簡(jiǎn)單設置是對角線(xiàn)和角接連的神經(jīng)元節點(diǎn)統統連接輸入。
但是,目前大多數計算機視覺(jué)任務(wù)中的大多數方法的維度是32x32以及更小的尺寸,但是對于要求大幅度提高分類(lèi)精度的識別(如自然語(yǔ)言處理)任務(wù)來(lái)說(shuō),一般情況下是2x2尺寸的。設置一個(gè)32x32的輸入節點(diǎn),圖像識別的分類(lèi)效果達到80%,識別的分類(lèi)效果達到90%。所以我們需要有一個(gè)足夠大的輸入,達到目標尺寸。
那么對于32x32的圖像,將32x32輸入到32x32的分類(lèi)網(wǎng)絡(luò )中將會(huì )得到32x32的輸出(可以看出,對于cnn單個(gè)輸入的輸出個(gè)數,是可以很多的,并且同樣的分類(lèi)效果有很多的輸出),結合圖像分類(lèi)一般用[0,1]輸出一個(gè)概率值,1表示正類(lèi),0表示負類(lèi)。因此,這種情況下設置輸入,輸出的神經(jīng)元數量,是有些不合理。
而且目前有時(shí)候需要求一個(gè)最大公約數(極大的方法),以使得用極大算法進(jìn)行計算,可以通過(guò)設置:計算函數,取非極大時(shí)的值作為輸出的分類(lèi),來(lái)達到更大效果的分類(lèi)結果。將這些值直接設置為[0,1]也可以達到預期的分類(lèi)結果。然而,在復雜情況下會(huì )出現這種結果:例如:識別:如果輸入尺寸是32x32,進(jìn)行識別的話(huà),一般會(huì )得到小于1的數據,即使用32x32進(jìn)行識別結果依然是錯誤的結果。
2、神經(jīng)網(wǎng)絡(luò )簡(jiǎn)介2.1創(chuàng )建原理cnn結構簡(jiǎn)單的說(shuō),cnn是一種深度神經(jīng)網(wǎng)絡(luò ),每一層都是一種卷積層。
1、圖像層進(jìn)行層與層的連接,
1)分別輸入卷積核;
2)通過(guò)運算
2、識別層進(jìn)行參數化處理,
1)分別的輸入是普通的音頻信號;
3、文本識 查看全部
文章實(shí)時(shí)采集(gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)(一))
文章實(shí)時(shí)采集簡(jiǎn)介gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)
1、原理簡(jiǎn)介1.1預備知識計算機視覺(jué)方面的基礎知識,一般來(lái)說(shuō)所謂cnn模型,即使是神經(jīng)網(wǎng)絡(luò )模型,其圖像或者視頻或者信號或者文本數據都是二維數據,而且有噪聲(灰度、噪聲、扭曲等)。一般來(lái)說(shuō)在視頻等情況下,由于存在信號的持續傳播和速度的限制,一幀的信號單單通過(guò)激活函數是無(wú)法達到精確的分類(lèi)結果。同樣的道理,一個(gè)信號如果如果沒(méi)有經(jīng)過(guò)人工修正參數,或者完全只通過(guò)識別系統來(lái)識別,誤識率也會(huì )不斷提高,這樣一個(gè)模型的分類(lèi)精度也難以提高。
1.2卷積神經(jīng)網(wǎng)絡(luò )(cnn)1.2.1卷積層在計算機視覺(jué)計算上,卷積層有許多的應用。通過(guò)作用上的分類(lèi)比如:圖像、識別、文本分類(lèi)、網(wǎng)頁(yè)識別等等。由于cnn采用一個(gè)一個(gè)的卷積核使得該方法在圖像分類(lèi)和文本分類(lèi)等其他的一些任務(wù)上都取得了非常好的效果。假設我們想要的是分類(lèi)最準確的模型。簡(jiǎn)單設置是對角線(xiàn)和角接連的神經(jīng)元節點(diǎn)統統連接輸入。
但是,目前大多數計算機視覺(jué)任務(wù)中的大多數方法的維度是32x32以及更小的尺寸,但是對于要求大幅度提高分類(lèi)精度的識別(如自然語(yǔ)言處理)任務(wù)來(lái)說(shuō),一般情況下是2x2尺寸的。設置一個(gè)32x32的輸入節點(diǎn),圖像識別的分類(lèi)效果達到80%,識別的分類(lèi)效果達到90%。所以我們需要有一個(gè)足夠大的輸入,達到目標尺寸。
那么對于32x32的圖像,將32x32輸入到32x32的分類(lèi)網(wǎng)絡(luò )中將會(huì )得到32x32的輸出(可以看出,對于cnn單個(gè)輸入的輸出個(gè)數,是可以很多的,并且同樣的分類(lèi)效果有很多的輸出),結合圖像分類(lèi)一般用[0,1]輸出一個(gè)概率值,1表示正類(lèi),0表示負類(lèi)。因此,這種情況下設置輸入,輸出的神經(jīng)元數量,是有些不合理。
而且目前有時(shí)候需要求一個(gè)最大公約數(極大的方法),以使得用極大算法進(jìn)行計算,可以通過(guò)設置:計算函數,取非極大時(shí)的值作為輸出的分類(lèi),來(lái)達到更大效果的分類(lèi)結果。將這些值直接設置為[0,1]也可以達到預期的分類(lèi)結果。然而,在復雜情況下會(huì )出現這種結果:例如:識別:如果輸入尺寸是32x32,進(jìn)行識別的話(huà),一般會(huì )得到小于1的數據,即使用32x32進(jìn)行識別結果依然是錯誤的結果。
2、神經(jīng)網(wǎng)絡(luò )簡(jiǎn)介2.1創(chuàng )建原理cnn結構簡(jiǎn)單的說(shuō),cnn是一種深度神經(jīng)網(wǎng)絡(luò ),每一層都是一種卷積層。
1、圖像層進(jìn)行層與層的連接,
1)分別輸入卷積核;
2)通過(guò)運算
2、識別層進(jìn)行參數化處理,
1)分別的輸入是普通的音頻信號;
3、文本識
文章實(shí)時(shí)采集(小程序插件-gt實(shí)時(shí)日志使用規則(組圖) )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 281 次瀏覽 ? 2021-09-28 13:11
)
實(shí)時(shí)日志背景
為幫助小程序開(kāi)發(fā)者快速排查小程序漏洞和定位問(wèn)題,我們推出了實(shí)時(shí)日志功能。開(kāi)發(fā)者可以通過(guò)提供的接口打印日志,采集日志并實(shí)時(shí)上報給小程序后端。開(kāi)發(fā)者可以從小程序管理后臺“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入小程序日志查詢(xún)頁(yè)面,或從“小程序插件->實(shí)時(shí)日志”進(jìn)入插件日志查詢(xún)頁(yè)面Log”,然后查看開(kāi)發(fā)者打印的日志信息。
小程序/小游戲使用方法
從基礎庫2.7.1開(kāi)始,小終端可以使用實(shí)時(shí)日志,從基礎庫2.14.4開(kāi)始支持小游戲終端.
1、調用相關(guān)接口。日志的接口是wx.getRealtimeLogManager。為了兼容舊版本,建議使用如下代碼進(jìn)行封裝,例如封裝在log.js文件中:
var log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null
module.exports = {
debug() {
if (!log) return
log.debug.apply(log, arguments)
},
info() {
if (!log) return
log.info.apply(log, arguments)
},
warn() {
if (!log) return
log.warn.apply(log, arguments)
},
error() {
if (!log) return
log.error.apply(log, arguments)
},
setFilterMsg(msg) { // 從基礎庫2.7.3開(kāi)始支持
if (!log || !log.setFilterMsg) return
if (typeof msg !== 'string') return
log.setFilterMsg(msg)
},
addFilterMsg(msg) { // 從基礎庫2.8.1開(kāi)始支持
if (!log || !log.addFilterMsg) return
if (typeof msg !== 'string') return
log.addFilterMsg(msg)
}
}
2、在頁(yè)面特定位置打印日志:
var log = require('./log.js') // 引用上面的log.js文件
log.info('hello test hahaha') // 日志會(huì )和當前打開(kāi)的頁(yè)面關(guān)聯(lián),建議在頁(yè)面的onHide、onShow等生命周期里面打
log.warn('warn')
log.error('error')
log.setFilterMsg('filterkeyword')
log.addFilterMsg('addfilterkeyword')
完整的例子可以參考代碼片段:
插件端
從基礎庫2.16.0開(kāi)始,插件也支持實(shí)時(shí)日志。為了讓日志更加結構化以進(jìn)行更復雜的分析,插件端采用了全新設計的格式。
1、 調用相關(guān)接口 wx.getRealtimeLogManager 獲取實(shí)時(shí)日志管理器的實(shí)例:
const logManager = wx.getRealtimeLogManager()
2、在需要日志的邏輯中,獲取日志實(shí)例:
// 標簽名可以是任意字符串,一個(gè)標簽名對應一組日志;同樣的標簽名允許被重復使用,具有相同標簽名的日志在后臺會(huì )被匯總到一個(gè)標簽下
// 標簽可為日志進(jìn)行分類(lèi),因此建議開(kāi)發(fā)者按邏輯來(lái)進(jìn)行標簽劃分
const logger = logManager.tag('plugin-onUserTapSth')
3、在合適的位置打印日志:
logger.info('key1', 'value1') // 每條日志為一個(gè) key-value 對,key 必須是字符串,value 可以是字符串/數值/對象/數組等可序列化類(lèi)型
logger.error('key2', {str: 'value2'})
logger.warn('key3', 'value3')
logger.setFilterMsg('filterkeyword') // 和小程序/小游戲端接口一致
logger.setFilterMsg('addfilterkeyword') // 和小程序/小游戲端接口一致
如何查看日志
登錄小程序管理后臺,從“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面。開(kāi)發(fā)者可以通過(guò)設置時(shí)間、微信ID/OpenID、頁(yè)面鏈接、FilterMsg內容(基礎庫2.7.3及以上支持setFilterMsg)等過(guò)濾條件查詢(xún)指定用戶(hù)的日志信息。如果是插件上報的實(shí)時(shí)日志,可以通過(guò)“小程序插件->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面進(jìn)行查詢(xún)。
預防措施
由于后臺資源限制,“實(shí)時(shí)日志”的使用規則如下:
為了方便定位問(wèn)題,將日志按頁(yè)面劃分,某個(gè)頁(yè)面,在一定時(shí)間內(最短為5秒,最長(cháng)為頁(yè)面顯示和隱藏的時(shí)間間隔),會(huì )聚合成一個(gè)小程序管理后臺可以根據頁(yè)面路徑查找該日志。每個(gè)小程序賬號每天限制1000萬(wàn)條日志,日志保存7天。建議及時(shí)定位問(wèn)題。一個(gè)日志的上限為5KB,最多收錄200個(gè)打印日志函數調用(info、warn、error調用都算在內),所以要注意log,避免循環(huán)調用log接口,避免直接覆蓋console .log 點(diǎn)擊日志。反饋中的日志可以根據OpenID查找。setFilterMsg 和 addFilterMsg 可以設置類(lèi)似于日志標簽的過(guò)濾字段。如果需要添加多個(gè)關(guān)鍵字,建議使用addFilterMsg。比如addFilterMsg('scene1'), addFilterMsg('scene2'), addFilterMsg('scene3'),設置后可以隨機組合三個(gè)關(guān)鍵字在小程序管理后臺搜索,如:“scene1 scene2 scene3”, "scene1 scene2" ", "scene1 scene3" or "scene2" 等(用空格隔開(kāi),所以addFilterMsg不能收錄空格)日志可以通過(guò)以上幾種檢索方式進(jìn)行檢索,檢索條件越多越準確會(huì )的,目前為了方便日志分析,插件實(shí)時(shí)日志只支持key-value格式。實(shí)時(shí)日志目前僅支持手機端測試。工具端的接口可以調用,但是不會(huì )上報后臺。
查看全部
文章實(shí)時(shí)采集(小程序插件-gt實(shí)時(shí)日志使用規則(組圖)
)
實(shí)時(shí)日志背景
為幫助小程序開(kāi)發(fā)者快速排查小程序漏洞和定位問(wèn)題,我們推出了實(shí)時(shí)日志功能。開(kāi)發(fā)者可以通過(guò)提供的接口打印日志,采集日志并實(shí)時(shí)上報給小程序后端。開(kāi)發(fā)者可以從小程序管理后臺“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入小程序日志查詢(xún)頁(yè)面,或從“小程序插件->實(shí)時(shí)日志”進(jìn)入插件日志查詢(xún)頁(yè)面Log”,然后查看開(kāi)發(fā)者打印的日志信息。
小程序/小游戲使用方法
從基礎庫2.7.1開(kāi)始,小終端可以使用實(shí)時(shí)日志,從基礎庫2.14.4開(kāi)始支持小游戲終端.
1、調用相關(guān)接口。日志的接口是wx.getRealtimeLogManager。為了兼容舊版本,建議使用如下代碼進(jìn)行封裝,例如封裝在log.js文件中:
var log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null
module.exports = {
debug() {
if (!log) return
log.debug.apply(log, arguments)
},
info() {
if (!log) return
log.info.apply(log, arguments)
},
warn() {
if (!log) return
log.warn.apply(log, arguments)
},
error() {
if (!log) return
log.error.apply(log, arguments)
},
setFilterMsg(msg) { // 從基礎庫2.7.3開(kāi)始支持
if (!log || !log.setFilterMsg) return
if (typeof msg !== 'string') return
log.setFilterMsg(msg)
},
addFilterMsg(msg) { // 從基礎庫2.8.1開(kāi)始支持
if (!log || !log.addFilterMsg) return
if (typeof msg !== 'string') return
log.addFilterMsg(msg)
}
}
2、在頁(yè)面特定位置打印日志:
var log = require('./log.js') // 引用上面的log.js文件
log.info('hello test hahaha') // 日志會(huì )和當前打開(kāi)的頁(yè)面關(guān)聯(lián),建議在頁(yè)面的onHide、onShow等生命周期里面打
log.warn('warn')
log.error('error')
log.setFilterMsg('filterkeyword')
log.addFilterMsg('addfilterkeyword')
完整的例子可以參考代碼片段:
插件端
從基礎庫2.16.0開(kāi)始,插件也支持實(shí)時(shí)日志。為了讓日志更加結構化以進(jìn)行更復雜的分析,插件端采用了全新設計的格式。
1、 調用相關(guān)接口 wx.getRealtimeLogManager 獲取實(shí)時(shí)日志管理器的實(shí)例:
const logManager = wx.getRealtimeLogManager()
2、在需要日志的邏輯中,獲取日志實(shí)例:
// 標簽名可以是任意字符串,一個(gè)標簽名對應一組日志;同樣的標簽名允許被重復使用,具有相同標簽名的日志在后臺會(huì )被匯總到一個(gè)標簽下
// 標簽可為日志進(jìn)行分類(lèi),因此建議開(kāi)發(fā)者按邏輯來(lái)進(jìn)行標簽劃分
const logger = logManager.tag('plugin-onUserTapSth')
3、在合適的位置打印日志:
logger.info('key1', 'value1') // 每條日志為一個(gè) key-value 對,key 必須是字符串,value 可以是字符串/數值/對象/數組等可序列化類(lèi)型
logger.error('key2', {str: 'value2'})
logger.warn('key3', 'value3')
logger.setFilterMsg('filterkeyword') // 和小程序/小游戲端接口一致
logger.setFilterMsg('addfilterkeyword') // 和小程序/小游戲端接口一致
如何查看日志
登錄小程序管理后臺,從“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面。開(kāi)發(fā)者可以通過(guò)設置時(shí)間、微信ID/OpenID、頁(yè)面鏈接、FilterMsg內容(基礎庫2.7.3及以上支持setFilterMsg)等過(guò)濾條件查詢(xún)指定用戶(hù)的日志信息。如果是插件上報的實(shí)時(shí)日志,可以通過(guò)“小程序插件->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面進(jìn)行查詢(xún)。

預防措施
由于后臺資源限制,“實(shí)時(shí)日志”的使用規則如下:
為了方便定位問(wèn)題,將日志按頁(yè)面劃分,某個(gè)頁(yè)面,在一定時(shí)間內(最短為5秒,最長(cháng)為頁(yè)面顯示和隱藏的時(shí)間間隔),會(huì )聚合成一個(gè)小程序管理后臺可以根據頁(yè)面路徑查找該日志。每個(gè)小程序賬號每天限制1000萬(wàn)條日志,日志保存7天。建議及時(shí)定位問(wèn)題。一個(gè)日志的上限為5KB,最多收錄200個(gè)打印日志函數調用(info、warn、error調用都算在內),所以要注意log,避免循環(huán)調用log接口,避免直接覆蓋console .log 點(diǎn)擊日志。反饋中的日志可以根據OpenID查找。setFilterMsg 和 addFilterMsg 可以設置類(lèi)似于日志標簽的過(guò)濾字段。如果需要添加多個(gè)關(guān)鍵字,建議使用addFilterMsg。比如addFilterMsg('scene1'), addFilterMsg('scene2'), addFilterMsg('scene3'),設置后可以隨機組合三個(gè)關(guān)鍵字在小程序管理后臺搜索,如:“scene1 scene2 scene3”, "scene1 scene2" ", "scene1 scene3" or "scene2" 等(用空格隔開(kāi),所以addFilterMsg不能收錄空格)日志可以通過(guò)以上幾種檢索方式進(jìn)行檢索,檢索條件越多越準確會(huì )的,目前為了方便日志分析,插件實(shí)時(shí)日志只支持key-value格式。實(shí)時(shí)日志目前僅支持手機端測試。工具端的接口可以調用,但是不會(huì )上報后臺。
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 185 次瀏覽 ? 2021-09-27 08:02
文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理。這是一篇具有實(shí)用性的python爬蟲(chóng)博客貼,包含了微信公眾號的數據采集和清洗方法:筆者研究了一下這個(gè)問(wèn)題,發(fā)現數據集取之不盡,也十分豐富。想獲取更多的話(huà),自己組織一下代碼和數據集,甚至爬蟲(chóng)加上人肉采集也都可以爬上去。準備工作清洗及預處理resize,replace,andloadresizeresizetocenterwithpython'smagnitude-linewhitefillcolorgraycolorizetheusefullayer.loadbetweenthedirsizedfilesandinner_blocks.例如srt_get_url_info_path/http/resources/mx4_dist.gif由于博客無(wú)法登陸,所以也沒(méi)有做cookiesharingwindows系統用shlife做ip或地址到文件夾的localsharedbasesecurity性能優(yōu)化對于同一個(gè)data里的不同directory分別下載數據(全部一樣就好)請避免對每個(gè)directory重復下載我這里用了3個(gè)directory:srt_dist/total,srt_dist/total.mx4和srt_dist/total.mx4.gif下載任務(wù)依次處理excel圖片的數據如下:文本轉json我一開(kāi)始用的是pandassortimage.txt,最好的是用pandassortpdf.txt。
用inlineterminal下的infile函數速度最快jsonreader里的用expand_dims()函數減小dim邊界比如要減去字符串中的content,改成decodeuricomponent(),保留四舍五入;要減去字符串中的text或者文本文件中的url如果以字典格式下載,df.to_csv()在windows編輯環(huán)境下,df.to_json()在linux下則直接下載就行,我這里直接用文本的方式content={'content':df.to_json()}text=json.loads(df.text)url=""'但是這樣做可能在排序時(shí)遇到問(wèn)題;有時(shí)候下載到txt后在importjson之前確實(shí)下載不出來(lái)json,那就用foriinrange(int(java.util.ioloop.task)):json.sort()或者new_url={"response_url":"","response_time":"","source":"","url":""}第三個(gè)問(wèn)題json的包裝字符串:url=""對于引入的模塊urllib3defurllib3_cookies():ifyouwanttoincludetheresourceswithoutexistingjson.loadsinmodule:open("url.txt",encoding="utf-8").write(result)else:open("cookies.json",encoding="utf-8").write(result)print("followingoperationsarethosewhousethisimplementation:")。 查看全部
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理)
文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理。這是一篇具有實(shí)用性的python爬蟲(chóng)博客貼,包含了微信公眾號的數據采集和清洗方法:筆者研究了一下這個(gè)問(wèn)題,發(fā)現數據集取之不盡,也十分豐富。想獲取更多的話(huà),自己組織一下代碼和數據集,甚至爬蟲(chóng)加上人肉采集也都可以爬上去。準備工作清洗及預處理resize,replace,andloadresizeresizetocenterwithpython'smagnitude-linewhitefillcolorgraycolorizetheusefullayer.loadbetweenthedirsizedfilesandinner_blocks.例如srt_get_url_info_path/http/resources/mx4_dist.gif由于博客無(wú)法登陸,所以也沒(méi)有做cookiesharingwindows系統用shlife做ip或地址到文件夾的localsharedbasesecurity性能優(yōu)化對于同一個(gè)data里的不同directory分別下載數據(全部一樣就好)請避免對每個(gè)directory重復下載我這里用了3個(gè)directory:srt_dist/total,srt_dist/total.mx4和srt_dist/total.mx4.gif下載任務(wù)依次處理excel圖片的數據如下:文本轉json我一開(kāi)始用的是pandassortimage.txt,最好的是用pandassortpdf.txt。
用inlineterminal下的infile函數速度最快jsonreader里的用expand_dims()函數減小dim邊界比如要減去字符串中的content,改成decodeuricomponent(),保留四舍五入;要減去字符串中的text或者文本文件中的url如果以字典格式下載,df.to_csv()在windows編輯環(huán)境下,df.to_json()在linux下則直接下載就行,我這里直接用文本的方式content={'content':df.to_json()}text=json.loads(df.text)url=""'但是這樣做可能在排序時(shí)遇到問(wèn)題;有時(shí)候下載到txt后在importjson之前確實(shí)下載不出來(lái)json,那就用foriinrange(int(java.util.ioloop.task)):json.sort()或者new_url={"response_url":"","response_time":"","source":"","url":""}第三個(gè)問(wèn)題json的包裝字符串:url=""對于引入的模塊urllib3defurllib3_cookies():ifyouwanttoincludetheresourceswithoutexistingjson.loadsinmodule:open("url.txt",encoding="utf-8").write(result)else:open("cookies.json",encoding="utf-8").write(result)print("followingoperationsarethosewhousethisimplementation:")。
文章實(shí)時(shí)采集(FlinkX實(shí)時(shí)采集插件的核心是如何實(shí)時(shí)捕獲數據庫數據的)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 123 次瀏覽 ? 2021-11-06 16:08
一、FlinkX 實(shí)時(shí)采集功能基本介紹
首先介紹一下FlinkX實(shí)時(shí)模塊的分類(lèi),如下圖所示:
1、實(shí)時(shí)采集模塊(CDC)
1)MySQL Binlog 插件
使用阿里開(kāi)源的Canal組件從MySQL實(shí)時(shí)捕獲變化數據。
2)PostgreSQL Wal 插件
<p>PostgreSQL實(shí)時(shí)采集基于PostgreSQL的邏輯復制和邏輯解碼功能。同步數據邏輯復制的原理是在Wal日志生成的數據庫上,邏輯分析模塊對Wal日志進(jìn)行初步分析。其分析結果為ReorderBufferChange(可以簡(jiǎn)單理解為HeapTupleData),Pgoutput Plugin對中間結果進(jìn)行過(guò)濾和消息拼接后發(fā)送給訂閱端,訂閱端通過(guò)邏輯解碼函數進(jìn)行分析。 查看全部
文章實(shí)時(shí)采集(FlinkX實(shí)時(shí)采集插件的核心是如何實(shí)時(shí)捕獲數據庫數據的)
一、FlinkX 實(shí)時(shí)采集功能基本介紹
首先介紹一下FlinkX實(shí)時(shí)模塊的分類(lèi),如下圖所示:
1、實(shí)時(shí)采集模塊(CDC)
1)MySQL Binlog 插件
使用阿里開(kāi)源的Canal組件從MySQL實(shí)時(shí)捕獲變化數據。
2)PostgreSQL Wal 插件
<p>PostgreSQL實(shí)時(shí)采集基于PostgreSQL的邏輯復制和邏輯解碼功能。同步數據邏輯復制的原理是在Wal日志生成的數據庫上,邏輯分析模塊對Wal日志進(jìn)行初步分析。其分析結果為ReorderBufferChange(可以簡(jiǎn)單理解為HeapTupleData),Pgoutput Plugin對中間結果進(jìn)行過(guò)濾和消息拼接后發(fā)送給訂閱端,訂閱端通過(guò)邏輯解碼函數進(jìn)行分析。
文章實(shí)時(shí)采集(如何用uid推送廣告?爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 178 次瀏覽 ? 2021-11-03 16:01
文章實(shí)時(shí)采集,開(kāi)發(fā)者可以獲取網(wǎng)頁(yè)全部網(wǎng)址或者根據網(wǎng)頁(yè)標題等特征設置ip地址獲取指定url。用戶(hù)通過(guò)特定策略,訪(fǎng)問(wèn)網(wǎng)頁(yè)就能獲取到相應內容,還是挺方便的。
謝邀推薦使用useragentmap
你看看這個(gè):howtosurveythecontentofachineseuser?大部分問(wèn)題你都能用這種手段解決。
allchineserequestswentintobecomeamoregeneralhackingads,alsonotinthebrandloginmethod.viacnncorruptchina
你需要自己搞一個(gè)簡(jiǎn)潔的用戶(hù)界面。目前沒(méi)什么好辦法。不過(guò)新浪提供了服務(wù)接口?;旧夏阆胗胾id進(jìn)行推送廣告的方法你都能用上。如果你有這方面需求,可以聯(lián)系找找看。如果涉及你在“南方日報”和“央視新聞”,也可以聯(lián)系上面的市場(chǎng)部。
如果你像@layly說(shuō)的那樣,你得懂爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)!你的技術(shù)可以想辦法,但是爬蟲(chóng)爬蟲(chóng),爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫。 查看全部
文章實(shí)時(shí)采集(如何用uid推送廣告?爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng))
文章實(shí)時(shí)采集,開(kāi)發(fā)者可以獲取網(wǎng)頁(yè)全部網(wǎng)址或者根據網(wǎng)頁(yè)標題等特征設置ip地址獲取指定url。用戶(hù)通過(guò)特定策略,訪(fǎng)問(wèn)網(wǎng)頁(yè)就能獲取到相應內容,還是挺方便的。
謝邀推薦使用useragentmap
你看看這個(gè):howtosurveythecontentofachineseuser?大部分問(wèn)題你都能用這種手段解決。
allchineserequestswentintobecomeamoregeneralhackingads,alsonotinthebrandloginmethod.viacnncorruptchina
你需要自己搞一個(gè)簡(jiǎn)潔的用戶(hù)界面。目前沒(méi)什么好辦法。不過(guò)新浪提供了服務(wù)接口?;旧夏阆胗胾id進(jìn)行推送廣告的方法你都能用上。如果你有這方面需求,可以聯(lián)系找找看。如果涉及你在“南方日報”和“央視新聞”,也可以聯(lián)系上面的市場(chǎng)部。
如果你像@layly說(shuō)的那樣,你得懂爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)!你的技術(shù)可以想辦法,但是爬蟲(chóng)爬蟲(chóng),爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬蟲(chóng)爬蟲(chóng)爬蟲(chóng)爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫爬庫。
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)的實(shí)現方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 124 次瀏覽 ? 2021-11-02 22:01
文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)信息:數據要求是文字或者圖片,前端只需要預覽一次大堂的尺寸就可以保存到hbase。后端會(huì )實(shí)時(shí)寫(xiě)入數據庫中。文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。需要的技術(shù)棧:開(kāi)發(fā)環(huán)境tomcat7.0springboot5.0.6eclipse14.0.2python2.7.14sql2015版本前端:jquery+flask+requests數據庫:mysql+mongodb主要實(shí)現方法:文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號碼-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:1,設置請求url2,設置請求頭,header:accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;*/*;user-agent:mozilla/5.0(windowsnt6.1;wow64)applewebkit/537.36(khtml,likegecko)chrome/50.0.2724.116safari/537.3647.94save/first3,設置請求header,如下:header'content-type':'application/xhtml+xml;q=0.9,*/*;q=0.8'4,如果服務(wù)器不開(kāi)放wifi接口,設置請求url用請求報文地址,即mysql和requests_file-db報文地址。
inet_native_private_port=8000jlink虛擬機大樓頂部的尺寸為15m*20m左右,所以尺寸有45*15*20=4800m。大堂的尺寸為15m*20m左右,所以尺寸有10m*40*20=3200m。每一個(gè)大堂的id號碼都會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:將數據寫(xiě)入mysql中:1,創(chuàng )建一個(gè)mysql對象2,將每一個(gè)大堂的id號碼寫(xiě)入mysql表中3,將表中每一個(gè)大堂的id號碼寫(xiě)入數據庫中4,重啟mysql實(shí)例5,將該表中的每一個(gè)大堂編號寫(xiě)入db表中6,讀取并寫(xiě)入數據庫。 查看全部
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)的實(shí)現方法)
文章實(shí)時(shí)采集寫(xiě)字樓大堂(廣告牌)信息:數據要求是文字或者圖片,前端只需要預覽一次大堂的尺寸就可以保存到hbase。后端會(huì )實(shí)時(shí)寫(xiě)入數據庫中。文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。需要的技術(shù)棧:開(kāi)發(fā)環(huán)境tomcat7.0springboot5.0.6eclipse14.0.2python2.7.14sql2015版本前端:jquery+flask+requests數據庫:mysql+mongodb主要實(shí)現方法:文章內容是:每一個(gè)大堂的id號碼會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號碼-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:1,設置請求url2,設置請求頭,header:accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;*/*;user-agent:mozilla/5.0(windowsnt6.1;wow64)applewebkit/537.36(khtml,likegecko)chrome/50.0.2724.116safari/537.3647.94save/first3,設置請求header,如下:header'content-type':'application/xhtml+xml;q=0.9,*/*;q=0.8'4,如果服務(wù)器不開(kāi)放wifi接口,設置請求url用請求報文地址,即mysql和requests_file-db報文地址。
inet_native_private_port=8000jlink虛擬機大樓頂部的尺寸為15m*20m左右,所以尺寸有45*15*20=4800m。大堂的尺寸為15m*20m左右,所以尺寸有10m*40*20=3200m。每一個(gè)大堂的id號碼都會(huì )實(shí)時(shí)記錄在數據庫中,所以可以保存成文檔,可以做外部的文章數據接入。
但這里會(huì )采集的信息有:1,房間號碼2,號碼房間號碼-->1號大堂號碼房間號-->2號大堂號碼除此之外還會(huì )采集的信息:3,大堂主辦方是否開(kāi)放wifi等信息4,大堂主辦方是否購買(mǎi)t恤,內衣等等內容實(shí)現過(guò)程如下:將數據寫(xiě)入mysql中:1,創(chuàng )建一個(gè)mysql對象2,將每一個(gè)大堂的id號碼寫(xiě)入mysql表中3,將表中每一個(gè)大堂的id號碼寫(xiě)入數據庫中4,重啟mysql實(shí)例5,將該表中的每一個(gè)大堂編號寫(xiě)入db表中6,讀取并寫(xiě)入數據庫。
文章實(shí)時(shí)采集(C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼及AAC編碼的音視頻RTMP )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 198 次瀏覽 ? 2021-11-02 09:02
)
C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼和AAC編碼的音視頻
RTMP(Real Time Messaging Protocol)是一種專(zhuān)門(mén)用于傳輸音視頻數據的流媒體協(xié)議。它最初由Macromedia 創(chuàng )建,后來(lái)歸它所有。它是一個(gè)私有協(xié)議,主要用于聯(lián)系Flash Player和RtmpServer,如FMS、Red5、crtmpserver等。RTMP協(xié)議可以實(shí)現直播和點(diǎn)播應用,通過(guò)FMLE(Flash Media Live Encoder)將音視頻數據推送到RtmpServer,可以實(shí)現攝像機的實(shí)時(shí)直播。但是,畢竟FMLE的應用范圍是有限的。如果想嵌入到自己的程序中,還是要自己實(shí)現RTMP協(xié)議推送。我已經(jīng)實(shí)現了一個(gè) RTMPLiveEncoder,通過(guò) 采集 攝像頭視頻和麥克風(fēng)音頻,以及 H.264 和 AAC 編碼,然后發(fā)送到FMS和crtmpserver實(shí)現實(shí)時(shí)直播,通過(guò)flash播放器可以正常觀(guān)看,目前效果不錯。延遲時(shí)間約為 2 秒。本文介紹了RTMPLiveEncoder的主要思想和關(guān)鍵點(diǎn),希望對需要該技術(shù)的朋友有所幫助。
技術(shù)分析
實(shí)現RTMPLiveEncoder,需要以下四項關(guān)鍵技術(shù):
其中,前兩項技術(shù)在我之前的文章《采集音頻和攝像頭視頻和實(shí)時(shí)H264編碼和AAC編碼》中已經(jīng)介紹過(guò),這里就不啰嗦了.
將音頻和視頻數據封裝到可播放的流中是一個(gè)難點(diǎn)。仔細研究,你會(huì )發(fā)現RTMP Packet中封裝的音視頻數據流其實(shí)和FLV封裝音視頻數據的方式是一樣的。所以我們只需要根據FLV封裝H264和AAC就可以生成Play流了。
我們再來(lái)看看RTMP協(xié)議。Adobe 曾經(jīng)發(fā)布過(guò)一個(gè)文檔《RTMP 規范》,但維基百科指出該文檔隱藏了很多細節,僅憑它是無(wú)法正確實(shí)現 RTMP 的。不過(guò)還是有參考意義的。事實(shí)上,在A(yíng)dobe發(fā)布之前RTMP協(xié)議幾乎就已經(jīng)被破解了,現在已經(jīng)有了比較完善的實(shí)現,比如RTMPDump,它提供了一個(gè)C語(yǔ)言的接口,這意味著(zhù)它可以很容易地被其他語(yǔ)言調用。
計劃框架
和我之前的文章《采集音視頻與實(shí)時(shí)H264編碼與AAC編碼》文章一樣,使用DirectShow技術(shù)實(shí)現音視頻采集,音視頻編碼, 循環(huán)在各自的線(xiàn)程(AudioEncoderThread 和 VideoEncoderThread)中,RTMP的push開(kāi)始一個(gè)新的線(xiàn)程(RtmpThread)。兩個(gè)編碼線(xiàn)程實(shí)時(shí)對音視頻數據進(jìn)行編碼后,將數據交給Rtmp線(xiàn)程,Rtmp線(xiàn)程循環(huán)封裝Rtmp Packet,然后發(fā)送出去。
線(xiàn)程之間的數據交換是通過(guò)一個(gè)隊列DataBufferQueue來(lái)實(shí)現的。AudioEncoderThread 和 VideoEncoderThread 將數據指針發(fā)布到 DataBufferQueue 后立即返回,以免因發(fā)送 Rtmp 消息而影響編碼線(xiàn)程的正常執行時(shí)間。
RtmpThread的主要工作是發(fā)送音頻數據流的解碼信息頭和視頻數據流的解碼信息頭,不斷地從DataBufferQueue中取出數據,封裝成RTMP Packet,發(fā)送出去。流程如下代碼所示:(process_buf_queue_,也就是上圖中的DataBufferQueue)
librtmp一、 編譯 librtmp
下載rtmpdump的代碼,你會(huì )發(fā)現它是一個(gè)正宗的linux項目,除了一個(gè)簡(jiǎn)單的Makefile,沒(méi)有別的??磥?lái)librtmp并不依賴(lài)系統,所以我們可以在windows上編譯,不用花太多精力。但是,librtmp 依賴(lài)于 openssl 和 zlib,我們需要先編譯它們。
1. 編譯 openssl1.0.0e
a) 下載并安裝 ActivePerl
b) 下載并安裝 nasm()
c) 解壓openssl壓縮包
d) 運行cmd命令行,切換到openssl目錄,分別執行以下命令
>perl Configure VC-WIN32 --prefix=c:\some\dir
>ms\do_nasm
e) 運行Visual Studio Command Prompt(2010),切入openssl目錄,分別執行以下命令。
>nmake -f ms\nt.mak
>nmake -f ms\nt.mak install
f) 編譯完成后,可以在第一條命令指定的目錄中找到編譯好的SDK。
2. 編譯 zlib
a) 解壓zlib壓縮包
b) 運行Visual Studio Command Prompt(2010),切到openssl目錄,分別執行以下命令
>cd contrib\masmx86
>bld_ml32.bat
c) 回到zlib目錄,進(jìn)入contrib\vstudio\vc10目錄,打開(kāi)vs2010解決方案文件,
在zlibstat項目屬性中,去掉預編譯宏ZLIB_WINAPI
d) 選擇 debug 或 release 編譯
3. 編譯 librtmp
a) 首先打開(kāi)visual studio 2010,新建一個(gè)win32控制臺項目,指定為靜態(tài)鏈接庫
b) 將librtmp代碼導入工程中,將openssl、zlib和librtmp的頭文件放在一起,將編譯好的openssl和zlib的靜態(tài)庫放在一起
c) 在項目設置中,添加之前編譯好的openssl和zlib庫,然后編譯。
二、librtmp 的使用
首先初始化RTMP結構
啟動(dòng)后需要向RTMP Server發(fā)起握手連接消息
如果連接成功,就可以開(kāi)始循環(huán)發(fā)送消息了。在這里您需要指定時(shí)間戳和數據類(lèi)型(音頻、視頻、元數據)。這里需要注意的一點(diǎn)是,在調用Send之前,buf中的數據必須是封裝好的H264或者AAC數據流。
關(guān)閉
終于發(fā)布了
H264 和 AAC 數據流
如本文所述,RTMP推送的音視頻流的封裝類(lèi)似于FLV格式??梢钥闯?,要將H264和AAC直播流推送到FMS,需要先發(fā)送“AVC序列頭”和“AAC序列頭”。數據收錄重要的編碼信息,沒(méi)有它們,解碼器將無(wú)法解碼。
AVC 序列頭是 AVCDecoderConfigurationRecord 結構,在標準文檔“ISO-14496-15 AVC 文件格式”中有詳細描述。
AAC 序列頭存儲 AudioSpecificConfig 結構,在“ISO-14496-3 Audio”中有描述。AudioSpecificConfig 結構體的描述非常復雜。在這里,我將簡(jiǎn)化它。預先設置要編碼的音頻格式。其中,音頻編碼選擇“AAC-LC”,音頻采樣率為44100,因此AudioSpecificConfig簡(jiǎn)化為下表:
這樣就可以基本確定AVC序列頭和AAC序列頭的內容了。更詳細的信息,您可以查看相關(guān)文檔。
運行結果
RtmpLiveEncoder 開(kāi)始運行
用 FMS 自帶的 flash 播放器玩
++++++++++++++++++++++++++++++++++++++++++++++++++ ++ +++++++++++++
查看全部
文章實(shí)時(shí)采集(C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼及AAC編碼的音視頻RTMP
)
C++實(shí)現RTMP協(xié)議發(fā)送H.264編碼和AAC編碼的音視頻
RTMP(Real Time Messaging Protocol)是一種專(zhuān)門(mén)用于傳輸音視頻數據的流媒體協(xié)議。它最初由Macromedia 創(chuàng )建,后來(lái)歸它所有。它是一個(gè)私有協(xié)議,主要用于聯(lián)系Flash Player和RtmpServer,如FMS、Red5、crtmpserver等。RTMP協(xié)議可以實(shí)現直播和點(diǎn)播應用,通過(guò)FMLE(Flash Media Live Encoder)將音視頻數據推送到RtmpServer,可以實(shí)現攝像機的實(shí)時(shí)直播。但是,畢竟FMLE的應用范圍是有限的。如果想嵌入到自己的程序中,還是要自己實(shí)現RTMP協(xié)議推送。我已經(jīng)實(shí)現了一個(gè) RTMPLiveEncoder,通過(guò) 采集 攝像頭視頻和麥克風(fēng)音頻,以及 H.264 和 AAC 編碼,然后發(fā)送到FMS和crtmpserver實(shí)現實(shí)時(shí)直播,通過(guò)flash播放器可以正常觀(guān)看,目前效果不錯。延遲時(shí)間約為 2 秒。本文介紹了RTMPLiveEncoder的主要思想和關(guān)鍵點(diǎn),希望對需要該技術(shù)的朋友有所幫助。
技術(shù)分析
實(shí)現RTMPLiveEncoder,需要以下四項關(guān)鍵技術(shù):
其中,前兩項技術(shù)在我之前的文章《采集音頻和攝像頭視頻和實(shí)時(shí)H264編碼和AAC編碼》中已經(jīng)介紹過(guò),這里就不啰嗦了.
將音頻和視頻數據封裝到可播放的流中是一個(gè)難點(diǎn)。仔細研究,你會(huì )發(fā)現RTMP Packet中封裝的音視頻數據流其實(shí)和FLV封裝音視頻數據的方式是一樣的。所以我們只需要根據FLV封裝H264和AAC就可以生成Play流了。
我們再來(lái)看看RTMP協(xié)議。Adobe 曾經(jīng)發(fā)布過(guò)一個(gè)文檔《RTMP 規范》,但維基百科指出該文檔隱藏了很多細節,僅憑它是無(wú)法正確實(shí)現 RTMP 的。不過(guò)還是有參考意義的。事實(shí)上,在A(yíng)dobe發(fā)布之前RTMP協(xié)議幾乎就已經(jīng)被破解了,現在已經(jīng)有了比較完善的實(shí)現,比如RTMPDump,它提供了一個(gè)C語(yǔ)言的接口,這意味著(zhù)它可以很容易地被其他語(yǔ)言調用。
計劃框架
和我之前的文章《采集音視頻與實(shí)時(shí)H264編碼與AAC編碼》文章一樣,使用DirectShow技術(shù)實(shí)現音視頻采集,音視頻編碼, 循環(huán)在各自的線(xiàn)程(AudioEncoderThread 和 VideoEncoderThread)中,RTMP的push開(kāi)始一個(gè)新的線(xiàn)程(RtmpThread)。兩個(gè)編碼線(xiàn)程實(shí)時(shí)對音視頻數據進(jìn)行編碼后,將數據交給Rtmp線(xiàn)程,Rtmp線(xiàn)程循環(huán)封裝Rtmp Packet,然后發(fā)送出去。
線(xiàn)程之間的數據交換是通過(guò)一個(gè)隊列DataBufferQueue來(lái)實(shí)現的。AudioEncoderThread 和 VideoEncoderThread 將數據指針發(fā)布到 DataBufferQueue 后立即返回,以免因發(fā)送 Rtmp 消息而影響編碼線(xiàn)程的正常執行時(shí)間。

RtmpThread的主要工作是發(fā)送音頻數據流的解碼信息頭和視頻數據流的解碼信息頭,不斷地從DataBufferQueue中取出數據,封裝成RTMP Packet,發(fā)送出去。流程如下代碼所示:(process_buf_queue_,也就是上圖中的DataBufferQueue)

librtmp一、 編譯 librtmp
下載rtmpdump的代碼,你會(huì )發(fā)現它是一個(gè)正宗的linux項目,除了一個(gè)簡(jiǎn)單的Makefile,沒(méi)有別的??磥?lái)librtmp并不依賴(lài)系統,所以我們可以在windows上編譯,不用花太多精力。但是,librtmp 依賴(lài)于 openssl 和 zlib,我們需要先編譯它們。
1. 編譯 openssl1.0.0e
a) 下載并安裝 ActivePerl
b) 下載并安裝 nasm()
c) 解壓openssl壓縮包
d) 運行cmd命令行,切換到openssl目錄,分別執行以下命令
>perl Configure VC-WIN32 --prefix=c:\some\dir
>ms\do_nasm
e) 運行Visual Studio Command Prompt(2010),切入openssl目錄,分別執行以下命令。
>nmake -f ms\nt.mak
>nmake -f ms\nt.mak install
f) 編譯完成后,可以在第一條命令指定的目錄中找到編譯好的SDK。
2. 編譯 zlib
a) 解壓zlib壓縮包
b) 運行Visual Studio Command Prompt(2010),切到openssl目錄,分別執行以下命令
>cd contrib\masmx86
>bld_ml32.bat
c) 回到zlib目錄,進(jìn)入contrib\vstudio\vc10目錄,打開(kāi)vs2010解決方案文件,
在zlibstat項目屬性中,去掉預編譯宏ZLIB_WINAPI
d) 選擇 debug 或 release 編譯
3. 編譯 librtmp
a) 首先打開(kāi)visual studio 2010,新建一個(gè)win32控制臺項目,指定為靜態(tài)鏈接庫
b) 將librtmp代碼導入工程中,將openssl、zlib和librtmp的頭文件放在一起,將編譯好的openssl和zlib的靜態(tài)庫放在一起


c) 在項目設置中,添加之前編譯好的openssl和zlib庫,然后編譯。

二、librtmp 的使用
首先初始化RTMP結構

啟動(dòng)后需要向RTMP Server發(fā)起握手連接消息

如果連接成功,就可以開(kāi)始循環(huán)發(fā)送消息了。在這里您需要指定時(shí)間戳和數據類(lèi)型(音頻、視頻、元數據)。這里需要注意的一點(diǎn)是,在調用Send之前,buf中的數據必須是封裝好的H264或者AAC數據流。

關(guān)閉

終于發(fā)布了

H264 和 AAC 數據流
如本文所述,RTMP推送的音視頻流的封裝類(lèi)似于FLV格式??梢钥闯?,要將H264和AAC直播流推送到FMS,需要先發(fā)送“AVC序列頭”和“AAC序列頭”。數據收錄重要的編碼信息,沒(méi)有它們,解碼器將無(wú)法解碼。
AVC 序列頭是 AVCDecoderConfigurationRecord 結構,在標準文檔“ISO-14496-15 AVC 文件格式”中有詳細描述。

AAC 序列頭存儲 AudioSpecificConfig 結構,在“ISO-14496-3 Audio”中有描述。AudioSpecificConfig 結構體的描述非常復雜。在這里,我將簡(jiǎn)化它。預先設置要編碼的音頻格式。其中,音頻編碼選擇“AAC-LC”,音頻采樣率為44100,因此AudioSpecificConfig簡(jiǎn)化為下表:

這樣就可以基本確定AVC序列頭和AAC序列頭的內容了。更詳細的信息,您可以查看相關(guān)文檔。
運行結果
RtmpLiveEncoder 開(kāi)始運行

用 FMS 自帶的 flash 播放器玩

++++++++++++++++++++++++++++++++++++++++++++++++++ ++ +++++++++++++
文章實(shí)時(shí)采集( 日志服務(wù)LogHub提供日志數據實(shí)時(shí)采集功能支持30+種手段)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 183 次瀏覽 ? 2021-10-31 01:11
日志服務(wù)LogHub提供日志數據實(shí)時(shí)采集功能支持30+種手段)
21CTO 社區指南:日志服務(wù) LogHub 提供日志數據的實(shí)時(shí)采集和消費。其中,實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的采集方法。
日志服務(wù)LogHub功能提供日志數據的實(shí)時(shí)采集和消費。實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的接入方式。
data采集一般有兩種方式,區別如下。這里主要討論通過(guò)LogHub采集進(jìn)行流式導入(實(shí)時(shí))。
背景
“我要點(diǎn)外賣(mài)”是一個(gè)基于平臺的電商網(wǎng)站,用戶(hù)、餐廳、送餐員等,用戶(hù)可以通過(guò)網(wǎng)頁(yè)、App、微信、支付寶等方式下單;商家收到訂單后開(kāi)始處理,并自動(dòng)通知周邊快遞員;快遞員將食物送到用戶(hù)手中。
操作要求
在操作過(guò)程中,發(fā)現了以下問(wèn)題:
獲取用戶(hù)難。向渠道(網(wǎng)頁(yè)、微信推送)投放大量廣告費,接收部分用戶(hù),但無(wú)法判斷各渠道效果
用戶(hù)經(jīng)常抱怨發(fā)貨慢,但是下單、發(fā)貨、處理的慢在什么階段?如何優(yōu)化?
用戶(hù)操作,經(jīng)常搞一些優(yōu)惠活動(dòng)(送優(yōu)惠券),卻得不到效果
排期問(wèn)題,如何在高峰時(shí)段幫助商家提前備貨?如何派送更多的快遞到指定區域?
客服,用戶(hù)反饋下單失敗,用戶(hù)背后是什么操作?系統是否有錯誤?
數據采集難點(diǎn)
在數據操作的過(guò)程中,第一步是如何集中采集分散的日志數據,會(huì )遇到以下挑戰:
我們需要采集分散的外部和內部日志并統一管理。以前這個(gè)區域需要做很多工作,現在可以通過(guò)LogHub采集函數訪(fǎng)問(wèn)。
統一的日志管理和配置
創(chuàng )建一個(gè)管理日志項目Project,例如叫myorder
創(chuàng )建日志存儲Logstore,用于從不同數據源生成日志,例如:
如果需要清理原創(chuàng )數據和ETL,可以創(chuàng )建一些中間結果logstore
?。ǜ嗖僮髡垍⒖伎焖偃腴T(mén)/管理控制臺)
用戶(hù)推廣日志采集實(shí)踐
定義如下注冊服務(wù)器地址,生成二維碼(傳單、網(wǎng)頁(yè))供用戶(hù)注冊和掃描。當用戶(hù)掃描頁(yè)面進(jìn)行注冊時(shí),他知道用戶(hù)是通過(guò)特定來(lái)源進(jìn)入并記錄日志的。
;ref=kd4b
當服務(wù)器接受請求時(shí),服務(wù)器輸出如下日志:
2016-06-2019:00:00e41234ab342ef034,102345,5k4d,467890
采集方式:
1. 應用通過(guò)Logtail將日志輸出到硬盤(pán)采集
2. 應用是通過(guò)SDK編寫(xiě)的,見(jiàn)SDK
服務(wù)器數據采集
支付寶/微信公眾號編程是典型的web端模式,日志一般分為三種:
實(shí)踐
日志寫(xiě)入本地文件,通過(guò)Logtail配置正則表達式寫(xiě)入指定Logstore
Docker 中生成的日志可以使用容器服務(wù)來(lái)集成日志服務(wù)
Java程序可以使用Log4J Appender日志,無(wú)需日志記錄,LogHub Producer Library(客戶(hù)端高并發(fā)寫(xiě)入);Log4J 附加程序
可以使用SDK編寫(xiě)C#、Python、Java、PHP、C等
Windows服務(wù)器可以使用Logstash采集
最終用戶(hù)日志訪(fǎng)問(wèn)
Web/M 站點(diǎn)頁(yè)面用戶(hù)行為
頁(yè)面用戶(hù)行為采集可以分為兩類(lèi):
1. 頁(yè)面與后臺服務(wù)器交互:如下單、登錄、退出等。
2. 頁(yè)面無(wú)后臺服務(wù)器交互:前端直接處理請求,如滾動(dòng)、關(guān)閉頁(yè)面等。
實(shí)踐
第一種方法可以參考服務(wù)器采集方法
第二個(gè)可以使用Tracking Pixel/JS Library來(lái)采集頁(yè)面行為,參考Tracking Web interface
服務(wù)器日志運維
例如:
實(shí)踐
不同網(wǎng)絡(luò )環(huán)境下的數據采集
LogHub在每個(gè)區域提供接入點(diǎn),每個(gè)區域提供三個(gè)接入點(diǎn):
更多信息請參考網(wǎng)絡(luò )接入,總有一款適合您。
其他
查看LogHub的完整采集方法。
查看日志實(shí)時(shí)消耗,涉及流計算、數據清洗、數據倉庫、索引查詢(xún)等功能。
作者:簡(jiǎn)志,阿里云計算高級專(zhuān)家,擅長(cháng)日志分析處理領(lǐng)域 查看全部
文章實(shí)時(shí)采集(
日志服務(wù)LogHub提供日志數據實(shí)時(shí)采集功能支持30+種手段)

21CTO 社區指南:日志服務(wù) LogHub 提供日志數據的實(shí)時(shí)采集和消費。其中,實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的采集方法。
日志服務(wù)LogHub功能提供日志數據的實(shí)時(shí)采集和消費。實(shí)時(shí)采集功能支持30+種方法。下面簡(jiǎn)單介紹一下各個(gè)場(chǎng)景的接入方式。

data采集一般有兩種方式,區別如下。這里主要討論通過(guò)LogHub采集進(jìn)行流式導入(實(shí)時(shí))。
背景
“我要點(diǎn)外賣(mài)”是一個(gè)基于平臺的電商網(wǎng)站,用戶(hù)、餐廳、送餐員等,用戶(hù)可以通過(guò)網(wǎng)頁(yè)、App、微信、支付寶等方式下單;商家收到訂單后開(kāi)始處理,并自動(dòng)通知周邊快遞員;快遞員將食物送到用戶(hù)手中。

操作要求
在操作過(guò)程中,發(fā)現了以下問(wèn)題:
獲取用戶(hù)難。向渠道(網(wǎng)頁(yè)、微信推送)投放大量廣告費,接收部分用戶(hù),但無(wú)法判斷各渠道效果
用戶(hù)經(jīng)常抱怨發(fā)貨慢,但是下單、發(fā)貨、處理的慢在什么階段?如何優(yōu)化?
用戶(hù)操作,經(jīng)常搞一些優(yōu)惠活動(dòng)(送優(yōu)惠券),卻得不到效果
排期問(wèn)題,如何在高峰時(shí)段幫助商家提前備貨?如何派送更多的快遞到指定區域?
客服,用戶(hù)反饋下單失敗,用戶(hù)背后是什么操作?系統是否有錯誤?
數據采集難點(diǎn)
在數據操作的過(guò)程中,第一步是如何集中采集分散的日志數據,會(huì )遇到以下挑戰:
我們需要采集分散的外部和內部日志并統一管理。以前這個(gè)區域需要做很多工作,現在可以通過(guò)LogHub采集函數訪(fǎng)問(wèn)。

統一的日志管理和配置
創(chuàng )建一個(gè)管理日志項目Project,例如叫myorder
創(chuàng )建日志存儲Logstore,用于從不同數據源生成日志,例如:
如果需要清理原創(chuàng )數據和ETL,可以創(chuàng )建一些中間結果logstore
?。ǜ嗖僮髡垍⒖伎焖偃腴T(mén)/管理控制臺)
用戶(hù)推廣日志采集實(shí)踐
定義如下注冊服務(wù)器地址,生成二維碼(傳單、網(wǎng)頁(yè))供用戶(hù)注冊和掃描。當用戶(hù)掃描頁(yè)面進(jìn)行注冊時(shí),他知道用戶(hù)是通過(guò)特定來(lái)源進(jìn)入并記錄日志的。
;ref=kd4b
當服務(wù)器接受請求時(shí),服務(wù)器輸出如下日志:
2016-06-2019:00:00e41234ab342ef034,102345,5k4d,467890
采集方式:
1. 應用通過(guò)Logtail將日志輸出到硬盤(pán)采集
2. 應用是通過(guò)SDK編寫(xiě)的,見(jiàn)SDK
服務(wù)器數據采集
支付寶/微信公眾號編程是典型的web端模式,日志一般分為三種:

實(shí)踐
日志寫(xiě)入本地文件,通過(guò)Logtail配置正則表達式寫(xiě)入指定Logstore
Docker 中生成的日志可以使用容器服務(wù)來(lái)集成日志服務(wù)
Java程序可以使用Log4J Appender日志,無(wú)需日志記錄,LogHub Producer Library(客戶(hù)端高并發(fā)寫(xiě)入);Log4J 附加程序
可以使用SDK編寫(xiě)C#、Python、Java、PHP、C等
Windows服務(wù)器可以使用Logstash采集
最終用戶(hù)日志訪(fǎng)問(wèn)
Web/M 站點(diǎn)頁(yè)面用戶(hù)行為
頁(yè)面用戶(hù)行為采集可以分為兩類(lèi):
1. 頁(yè)面與后臺服務(wù)器交互:如下單、登錄、退出等。
2. 頁(yè)面無(wú)后臺服務(wù)器交互:前端直接處理請求,如滾動(dòng)、關(guān)閉頁(yè)面等。
實(shí)踐
第一種方法可以參考服務(wù)器采集方法
第二個(gè)可以使用Tracking Pixel/JS Library來(lái)采集頁(yè)面行為,參考Tracking Web interface
服務(wù)器日志運維
例如:

實(shí)踐
不同網(wǎng)絡(luò )環(huán)境下的數據采集
LogHub在每個(gè)區域提供接入點(diǎn),每個(gè)區域提供三個(gè)接入點(diǎn):
更多信息請參考網(wǎng)絡(luò )接入,總有一款適合您。
其他
查看LogHub的完整采集方法。
查看日志實(shí)時(shí)消耗,涉及流計算、數據清洗、數據倉庫、索引查詢(xún)等功能。
作者:簡(jiǎn)志,阿里云計算高級專(zhuān)家,擅長(cháng)日志分析處理領(lǐng)域
文章實(shí)時(shí)采集( 啟蒙續集之Halcon聯(lián)合C#以及手眼以及標定實(shí)時(shí)采集方法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 193 次瀏覽 ? 2021-10-30 22:22
啟蒙續集之Halcon聯(lián)合C#以及手眼以及標定實(shí)時(shí)采集方法)
Halcon結合C#實(shí)時(shí)采集圖像 Halcon結合C#實(shí)時(shí)采集圖像
內容中引用的學(xué)習課程為超人視頻:Halcon結合C#和手眼校準
實(shí)時(shí)采集方法有四種:循環(huán)采集、定時(shí)器、多線(xiàn)程、回調函數
這篇文章在之前的代碼上做了改進(jìn),所以我把之前的代碼復制了一份,再次打開(kāi)發(fā)現這個(gè)界面:
如何打開(kāi) C# 設計窗口:
改進(jìn)過(guò)程:
1.halcon 部分
在halcon中打開(kāi)采集助手,自動(dòng)檢測接口,連接,實(shí)時(shí),插入代碼
Halcon 代碼的一部分是:
* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', 8, 'rgb', -1, 'false', 'default', '0030532361ef_Basler_acA160020gc', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
get_image_size (Image, Width, Height)
dev_set_part (0, 0, Height, Width)
endwhile
close_framegrabber (AcqHandle)
2.C#部分
配置如上一篇文章,我直接用上次代碼改了,所以沒(méi)有重新配置。
添加控件定時(shí)器,屬性欄如下。定時(shí)器方法不準確,間隔越長(cháng)越不準確。單擊閃電符號,Interval 更改為 40ms,事件將在 40ms 后執行。定時(shí)器開(kāi)啟后,不要采集關(guān)閉,否則會(huì )出現錯誤:HALCON error #2454: HALCON handle has already clear in operatorgrab_image_async
下一步就是雙擊不同的控件,然后將halcon導出的代碼復制粘貼到相應位置即可。
在Halcon導出的C#代碼中,只需要關(guān)注action函數中的代碼即可:
// Local iconic variables
HObject ho_Image=null;
// Local control variables
HTuple hv_AcqHandle = new HTuple(), hv_Width = new HTuple();
HTuple hv_Height = new HTuple();
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Image);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
while ((int)(1) != 0)
{
ho_Image.Dispose();
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
hv_Width.Dispose();hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
}
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Image.Dispose();
hv_AcqHandle.Dispose();
hv_Width.Dispose();
hv_Height.Dispose();
打開(kāi)相機部分的代碼:
#region 打開(kāi)相機
private void button3_Click(object sender, EventArgs e)
{
//清空、打開(kāi)、初始化相機
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Timg);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
textBox1.Text = "相機已打開(kāi)!";
}
#endregion
采集顯示部分代碼:
注意:如果顯示的圖像只是halcon中可以看到的一部分,則說(shuō)明halcon中沒(méi)有使用dev_set_part()函數
#region 采集顯示
///
/// 此部分包含定時(shí)器的觸發(fā)
///
///
///
private void button4_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
//打開(kāi)窗口顯示圖片
HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);
HDevWindowStack.Push(hv_WindowHandle);
}
private void timer1_Tick(object sender, EventArgs e)
{
ho_Timg.Dispose();
//獲取圖片
HOperatorSet.GrabImageAsync(out ho_Timg, hv_AcqHandle, -1);
//獲取圖片長(cháng)寬
hv_Width.Dispose(); hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Timg, out hv_Width, out hv_Height);
//設置獲取的圖片在窗口中顯示大?。ù瞬糠秩绻麤](méi)有,則只能顯示采集到的一部分圖像)
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
//如果窗口打開(kāi),顯示圖片
if (HDevWindowStack.IsOpen())
{
HOperatorSet.DispObj(ho_Timg, HDevWindowStack.GetActive());
textBox1.Text = "實(shí)時(shí)錄像成功!";
}
}
#endregion
關(guān)閉相機部分代碼:
#region 關(guān)閉相機
private void button5_Click(object sender, EventArgs e)
{
//關(guān)閉定時(shí)器這步十分重要,不能少了
timer1.Enabled = false;
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Timg.Dispose();
textBox1.Text = "關(guān)閉相機成功!";
}
#endregion
Halcon與C#實(shí)時(shí)采集圖像相關(guān)教程Unity與nodejs實(shí)時(shí)連接,實(shí)時(shí)音視頻圖像識別halcon基礎應用及方法經(jīng)驗分享構建直播時(shí)實(shí)時(shí)音視頻平臺(一)實(shí)時(shí)預測用戶(hù)對物品的偏好阿里云推薦引擎幫助您更好的提升業(yè)務(wù)。海量數據實(shí)時(shí)查詢(xún)域名數據庫設計小記(一)Spark實(shí)時(shí)e -商務(wù)數據分析與可視化HTML前端實(shí)時(shí)可視化開(kāi)發(fā)工具Android平臺美顏相機/相機實(shí)時(shí)濾鏡/視頻編解碼/圖片貼/人臉 查看全部
文章實(shí)時(shí)采集(
啟蒙續集之Halcon聯(lián)合C#以及手眼以及標定實(shí)時(shí)采集方法)
Halcon結合C#實(shí)時(shí)采集圖像 Halcon結合C#實(shí)時(shí)采集圖像
內容中引用的學(xué)習課程為超人視頻:Halcon結合C#和手眼校準
實(shí)時(shí)采集方法有四種:循環(huán)采集、定時(shí)器、多線(xiàn)程、回調函數
這篇文章在之前的代碼上做了改進(jìn),所以我把之前的代碼復制了一份,再次打開(kāi)發(fā)現這個(gè)界面:

如何打開(kāi) C# 設計窗口:

改進(jìn)過(guò)程:
1.halcon 部分
在halcon中打開(kāi)采集助手,自動(dòng)檢測接口,連接,實(shí)時(shí),插入代碼




Halcon 代碼的一部分是:
* Image Acquisition 01: Code generated by Image Acquisition 01
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', 8, 'rgb', -1, 'false', 'default', '0030532361ef_Basler_acA160020gc', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
get_image_size (Image, Width, Height)
dev_set_part (0, 0, Height, Width)
endwhile
close_framegrabber (AcqHandle)
2.C#部分
配置如上一篇文章,我直接用上次代碼改了,所以沒(méi)有重新配置。
添加控件定時(shí)器,屬性欄如下。定時(shí)器方法不準確,間隔越長(cháng)越不準確。單擊閃電符號,Interval 更改為 40ms,事件將在 40ms 后執行。定時(shí)器開(kāi)啟后,不要采集關(guān)閉,否則會(huì )出現錯誤:HALCON error #2454: HALCON handle has already clear in operatorgrab_image_async


下一步就是雙擊不同的控件,然后將halcon導出的代碼復制粘貼到相應位置即可。
在Halcon導出的C#代碼中,只需要關(guān)注action函數中的代碼即可:
// Local iconic variables
HObject ho_Image=null;
// Local control variables
HTuple hv_AcqHandle = new HTuple(), hv_Width = new HTuple();
HTuple hv_Height = new HTuple();
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Image);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
while ((int)(1) != 0)
{
ho_Image.Dispose();
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
hv_Width.Dispose();hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
}
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Image.Dispose();
hv_AcqHandle.Dispose();
hv_Width.Dispose();
hv_Height.Dispose();
打開(kāi)相機部分的代碼:
#region 打開(kāi)相機
private void button3_Click(object sender, EventArgs e)
{
//清空、打開(kāi)、初始化相機
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Timg);
//Image Acquisition 01: Code generated by Image Acquisition 01
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
8, "rgb", -1, "false", "default", "0030532361ef_Basler_acA160020gc", 0, -1,
out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
textBox1.Text = "相機已打開(kāi)!";
}
#endregion
采集顯示部分代碼:
注意:如果顯示的圖像只是halcon中可以看到的一部分,則說(shuō)明halcon中沒(méi)有使用dev_set_part()函數
#region 采集顯示
///
/// 此部分包含定時(shí)器的觸發(fā)
///
///
///
private void button4_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
//打開(kāi)窗口顯示圖片
HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);
HDevWindowStack.Push(hv_WindowHandle);
}
private void timer1_Tick(object sender, EventArgs e)
{
ho_Timg.Dispose();
//獲取圖片
HOperatorSet.GrabImageAsync(out ho_Timg, hv_AcqHandle, -1);
//獲取圖片長(cháng)寬
hv_Width.Dispose(); hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Timg, out hv_Width, out hv_Height);
//設置獲取的圖片在窗口中顯示大?。ù瞬糠秩绻麤](méi)有,則只能顯示采集到的一部分圖像)
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
//如果窗口打開(kāi),顯示圖片
if (HDevWindowStack.IsOpen())
{
HOperatorSet.DispObj(ho_Timg, HDevWindowStack.GetActive());
textBox1.Text = "實(shí)時(shí)錄像成功!";
}
}
#endregion
關(guān)閉相機部分代碼:
#region 關(guān)閉相機
private void button5_Click(object sender, EventArgs e)
{
//關(guān)閉定時(shí)器這步十分重要,不能少了
timer1.Enabled = false;
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_Timg.Dispose();
textBox1.Text = "關(guān)閉相機成功!";
}
#endregion
Halcon與C#實(shí)時(shí)采集圖像相關(guān)教程Unity與nodejs實(shí)時(shí)連接,實(shí)時(shí)音視頻圖像識別halcon基礎應用及方法經(jīng)驗分享構建直播時(shí)實(shí)時(shí)音視頻平臺(一)實(shí)時(shí)預測用戶(hù)對物品的偏好阿里云推薦引擎幫助您更好的提升業(yè)務(wù)。海量數據實(shí)時(shí)查詢(xún)域名數據庫設計小記(一)Spark實(shí)時(shí)e -商務(wù)數據分析與可視化HTML前端實(shí)時(shí)可視化開(kāi)發(fā)工具Android平臺美顏相機/相機實(shí)時(shí)濾鏡/視頻編解碼/圖片貼/人臉
文章實(shí)時(shí)采集(優(yōu)采云·云采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效抓取網(wǎng)站文章(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 152 次瀏覽 ? 2021-10-29 08:10
優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效爬取網(wǎng)站文章現在大部分內容已經(jīng)完成需要參考很多網(wǎng)頁(yè)文章,那么今天的互聯(lián)網(wǎng)報告開(kāi)發(fā)中如何高效抓取網(wǎng)站文章。本文以UO標題為例。UC頭條是UC瀏覽器團隊打造的新聞資訊推薦平臺,擁有海量新聞資訊內容,通過(guò)阿里大數據推薦和機器學(xué)習算法,為用戶(hù)提供優(yōu)質(zhì)貼心的文章 . 很多用戶(hù)可能有采集UC頭條文章采集的需求,這里有采集文章的文字和圖片。正文可以直接采集,對于圖片,必須先下載圖片網(wǎng)址采集,然后將圖片網(wǎng)址批量轉換成圖片。本文中采集UC標題文章和采集的字段為:標題、出版商、發(fā)布時(shí)間、文章內容、頁(yè)面網(wǎng)址、圖片網(wǎng)址、圖片存儲地址. 采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén)
網(wǎng)頁(yè)打開(kāi)后,默認顯示“推薦”文章。觀(guān)察到該網(wǎng)頁(yè)沒(méi)有翻頁(yè)按鈕,而是通過(guò)下拉加載,不斷加載新內容。因此,我們選擇“打開(kāi)網(wǎng)頁(yè)”這一步,在高級選項中勾選“頁(yè)面加載后向下滾動(dòng)”,滾動(dòng)根據自己的需要設置次數,根據網(wǎng)頁(yè)設置間隔時(shí)間裝載情況。滾動(dòng)方式為“向下滾動(dòng)一屏”,然后點(diǎn)擊“確定”(注意:間隔時(shí)間需要針對網(wǎng)站情況設置,不是絕對。一般情況下間隔時(shí)間>網(wǎng)站 加載時(shí)間夠了,有時(shí)候網(wǎng)速慢,網(wǎng)頁(yè)加載慢,并且需要根據具體情況進(jìn)行調整。詳情請看:優(yōu)采云7.0Tutorial-AJAX滾動(dòng)教程HYPERLINK "/tutorial/ajgd_7.aspx?t=1" /tutorial/ajgd_7.aspx?t =1) 超鏈接 "/article /javascript:;" 第二步:創(chuàng )建翻頁(yè)循環(huán)并提取數據 1) 移動(dòng)鼠標,選擇頁(yè)面上的第一個(gè)文章鏈接。系統會(huì )自動(dòng)識別相似鏈接。在操作提示框中選擇“全選”2)選擇“循環(huán)點(diǎn)擊每個(gè)鏈接”3)系統會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。點(diǎn)擊需要采集的字段(先點(diǎn)擊這里文章title),在操作提示框中選擇“采集元素的文本”<
以下采集是文章 HYPERLINK "/article/javascript:;" 的正文 第三步:提取UC標題文章圖片地址1)接下來(lái)開(kāi)始采集圖片地址。點(diǎn)擊文章中的第一張圖片,然后點(diǎn)擊頁(yè)面上的第二張圖片。在彈出的操作提示框中選擇“采集下圖地址”2)修改字段名,然后點(diǎn)擊“確定”3)現在我們有了采集@ > 到達圖片網(wǎng)址,我們準備批量導出圖片。批量導出圖片時(shí),我們希望將同一文章文章中的圖片放到同一個(gè)文件中,文件夾名稱(chēng)為文章。首先我們選擇標題,在操作提示框中選擇“采集
我們通過(guò)這個(gè)Xpath發(fā)現://DIV[@class='news-list']/UL[1]/LI/DIV[1]/DIV[1]/A,都需要在頁(yè)面文章都位于。3) 將修改后的Xpath復制粘貼到優(yōu)采云所示位置,然后點(diǎn)擊“確定” 第五步:文章Data采集并導出1)點(diǎn)擊左上角“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集” 注意:本地采集占用當前電腦資源繼續采集,如果有采集時(shí)間要求或當前電腦長(cháng)時(shí)間無(wú)法執行采集可以使用云采集功能,云采集在網(wǎng)絡(luò ) 采集 ,沒(méi)有當前電腦的支持,電腦可以關(guān)機,可以設置多個(gè)云節點(diǎn)共享任務(wù),10個(gè)節點(diǎn)相當于10臺電腦分配任務(wù)幫你采集,速度降低到原來(lái)的十分之一;采集 @>數據可以在云端存儲三個(gè)月,隨時(shí)可以導出。采集 完成后會(huì )彈出提示,選擇“導出數據”,選擇“合適的導出方式”,導出采集好的數據。這里我們選擇excel作為導出格式,導出數據如下圖 Step 6: HYPERLINK "/article/javascript:;" 批量將圖片網(wǎng)址轉換為圖片。經(jīng)過(guò)以上操作,我們得到了圖片的URL為采集。接下來(lái)使用優(yōu)采云專(zhuān)用圖片批量下載工具
圖片批量下載工具:HYPERLINK "/s/1c2n60NI" /s/1c2n60NI1)download優(yōu)采云 圖片批量下載工具,雙擊文件中的MyDownloader.app.exe文件打開(kāi)軟件< @2) 打開(kāi)文件菜單,選擇從 EXCEL 導入(目前只支持 EXCEL 格式的文件)3) 進(jìn)行相關(guān)設置。設置完成后,單擊“確定”導入文件。選擇EXCEL文件:導入需要下載圖片地址的EXCEL文件。名稱(chēng):對應數據表的名稱(chēng) File URL 列名稱(chēng):表中對應URL的列名稱(chēng),這里是“圖片網(wǎng)址”保存文件夾名稱(chēng):EXCEL中需要單獨的一欄列出圖片所在的路徑想要保存到文件夾中,
1、操作簡(jiǎn)單,任何人都可以使用:無(wú)需技術(shù)背景,即可上網(wǎng)采集。過(guò)程完全可視化,點(diǎn)擊鼠標即可完成操作,2分鐘即可快速上手。2、功能強大,任意一個(gè)網(wǎng)站都可以:點(diǎn)擊、登錄、翻頁(yè)、識別驗證碼、瀑布流、Ajax腳本,通過(guò)簡(jiǎn)單的設置異步加載數據頁(yè)面。采集。3、云采集,可以關(guān)掉。配置完采集任務(wù)后,可以關(guān)閉,任務(wù)可以在云端執行。龐達云采集集群24*7不間斷運行,無(wú)需擔心IP被封、網(wǎng)絡(luò )中斷。4、特色免費+增值服務(wù),您可以根據自己的需要進(jìn)行選擇。免費版功能齊全,可以滿(mǎn)足用戶(hù)基本的采集需求。同時(shí),還建立了一些增值服務(wù)(如私有云),以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求。 查看全部
文章實(shí)時(shí)采集(優(yōu)采云·云采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效抓取網(wǎng)站文章(組圖))
優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件優(yōu)采云·Cloud采集網(wǎng)絡(luò )爬蟲(chóng)軟件如何高效爬取網(wǎng)站文章現在大部分內容已經(jīng)完成需要參考很多網(wǎng)頁(yè)文章,那么今天的互聯(lián)網(wǎng)報告開(kāi)發(fā)中如何高效抓取網(wǎng)站文章。本文以UO標題為例。UC頭條是UC瀏覽器團隊打造的新聞資訊推薦平臺,擁有海量新聞資訊內容,通過(guò)阿里大數據推薦和機器學(xué)習算法,為用戶(hù)提供優(yōu)質(zhì)貼心的文章 . 很多用戶(hù)可能有采集UC頭條文章采集的需求,這里有采集文章的文字和圖片。正文可以直接采集,對于圖片,必須先下載圖片網(wǎng)址采集,然后將圖片網(wǎng)址批量轉換成圖片。本文中采集UC標題文章和采集的字段為:標題、出版商、發(fā)布時(shí)間、文章內容、頁(yè)面網(wǎng)址、圖片網(wǎng)址、圖片存儲地址. 采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén) 采集UC標題文章和采集的字段為:標題、發(fā)布者、發(fā)布時(shí)間、文章內容、頁(yè)面地址、圖片地址、圖片存儲地址。采集網(wǎng)站:/使用功能點(diǎn):Xpath HYPERLINK "/tutorialdetail-1/xpathrm1.html" xpath入門(mén)教程1/tutorialdetail-1/xpathrm1.html HYPERLINK " /tutorialdetail-1/xpathrm1.html" xpath2/tutorialdetail-1/xpathrm1.html 超鏈接 "/tutorialdetail-1/xdxpath-7.html" 入門(mén)
網(wǎng)頁(yè)打開(kāi)后,默認顯示“推薦”文章。觀(guān)察到該網(wǎng)頁(yè)沒(méi)有翻頁(yè)按鈕,而是通過(guò)下拉加載,不斷加載新內容。因此,我們選擇“打開(kāi)網(wǎng)頁(yè)”這一步,在高級選項中勾選“頁(yè)面加載后向下滾動(dòng)”,滾動(dòng)根據自己的需要設置次數,根據網(wǎng)頁(yè)設置間隔時(shí)間裝載情況。滾動(dòng)方式為“向下滾動(dòng)一屏”,然后點(diǎn)擊“確定”(注意:間隔時(shí)間需要針對網(wǎng)站情況設置,不是絕對。一般情況下間隔時(shí)間>網(wǎng)站 加載時(shí)間夠了,有時(shí)候網(wǎng)速慢,網(wǎng)頁(yè)加載慢,并且需要根據具體情況進(jìn)行調整。詳情請看:優(yōu)采云7.0Tutorial-AJAX滾動(dòng)教程HYPERLINK "/tutorial/ajgd_7.aspx?t=1" /tutorial/ajgd_7.aspx?t =1) 超鏈接 "/article /javascript:;" 第二步:創(chuàng )建翻頁(yè)循環(huán)并提取數據 1) 移動(dòng)鼠標,選擇頁(yè)面上的第一個(gè)文章鏈接。系統會(huì )自動(dòng)識別相似鏈接。在操作提示框中選擇“全選”2)選擇“循環(huán)點(diǎn)擊每個(gè)鏈接”3)系統會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。點(diǎn)擊需要采集的字段(先點(diǎn)擊這里文章title),在操作提示框中選擇“采集元素的文本”<
以下采集是文章 HYPERLINK "/article/javascript:;" 的正文 第三步:提取UC標題文章圖片地址1)接下來(lái)開(kāi)始采集圖片地址。點(diǎn)擊文章中的第一張圖片,然后點(diǎn)擊頁(yè)面上的第二張圖片。在彈出的操作提示框中選擇“采集下圖地址”2)修改字段名,然后點(diǎn)擊“確定”3)現在我們有了采集@ > 到達圖片網(wǎng)址,我們準備批量導出圖片。批量導出圖片時(shí),我們希望將同一文章文章中的圖片放到同一個(gè)文件中,文件夾名稱(chēng)為文章。首先我們選擇標題,在操作提示框中選擇“采集
我們通過(guò)這個(gè)Xpath發(fā)現://DIV[@class='news-list']/UL[1]/LI/DIV[1]/DIV[1]/A,都需要在頁(yè)面文章都位于。3) 將修改后的Xpath復制粘貼到優(yōu)采云所示位置,然后點(diǎn)擊“確定” 第五步:文章Data采集并導出1)點(diǎn)擊左上角“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集” 注意:本地采集占用當前電腦資源繼續采集,如果有采集時(shí)間要求或當前電腦長(cháng)時(shí)間無(wú)法執行采集可以使用云采集功能,云采集在網(wǎng)絡(luò ) 采集 ,沒(méi)有當前電腦的支持,電腦可以關(guān)機,可以設置多個(gè)云節點(diǎn)共享任務(wù),10個(gè)節點(diǎn)相當于10臺電腦分配任務(wù)幫你采集,速度降低到原來(lái)的十分之一;采集 @>數據可以在云端存儲三個(gè)月,隨時(shí)可以導出。采集 完成后會(huì )彈出提示,選擇“導出數據”,選擇“合適的導出方式”,導出采集好的數據。這里我們選擇excel作為導出格式,導出數據如下圖 Step 6: HYPERLINK "/article/javascript:;" 批量將圖片網(wǎng)址轉換為圖片。經(jīng)過(guò)以上操作,我們得到了圖片的URL為采集。接下來(lái)使用優(yōu)采云專(zhuān)用圖片批量下載工具
圖片批量下載工具:HYPERLINK "/s/1c2n60NI" /s/1c2n60NI1)download優(yōu)采云 圖片批量下載工具,雙擊文件中的MyDownloader.app.exe文件打開(kāi)軟件< @2) 打開(kāi)文件菜單,選擇從 EXCEL 導入(目前只支持 EXCEL 格式的文件)3) 進(jìn)行相關(guān)設置。設置完成后,單擊“確定”導入文件。選擇EXCEL文件:導入需要下載圖片地址的EXCEL文件。名稱(chēng):對應數據表的名稱(chēng) File URL 列名稱(chēng):表中對應URL的列名稱(chēng),這里是“圖片網(wǎng)址”保存文件夾名稱(chēng):EXCEL中需要單獨的一欄列出圖片所在的路徑想要保存到文件夾中,
1、操作簡(jiǎn)單,任何人都可以使用:無(wú)需技術(shù)背景,即可上網(wǎng)采集。過(guò)程完全可視化,點(diǎn)擊鼠標即可完成操作,2分鐘即可快速上手。2、功能強大,任意一個(gè)網(wǎng)站都可以:點(diǎn)擊、登錄、翻頁(yè)、識別驗證碼、瀑布流、Ajax腳本,通過(guò)簡(jiǎn)單的設置異步加載數據頁(yè)面。采集。3、云采集,可以關(guān)掉。配置完采集任務(wù)后,可以關(guān)閉,任務(wù)可以在云端執行。龐達云采集集群24*7不間斷運行,無(wú)需擔心IP被封、網(wǎng)絡(luò )中斷。4、特色免費+增值服務(wù),您可以根據自己的需要進(jìn)行選擇。免費版功能齊全,可以滿(mǎn)足用戶(hù)基本的采集需求。同時(shí),還建立了一些增值服務(wù)(如私有云),以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求。
文章實(shí)時(shí)采集(p2p貸款如何讓你看到的不僅僅是你想看到)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2021-10-27 04:05
文章實(shí)時(shí)采集人們的無(wú)形財富并保存。請認真閱讀此文,及時(shí)閱讀最新的渠道策略和工具策略,對于你未來(lái)的理財非常有幫助。人們在網(wǎng)上獲取有價(jià)值的信息。所以讓你看到的不僅僅是你想看到的。就算不那么好,也是必要的。讓我們先來(lái)看一下以下這張圖:來(lái)自一個(gè)很有個(gè)性的網(wǎng)站,它內容全是你自己的財務(wù)狀況,收入和支出情況。它也是一個(gè)非常有名氣的服務(wù)供應商,它的名字叫p2p貸款。
在這個(gè)網(wǎng)站上的所有公司名稱(chēng)全是獨特的,但它們的所有內容全是相同的。我相信這樣做會(huì )有助于你解決風(fēng)險和預期成本。風(fēng)險:風(fēng)險在于,我不確定我看到的是不是我想看到的。但我在網(wǎng)上找到了我想看到的東西。支出:收入支出全是相同的。(實(shí)際上要比收入支出總量更少)。所以不要在這樣的一個(gè)服務(wù)上投入太多精力。并且分散到很多低風(fēng)險的貸款上,這會(huì )提高我們的收益。
當然最好選擇那些產(chǎn)品太豐富而有一些小問(wèn)題的網(wǎng)站。重要的是,人們不會(huì )將這個(gè)服務(wù)當成一個(gè)額外的放貸者來(lái)看待。而是將它看成一個(gè)有生意的好客戶(hù)。同時(shí)他們也會(huì )為了符合我們的規則和盡可能多的貸款資質(zhì)來(lái)創(chuàng )建。如果你要征信違約的,很遺憾,你的錢(qián)是不會(huì )到另一個(gè)人手里。換句話(huà)說(shuō),我建議你提供個(gè)人信息,還是要看那些需要的細節情況。
如果你已經(jīng)做到了,就應該盡量多提供這些數據和信息,這就像如果你已經(jīng)成為一個(gè)常人,你就應該能基本做到一樣。當然比你想象的那樣,你提供信息的人們會(huì )要求更多。這個(gè)時(shí)候你就不得不提供給他們我們需要的數據,這就是后話(huà)了?;氐交A設施角度,你要問(wèn)自己,那么多公司,不同的風(fēng)險偏好,如何保存這些信息?你將他們分割到盡可能多的貸款上嗎?有兩種做法。
1.將這些貸款不要提供給不想對他們負責的人,就比如要設置自己的賬戶(hù),它的利率,還款方式。2.將他們打包在一起。3.或者你再其他地方存儲這些數據的時(shí)候,只分發(fā)前2種。4.不對他們負責5.不對他們負責6.不對他們負責一個(gè)更快捷的方法是購買(mǎi)短期貸款,然后把每月的款項打到那里7.將短期貸款作為其他可支配貸款的替代品而不是存在自己的賬戶(hù)8.重要的是要記住,到頭來(lái)他們都只是一次性貸款。
如果你不把他們放到新貸款,那你之前所有的貸款都會(huì )消失。他們也不再能幫助你。這意味著(zhù)你把所有的短期貸款一次性購買(mǎi)一次性?xún)斶€,而不是分別購買(mǎi)。9.銀行的支持,找一個(gè)靠譜的信用卡公司或者支付公司,讓他們們看看你的資金狀況,然后幫你審批貸款。10.沒(méi)有誰(shuí)需要你花錢(qián)買(mǎi)他們,重要的是你的錢(qián)。11.不要將短期貸款放在不確定的貸款機構。你正在設置你的賬戶(hù),通常。 查看全部
文章實(shí)時(shí)采集(p2p貸款如何讓你看到的不僅僅是你想看到)
文章實(shí)時(shí)采集人們的無(wú)形財富并保存。請認真閱讀此文,及時(shí)閱讀最新的渠道策略和工具策略,對于你未來(lái)的理財非常有幫助。人們在網(wǎng)上獲取有價(jià)值的信息。所以讓你看到的不僅僅是你想看到的。就算不那么好,也是必要的。讓我們先來(lái)看一下以下這張圖:來(lái)自一個(gè)很有個(gè)性的網(wǎng)站,它內容全是你自己的財務(wù)狀況,收入和支出情況。它也是一個(gè)非常有名氣的服務(wù)供應商,它的名字叫p2p貸款。
在這個(gè)網(wǎng)站上的所有公司名稱(chēng)全是獨特的,但它們的所有內容全是相同的。我相信這樣做會(huì )有助于你解決風(fēng)險和預期成本。風(fēng)險:風(fēng)險在于,我不確定我看到的是不是我想看到的。但我在網(wǎng)上找到了我想看到的東西。支出:收入支出全是相同的。(實(shí)際上要比收入支出總量更少)。所以不要在這樣的一個(gè)服務(wù)上投入太多精力。并且分散到很多低風(fēng)險的貸款上,這會(huì )提高我們的收益。
當然最好選擇那些產(chǎn)品太豐富而有一些小問(wèn)題的網(wǎng)站。重要的是,人們不會(huì )將這個(gè)服務(wù)當成一個(gè)額外的放貸者來(lái)看待。而是將它看成一個(gè)有生意的好客戶(hù)。同時(shí)他們也會(huì )為了符合我們的規則和盡可能多的貸款資質(zhì)來(lái)創(chuàng )建。如果你要征信違約的,很遺憾,你的錢(qián)是不會(huì )到另一個(gè)人手里。換句話(huà)說(shuō),我建議你提供個(gè)人信息,還是要看那些需要的細節情況。
如果你已經(jīng)做到了,就應該盡量多提供這些數據和信息,這就像如果你已經(jīng)成為一個(gè)常人,你就應該能基本做到一樣。當然比你想象的那樣,你提供信息的人們會(huì )要求更多。這個(gè)時(shí)候你就不得不提供給他們我們需要的數據,這就是后話(huà)了?;氐交A設施角度,你要問(wèn)自己,那么多公司,不同的風(fēng)險偏好,如何保存這些信息?你將他們分割到盡可能多的貸款上嗎?有兩種做法。
1.將這些貸款不要提供給不想對他們負責的人,就比如要設置自己的賬戶(hù),它的利率,還款方式。2.將他們打包在一起。3.或者你再其他地方存儲這些數據的時(shí)候,只分發(fā)前2種。4.不對他們負責5.不對他們負責6.不對他們負責一個(gè)更快捷的方法是購買(mǎi)短期貸款,然后把每月的款項打到那里7.將短期貸款作為其他可支配貸款的替代品而不是存在自己的賬戶(hù)8.重要的是要記住,到頭來(lái)他們都只是一次性貸款。
如果你不把他們放到新貸款,那你之前所有的貸款都會(huì )消失。他們也不再能幫助你。這意味著(zhù)你把所有的短期貸款一次性購買(mǎi)一次性?xún)斶€,而不是分別購買(mǎi)。9.銀行的支持,找一個(gè)靠譜的信用卡公司或者支付公司,讓他們們看看你的資金狀況,然后幫你審批貸款。10.沒(méi)有誰(shuí)需要你花錢(qián)買(mǎi)他們,重要的是你的錢(qián)。11.不要將短期貸款放在不確定的貸款機構。你正在設置你的賬戶(hù),通常。
文章實(shí)時(shí)采集( 80集Python基礎入門(mén)視頻教學(xué)點(diǎn)免費觀(guān)看事百科段子)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 173 次瀏覽 ? 2021-10-24 11:17
80集Python基礎入門(mén)視頻教學(xué)點(diǎn)免費觀(guān)看事百科段子)
Python爬蟲(chóng)實(shí)戰練習:采集尷尬百科段數據
更新時(shí)間:2021年10月21日10:45:35 作者:松鼠愛(ài)吃餅干
讀一萬(wàn)本書(shū)不如行萬(wàn)里。僅僅學(xué)習書(shū)中的理論是遠遠不夠的。只有在實(shí)戰中才能獲得能力的提升。段落的數據,可以檢查過(guò)程中的差距,提高水平
內容
知識點(diǎn)
1.爬行的基本步驟
2.請求模塊
3.解析模塊
4.xpath數據分析方法
5.分頁(yè)功能
爬蟲(chóng)的基本步驟:
1.獲取網(wǎng)頁(yè)地址(維基百科段落地址)
2.發(fā)送請求
3.數據分析
4.本地保存
爬蟲(chóng)代碼導入需要的模塊
import re
import requests
import parsel
獲取網(wǎng)址
url = 'https://www.qiushibaike.com/text/'
# 請求頭 偽裝客戶(hù)端向服務(wù)器發(fā)送請求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
發(fā)送請求
requ = requests.get(url=url, headers=headers).text
數據分析
sel = parsel.Selector(requ) # 解析對象
href = sel.xpath('//body/div/div/div[2]/div/a[1]/@href').getall()
for html in href:
txt_ + html
requ2 = requests.get(url=txt_href, headers=headers).text
sel2 = parsel.Selector(requ2)
title = sel2.xpath('//body/div[2]/div/div[2]/h1/text()').get().strip()
title = re.sub(r'[|/\:?*]','_',title)
# content = sel2.xpath('//div[@class="content"]/text()').getall()
content = sel2.xpath('//body/div[2]/div/div[2]/div[2]/div[1]/div/text()').getall()
contents = '\n'.join(content)
保存數據
with open('糗事百科text\\'+title + '.txt', mode='w', encoding='utf-8') as fp:
fp.write(contents)
print(title, '下載成功')
運行代碼獲取數據
【付費VIP完整版】只要看完就能學(xué)會(huì )的教程,80集Python基礎入門(mén)視頻教學(xué)
點(diǎn)擊這里免費在線(xiàn)觀(guān)看
至此,這篇關(guān)于Python爬蟲(chóng)實(shí)戰演練采集尷尬百科段落數據文章的介紹就到這里,更多Python相關(guān)采集尷尬百科段落內容,請搜索腳本首頁(yè)上一頁(yè)< @文章 或繼續瀏覽下方的相關(guān)文章,希望大家以后多多支持Scripthome! 查看全部
文章實(shí)時(shí)采集(
80集Python基礎入門(mén)視頻教學(xué)點(diǎn)免費觀(guān)看事百科段子)
Python爬蟲(chóng)實(shí)戰練習:采集尷尬百科段數據
更新時(shí)間:2021年10月21日10:45:35 作者:松鼠愛(ài)吃餅干
讀一萬(wàn)本書(shū)不如行萬(wàn)里。僅僅學(xué)習書(shū)中的理論是遠遠不夠的。只有在實(shí)戰中才能獲得能力的提升。段落的數據,可以檢查過(guò)程中的差距,提高水平
內容
知識點(diǎn)
1.爬行的基本步驟
2.請求模塊
3.解析模塊
4.xpath數據分析方法
5.分頁(yè)功能
爬蟲(chóng)的基本步驟:
1.獲取網(wǎng)頁(yè)地址(維基百科段落地址)
2.發(fā)送請求
3.數據分析
4.本地保存
爬蟲(chóng)代碼導入需要的模塊
import re
import requests
import parsel
獲取網(wǎng)址
url = 'https://www.qiushibaike.com/text/'
# 請求頭 偽裝客戶(hù)端向服務(wù)器發(fā)送請求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
發(fā)送請求
requ = requests.get(url=url, headers=headers).text
數據分析
sel = parsel.Selector(requ) # 解析對象
href = sel.xpath('//body/div/div/div[2]/div/a[1]/@href').getall()
for html in href:
txt_ + html
requ2 = requests.get(url=txt_href, headers=headers).text
sel2 = parsel.Selector(requ2)
title = sel2.xpath('//body/div[2]/div/div[2]/h1/text()').get().strip()
title = re.sub(r'[|/\:?*]','_',title)
# content = sel2.xpath('//div[@class="content"]/text()').getall()
content = sel2.xpath('//body/div[2]/div/div[2]/div[2]/div[1]/div/text()').getall()
contents = '\n'.join(content)
保存數據
with open('糗事百科text\\'+title + '.txt', mode='w', encoding='utf-8') as fp:
fp.write(contents)
print(title, '下載成功')
運行代碼獲取數據


【付費VIP完整版】只要看完就能學(xué)會(huì )的教程,80集Python基礎入門(mén)視頻教學(xué)
點(diǎn)擊這里免費在線(xiàn)觀(guān)看
至此,這篇關(guān)于Python爬蟲(chóng)實(shí)戰演練采集尷尬百科段落數據文章的介紹就到這里,更多Python相關(guān)采集尷尬百科段落內容,請搜索腳本首頁(yè)上一頁(yè)< @文章 或繼續瀏覽下方的相關(guān)文章,希望大家以后多多支持Scripthome!
文章實(shí)時(shí)采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計和實(shí)現)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 187 次瀏覽 ? 2021-10-23 11:11
本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,使用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
一、 方案說(shuō)明(一) 概述 本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,并傳輸到CKafka,將CKafka數據連接到Oceanus(Flink)進(jìn)行流計算,通過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理輸出到Elasticsearch,最后通過(guò)Kibana頁(yè)面查詢(xún)結果。計劃中使用Promethus監控系統指標,如作為流計算 Oceanus 作業(yè)運行狀態(tài),Cloud Grafana 監控 CVM 或業(yè)務(wù)應用指標。
(二)方案架構
二、前期準備 在實(shí)施本方案之前,請確保已經(jīng)創(chuàng )建并配置了相應的大數據組件。(一)創(chuàng )建私網(wǎng)VPC 私網(wǎng)VPC是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間,建議在搭建CKafka、流計算Oceanus、Elasticsearch集群等時(shí)選擇同一個(gè)VPC服務(wù).詳情創(chuàng )建步驟請參考幫助文檔()。(二)創(chuàng )建CKafka實(shí)例Kafka建議選擇最新的2.4.1版本,與Filebeat兼容性更好< @采集工具購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info(三) 創(chuàng )建流計算Oceanus集群 流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具?;贏(yíng)pache Flink,一站式開(kāi)發(fā),無(wú)縫連接、亞秒級延遲、低成本、安全穩定的企業(yè)級實(shí)時(shí)大數據分析平臺。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。在流計算中在Oceanus控制臺的【集群管理】->【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。(四)在Elasticsearch控制臺創(chuàng )建Elasticsearch實(shí)例,點(diǎn)擊左上角【新建】創(chuàng )建集群,具體步驟請參考幫助文檔()。(五)
為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
(六)創(chuàng )建獨立的Grafana資源獨立Grafana在灰色發(fā)布中,需要在Grafana管理頁(yè)面()單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
?。ㄆ撸┌惭b配置Filebeat Filebeat是一個(gè)輕量級的日志數據工具采集,通過(guò)監控指定位置的文件來(lái)采集信息,在這個(gè)VPC下提供給需要監控主機的云服務(wù)器信息及應用信息 安裝Filebeat 安裝方法一:下載Filebeat 下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】->【beats管理】中提供的Filebeat,本例采用方法一。下載到CVM然后配置Filebeat,在filebeat.yml文件中添加如下配置項:
# 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:programdataelasticsearchlogs*
# 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka 版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的 IP 地址+端口topic: 'topic-app-info' # 請填寫(xiě)實(shí)際的 topic
請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
三、項目實(shí)現
接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
(一)Filebeat 采集 數據
1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集jar應用日志、JVM使用情況、監聽(tīng)端口等,詳情請參考Filebeat官網(wǎng)
()。
# filebeat 啟動(dòng)<br />./filebeat -e -c filebeat.yml<br /><br /># 監控系統信息寫(xiě)入 test.log 文件<br />top -d 10 >>/tmp/test.log
2、 進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
Filebeat采集中Kafka的數據格式:
{ "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
(二)創(chuàng )建 Flink SQL 作業(yè)
使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。1、 定義Source,根據Filebeat中json消息的格式構造Flink Table Source。
CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( 'connector' = 'kafka', -- 可選 'kafka','kafka-0.11'. 注意選擇對應的內置 Connector 'topic' = 'topic-app-info', -- 替換為您要消費的 Topic 'scan.startup.mode' = 'earliest-offset', 'properties.bootstrap.servers' = '10.0.0.29:9092', 'properties.group.id' = 'oceanus_group2', -- 必選參數, 一定要指定 Group ID 'format' = 'json', 'json.ignore-parse-errors' = 'true', -- 忽略 JSON 結構解析異常 'json.fail-on-missing-field' = 'false' -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
2、定義接收器
CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( 'connector.type' = 'elasticsearch', 'connector.version' = '6', 'connector.hosts' = 'http://10.0.0.175:9200', 'connector.index' = 'oceanus_test2', 'connector.document-type' = '_doc', 'connector.username' = 'elastic', 'connector.password' = 'yourpassword', 'update-mode' = 'upsert', -- 可選無(wú)主鍵的 'append' 模式,或有主鍵的 'upsert' 模式 'connector.key-null-literal' = 'n/a', -- 主鍵為 null 時(shí)的替代字符串,默認是 'null' 'format.type' = 'json' -- 輸出數據格式, 目前只支持 'json');
3、處理業(yè)務(wù)數據
INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
4、配置作業(yè)參數【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka 注意:根據實(shí)際版本選擇5、查詢(xún)ES數據,在Kibana上查詢(xún)數據ES控制臺頁(yè)面,或進(jìn)入同一子網(wǎng)的CVM下,使用以下命令查詢(xún):
# 查詢(xún)索引 username:password 請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H 'Content-Type: application/json' -d'{ "query": { "match_all": {}}, "size": 10}'
更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。(三)系統指標監控本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。Prometheus是一個(gè)非常靈活的時(shí)序數據庫,通常用于監控數據的存儲、計算和告警。流計算Oceanus建議用戶(hù)使用騰訊云監控提供的Prometheus服務(wù),避免部署和運維成本,同時(shí)還支持騰訊云的通知模板,可以通過(guò)短信、電話(huà)、郵件等方式輕松到達不同的報警信息、企業(yè)微信機器人等 Receiver. 監控配置 流計算 Oceanus 作業(yè)監控
除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
2、 在任何流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(灰度級Grafana這里不能輸入),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
()。
3、3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【編輯】設置不同的Panel,優(yōu)化顯示效果。
告警配置1、進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】 ] 配置相關(guān)信息。具體操作請參考訪(fǎng)問(wèn)Prometheus自定義監控()。
2、設置報警通知。選擇[選擇模板]或[新建]設置通知模板。
3、短信通知信息
?。ㄋ模I(yè)務(wù)指標監控通過(guò)Filebeat采集給應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
1、Grafana 配置 ES 數據源。進(jìn)入灰色發(fā)布中的Grafana控制臺(),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】 ,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,添加數據源。
2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
3、 顯示效果如下:
注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
四、總結 本方案嘗試了系統監控指標和業(yè)務(wù)監控指標兩個(gè)監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Prometus相關(guān)操作。此外,需要注意的是:
火熱進(jìn)行中↓↓
點(diǎn)擊文末“閱讀原文”,了解更多騰訊云流媒體Oceanus~騰訊云大數據
長(cháng)按二維碼 查看全部
文章實(shí)時(shí)采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計和實(shí)現)
本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,使用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
一、 方案說(shuō)明(一) 概述 本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,并傳輸到CKafka,將CKafka數據連接到Oceanus(Flink)進(jìn)行流計算,通過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理輸出到Elasticsearch,最后通過(guò)Kibana頁(yè)面查詢(xún)結果。計劃中使用Promethus監控系統指標,如作為流計算 Oceanus 作業(yè)運行狀態(tài),Cloud Grafana 監控 CVM 或業(yè)務(wù)應用指標。

(二)方案架構

二、前期準備 在實(shí)施本方案之前,請確保已經(jīng)創(chuàng )建并配置了相應的大數據組件。(一)創(chuàng )建私網(wǎng)VPC 私網(wǎng)VPC是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間,建議在搭建CKafka、流計算Oceanus、Elasticsearch集群等時(shí)選擇同一個(gè)VPC服務(wù).詳情創(chuàng )建步驟請參考幫助文檔()。(二)創(chuàng )建CKafka實(shí)例Kafka建議選擇最新的2.4.1版本,與Filebeat兼容性更好< @采集工具購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info(三) 創(chuàng )建流計算Oceanus集群 流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具?;贏(yíng)pache Flink,一站式開(kāi)發(fā),無(wú)縫連接、亞秒級延遲、低成本、安全穩定的企業(yè)級實(shí)時(shí)大數據分析平臺。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。在流計算中在Oceanus控制臺的【集群管理】->【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。(四)在Elasticsearch控制臺創(chuàng )建Elasticsearch實(shí)例,點(diǎn)擊左上角【新建】創(chuàng )建集群,具體步驟請參考幫助文檔()。(五)
為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
(六)創(chuàng )建獨立的Grafana資源獨立Grafana在灰色發(fā)布中,需要在Grafana管理頁(yè)面()單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
?。ㄆ撸┌惭b配置Filebeat Filebeat是一個(gè)輕量級的日志數據工具采集,通過(guò)監控指定位置的文件來(lái)采集信息,在這個(gè)VPC下提供給需要監控主機的云服務(wù)器信息及應用信息 安裝Filebeat 安裝方法一:下載Filebeat 下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】->【beats管理】中提供的Filebeat,本例采用方法一。下載到CVM然后配置Filebeat,在filebeat.yml文件中添加如下配置項:
# 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:programdataelasticsearchlogs*
# 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka 版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的 IP 地址+端口topic: 'topic-app-info' # 請填寫(xiě)實(shí)際的 topic
請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
三、項目實(shí)現
接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
(一)Filebeat 采集 數據
1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集jar應用日志、JVM使用情況、監聽(tīng)端口等,詳情請參考Filebeat官網(wǎng)
()。
# filebeat 啟動(dòng)<br />./filebeat -e -c filebeat.yml<br /><br /># 監控系統信息寫(xiě)入 test.log 文件<br />top -d 10 >>/tmp/test.log
2、 進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
Filebeat采集中Kafka的數據格式:
{ "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
(二)創(chuàng )建 Flink SQL 作業(yè)
使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。1、 定義Source,根據Filebeat中json消息的格式構造Flink Table Source。
CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( 'connector' = 'kafka', -- 可選 'kafka','kafka-0.11'. 注意選擇對應的內置 Connector 'topic' = 'topic-app-info', -- 替換為您要消費的 Topic 'scan.startup.mode' = 'earliest-offset', 'properties.bootstrap.servers' = '10.0.0.29:9092', 'properties.group.id' = 'oceanus_group2', -- 必選參數, 一定要指定 Group ID 'format' = 'json', 'json.ignore-parse-errors' = 'true', -- 忽略 JSON 結構解析異常 'json.fail-on-missing-field' = 'false' -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
2、定義接收器
CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( 'connector.type' = 'elasticsearch', 'connector.version' = '6', 'connector.hosts' = 'http://10.0.0.175:9200', 'connector.index' = 'oceanus_test2', 'connector.document-type' = '_doc', 'connector.username' = 'elastic', 'connector.password' = 'yourpassword', 'update-mode' = 'upsert', -- 可選無(wú)主鍵的 'append' 模式,或有主鍵的 'upsert' 模式 'connector.key-null-literal' = 'n/a', -- 主鍵為 null 時(shí)的替代字符串,默認是 'null' 'format.type' = 'json' -- 輸出數據格式, 目前只支持 'json');
3、處理業(yè)務(wù)數據
INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
4、配置作業(yè)參數【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka 注意:根據實(shí)際版本選擇5、查詢(xún)ES數據,在Kibana上查詢(xún)數據ES控制臺頁(yè)面,或進(jìn)入同一子網(wǎng)的CVM下,使用以下命令查詢(xún):
# 查詢(xún)索引 username:password 請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H 'Content-Type: application/json' -d'{ "query": { "match_all": {}}, "size": 10}'
更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。(三)系統指標監控本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。Prometheus是一個(gè)非常靈活的時(shí)序數據庫,通常用于監控數據的存儲、計算和告警。流計算Oceanus建議用戶(hù)使用騰訊云監控提供的Prometheus服務(wù),避免部署和運維成本,同時(shí)還支持騰訊云的通知模板,可以通過(guò)短信、電話(huà)、郵件等方式輕松到達不同的報警信息、企業(yè)微信機器人等 Receiver. 監控配置 流計算 Oceanus 作業(yè)監控
除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
2、 在任何流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(灰度級Grafana這里不能輸入),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
()。

3、3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【編輯】設置不同的Panel,優(yōu)化顯示效果。

告警配置1、進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】 ] 配置相關(guān)信息。具體操作請參考訪(fǎng)問(wèn)Prometheus自定義監控()。

2、設置報警通知。選擇[選擇模板]或[新建]設置通知模板。

3、短信通知信息
?。ㄋ模I(yè)務(wù)指標監控通過(guò)Filebeat采集給應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
1、Grafana 配置 ES 數據源。進(jìn)入灰色發(fā)布中的Grafana控制臺(),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】 ,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,添加數據源。
2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
3、 顯示效果如下:

注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
四、總結 本方案嘗試了系統監控指標和業(yè)務(wù)監控指標兩個(gè)監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Prometus相關(guān)操作。此外,需要注意的是:
火熱進(jìn)行中↓↓
點(diǎn)擊文末“閱讀原文”,了解更多騰訊云流媒體Oceanus~騰訊云大數據
長(cháng)按二維碼
文章實(shí)時(shí)采集(查找自媒體爆文素材比較方便的渠道,合理的使用)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 325 次瀏覽 ? 2021-10-22 00:03
從事自媒體運營(yíng)行業(yè),每天都需要不斷學(xué)習新知識,比如標題的寫(xiě)作技巧是什么,如何切入熱點(diǎn)跟蹤角度,這些都需要積極閱讀材料和然后學(xué)習,但學(xué)習的目的歸根結底還是你自己的實(shí)際操作。如果我們每天都需要大量的文章素材,而且都是優(yōu)質(zhì)的爆文素材,我們不可能天天到處搜索,那么有沒(méi)有什么工具可以實(shí)現呢?
今天小編為大家推薦三個(gè)采集站點(diǎn)自媒體爆文。當你需要大量爆文資料參考時(shí),只要根據自己的行業(yè)數據想知道關(guān)鍵詞都可以看到。
1、簡(jiǎn)單的文章
易傳采集擁有市面上所有主流自媒體平臺的所有爆文數據,并提供基礎閱讀分析數據和互動(dòng)數據。參考采集的爆文的分析,為我自己的創(chuàng )作提供靈感和方向。
您也可以根據您的特定領(lǐng)域搜索您想要的爆文材料。除了采集爆文,您還可以提供文章編輯、短視頻素材采集和下載、文章原創(chuàng )度檢測和真實(shí)-時(shí)間熱點(diǎn)追蹤功能,是一款非常好用的自媒體輔助工具。
2、西瓜助手
西瓜助手的西瓜數據也是采集很多領(lǐng)域的爆文素材。不同的是它有提取標簽的功能,而且在一些有用的工具中還有熱門(mén)標題的更新,聊勝于無(wú)。畢竟,不是每個(gè)人都可以使用它。
3、樂(lè )觀(guān)
Optimism的優(yōu)勢之一是網(wǎng)站的部分功能無(wú)需注冊即可應用,詳細功能需要登錄。Optimism 沒(méi)有很多內容篩選,但是可以綁定一些邊緣自媒體平臺,然后一鍵將內容同步到這些平臺。
以上三個(gè)網(wǎng)站是小編覺(jué)得找自媒體爆文素材比較方便的渠道。對于剛剛進(jìn)入行業(yè)的新人來(lái)說(shuō),合理使用這三個(gè)。一個(gè)網(wǎng)站可以大大提高自己的運營(yíng)效率。 查看全部
文章實(shí)時(shí)采集(查找自媒體爆文素材比較方便的渠道,合理的使用)
從事自媒體運營(yíng)行業(yè),每天都需要不斷學(xué)習新知識,比如標題的寫(xiě)作技巧是什么,如何切入熱點(diǎn)跟蹤角度,這些都需要積極閱讀材料和然后學(xué)習,但學(xué)習的目的歸根結底還是你自己的實(shí)際操作。如果我們每天都需要大量的文章素材,而且都是優(yōu)質(zhì)的爆文素材,我們不可能天天到處搜索,那么有沒(méi)有什么工具可以實(shí)現呢?

今天小編為大家推薦三個(gè)采集站點(diǎn)自媒體爆文。當你需要大量爆文資料參考時(shí),只要根據自己的行業(yè)數據想知道關(guān)鍵詞都可以看到。
1、簡(jiǎn)單的文章
易傳采集擁有市面上所有主流自媒體平臺的所有爆文數據,并提供基礎閱讀分析數據和互動(dòng)數據。參考采集的爆文的分析,為我自己的創(chuàng )作提供靈感和方向。
您也可以根據您的特定領(lǐng)域搜索您想要的爆文材料。除了采集爆文,您還可以提供文章編輯、短視頻素材采集和下載、文章原創(chuàng )度檢測和真實(shí)-時(shí)間熱點(diǎn)追蹤功能,是一款非常好用的自媒體輔助工具。
2、西瓜助手
西瓜助手的西瓜數據也是采集很多領(lǐng)域的爆文素材。不同的是它有提取標簽的功能,而且在一些有用的工具中還有熱門(mén)標題的更新,聊勝于無(wú)。畢竟,不是每個(gè)人都可以使用它。
3、樂(lè )觀(guān)
Optimism的優(yōu)勢之一是網(wǎng)站的部分功能無(wú)需注冊即可應用,詳細功能需要登錄。Optimism 沒(méi)有很多內容篩選,但是可以綁定一些邊緣自媒體平臺,然后一鍵將內容同步到這些平臺。
以上三個(gè)網(wǎng)站是小編覺(jué)得找自媒體爆文素材比較方便的渠道。對于剛剛進(jìn)入行業(yè)的新人來(lái)說(shuō),合理使用這三個(gè)。一個(gè)網(wǎng)站可以大大提高自己的運營(yíng)效率。
文章實(shí)時(shí)采集(基于MIT開(kāi)源協(xié)議發(fā)布NSQ的數據流模型結構如下圖解析 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 161 次瀏覽 ? 2021-10-12 21:19
)
NSQ 是一個(gè)基于 Go 語(yǔ)言的分布式實(shí)時(shí)消息平臺。它是基于 MIT 開(kāi)源協(xié)議發(fā)布的。代碼托管在 GitHub 上。最新版本為0.3.1。NSQ 可用于大型系統中的實(shí)時(shí)消息服務(wù),每天可處理數億條消息。它的設計目標是為在分布式環(huán)境中運行的去中心化服務(wù)提供強大的基礎設施。NSQ具有分布式、去中心化的拓撲結構,具有無(wú)單點(diǎn)故障、容錯、高可用、消息傳遞可靠等特點(diǎn)。NSQ 非常易于配置和部署,并且具有最大的靈活性,支持多種消息傳遞協(xié)議。此外,官方還提供了開(kāi)箱即用的 Go 和 Python 庫。
NSQ 由四個(gè)重要組件組成:
NSQ的主要特點(diǎn)如下:
為了實(shí)現高效的分布式消息服務(wù),NSQ 實(shí)現了合理的智能權衡,使其能夠在生產(chǎn)環(huán)境中得到充分的應用。具體內容如下:
官方和第三方也為NSQ開(kāi)發(fā)了很多客戶(hù)端函數庫,比如官方的基于HTTP、Go客戶(hù)端go-nsq、Python客戶(hù)端pynsq、基于Node.js的JavaScript客戶(hù)端nsqjs,以及異步C客戶(hù)端libnsq、Java客戶(hù)端nsq -java 和許多基于各種語(yǔ)言的第三方客戶(hù)端函數庫。更多客戶(hù)端函數庫請點(diǎn)擊查看。
從NSQ設計文檔可知,單個(gè)nsqd被設計為一次處理多個(gè)流數據,NSQ中的數據流模型由stream和consumer組成。Topic 是一個(gè)獨特的流,Channel 是訂閱給定 Topic 的消費者的邏輯分組。NSQ的數據流模型結構如下圖所示:
從上圖可以看出,單個(gè)nsqd可以有多個(gè)topic,每個(gè)topic可以有多個(gè)channel。Channel可以接收所有Topic消息的副本,從而實(shí)現消息組播分發(fā);并且Channel上的每條消息都分發(fā)給它的訂閱者,從而實(shí)現負載均衡,所有這些形成一個(gè)單片,可以代表各種簡(jiǎn)單和復雜的拓撲結構。
NSQ 最初是為 Bitly 開(kāi)發(fā)的,Bitly 是一個(gè)提供短鏈接服務(wù)的應用程序。另外還有很多使用NSQ的知名應用,比如社交新聞網(wǎng)站Digg、私有社交應用Path、知名開(kāi)源應用容器引擎Docker、支付公司Stripe、新聞聚合網(wǎng)站@ >Buzzfeed,移動(dòng)應用Life360、 網(wǎng)絡(luò )工具公司SimpleReach 等,用于檢查家庭成員的位置。
有興趣的讀者也可以向NSQ貢獻代碼,反饋問(wèn)題,或者通過(guò)官方的快速入門(mén)教程體驗NSQ給高吞吐量網(wǎng)絡(luò )服務(wù)帶來(lái)的性能提升。NSQ安裝部署、客戶(hù)端開(kāi)發(fā)等相關(guān)信息請登錄其官網(wǎng)。
感謝郭磊對本文的審閱。
如有問(wèn)題請聯(lián)系站長(cháng)微信(非本文作者)
查看全部
文章實(shí)時(shí)采集(基于MIT開(kāi)源協(xié)議發(fā)布NSQ的數據流模型結構如下圖解析
)
NSQ 是一個(gè)基于 Go 語(yǔ)言的分布式實(shí)時(shí)消息平臺。它是基于 MIT 開(kāi)源協(xié)議發(fā)布的。代碼托管在 GitHub 上。最新版本為0.3.1。NSQ 可用于大型系統中的實(shí)時(shí)消息服務(wù),每天可處理數億條消息。它的設計目標是為在分布式環(huán)境中運行的去中心化服務(wù)提供強大的基礎設施。NSQ具有分布式、去中心化的拓撲結構,具有無(wú)單點(diǎn)故障、容錯、高可用、消息傳遞可靠等特點(diǎn)。NSQ 非常易于配置和部署,并且具有最大的靈活性,支持多種消息傳遞協(xié)議。此外,官方還提供了開(kāi)箱即用的 Go 和 Python 庫。
NSQ 由四個(gè)重要組件組成:
NSQ的主要特點(diǎn)如下:
為了實(shí)現高效的分布式消息服務(wù),NSQ 實(shí)現了合理的智能權衡,使其能夠在生產(chǎn)環(huán)境中得到充分的應用。具體內容如下:
官方和第三方也為NSQ開(kāi)發(fā)了很多客戶(hù)端函數庫,比如官方的基于HTTP、Go客戶(hù)端go-nsq、Python客戶(hù)端pynsq、基于Node.js的JavaScript客戶(hù)端nsqjs,以及異步C客戶(hù)端libnsq、Java客戶(hù)端nsq -java 和許多基于各種語(yǔ)言的第三方客戶(hù)端函數庫。更多客戶(hù)端函數庫請點(diǎn)擊查看。
從NSQ設計文檔可知,單個(gè)nsqd被設計為一次處理多個(gè)流數據,NSQ中的數據流模型由stream和consumer組成。Topic 是一個(gè)獨特的流,Channel 是訂閱給定 Topic 的消費者的邏輯分組。NSQ的數據流模型結構如下圖所示:

從上圖可以看出,單個(gè)nsqd可以有多個(gè)topic,每個(gè)topic可以有多個(gè)channel。Channel可以接收所有Topic消息的副本,從而實(shí)現消息組播分發(fā);并且Channel上的每條消息都分發(fā)給它的訂閱者,從而實(shí)現負載均衡,所有這些形成一個(gè)單片,可以代表各種簡(jiǎn)單和復雜的拓撲結構。
NSQ 最初是為 Bitly 開(kāi)發(fā)的,Bitly 是一個(gè)提供短鏈接服務(wù)的應用程序。另外還有很多使用NSQ的知名應用,比如社交新聞網(wǎng)站Digg、私有社交應用Path、知名開(kāi)源應用容器引擎Docker、支付公司Stripe、新聞聚合網(wǎng)站@ >Buzzfeed,移動(dòng)應用Life360、 網(wǎng)絡(luò )工具公司SimpleReach 等,用于檢查家庭成員的位置。
有興趣的讀者也可以向NSQ貢獻代碼,反饋問(wèn)題,或者通過(guò)官方的快速入門(mén)教程體驗NSQ給高吞吐量網(wǎng)絡(luò )服務(wù)帶來(lái)的性能提升。NSQ安裝部署、客戶(hù)端開(kāi)發(fā)等相關(guān)信息請登錄其官網(wǎng)。
感謝郭磊對本文的審閱。
如有問(wèn)題請聯(lián)系站長(cháng)微信(非本文作者)
文章實(shí)時(shí)采集(日志解析失敗錯誤json._root.yml)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 190 次瀏覽 ? 2021-10-09 10:17
說(shuō)明 Filebeat 版本為 5.3.0
之所以用beats家族的Filebeat來(lái)代替Logstash,是因為L(cháng)ogstash消耗資源太多(如果服務(wù)器資源充足請忽略)
官網(wǎng)下載Logstash有89M,而Filebeat只有8.4M,可見(jiàn)
Logstash 可以配置 jvm 參數。經(jīng)過(guò)我自己調試,內存分配小,啟動(dòng)很慢,有時(shí)根本起不來(lái)。如果分配很大,其他服務(wù)將沒(méi)有資源。
都說(shuō)對于低配置的服務(wù)器,選擇Filebeat是最好的選擇,現在Filebeat已經(jīng)開(kāi)始替代Logstash了。還是需要修改nginx的日志格式,nginx.config。
更改日志記錄的格式
log_format json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
文件節拍.yml
#=========================== Filebeat prospectors =============================
filebeat.prospectors:
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/nginx/*access*.log
json.keys_under_root: true
json.overwrite_keys: true
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["ip:port","ip:port"]
index: "filebeat_server_nginx_%{+YYYY-MM}"
這里要注意的是
json.keys_under_root:默認值為FALSE,表示我們的json日志解析后會(huì )放在json key上。設置為 TRUE,所有鍵都將放置在根節點(diǎn)中
json.overwrite_keys:是否覆蓋原來(lái)的key,這個(gè)是key的配置。設置keys_under_root為T(mén)RUE后,再設置overwrite_keys為T(mén)RUE,覆蓋filebeat的默認key值
還有其他配置
json.add_error_key: 添加json_error key key 記錄json解析失敗錯誤
json.message_key:指定解析后的json日志放哪個(gè)key,默認為json,也可以指定log等。
說(shuō)白了,區別就是elasticsearch的配置前的數據是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9sVOkCcRcg0IPg399",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T03:00:17.544Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"input_type": "log",
"json": {},
"message": "{ "@timestamp": "2018-05-08T11:00:11+08:00", "time": "2018-05-08T11:00:11+08:00", "remote_addr": "113.16.251.67", "remote_user": "-", "body_bytes_sent": "403", "request_time": "0.000", "status": "200", "host": "blog.joylau.cn", "request": "GET /img/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90.png HTTP/1.1", "request_method": "GET", "uri": "/img/\xE7\xBD\x91\xE6\x98\x93\xE4\xBA\x91\xE9\x9F\xB3\xE4\xB9\x90.png", "http_referrer": "http://blog.joylau.cn/css/style.css", "body_bytes_sent":"403", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" }",
"offset": 7633,
"source": "/var/log/nginx/access.log",
"type": "log"
}
}
配置好之后是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9rjLd8mVZNgvhdnN9",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T02:56:50.000Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"body_bytes_sent": "12576",
"host": "blog.joylau.cn",
"http_referrer": "http://blog.joylau.cn/",
"http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
"http_x_forwarded_for": "-",
"input_type": "log",
"offset": 3916,
"remote_addr": "60.166.12.138",
"remote_user": "-",
"request": "GET /2018/03/01/JDK8-Stream-Distinct/ HTTP/1.1",
"request_method": "GET",
"request_time": "0.000",
"source": "/var/log/nginx/access.log",
"status": "200",
"time": "2018-05-08T10:56:50+08:00",
"type": "log",
"uri": "/2018/03/01/JDK8-Stream-Distinct/index.html"
}
}
所以看起來(lái)很舒服
啟動(dòng) FileBeat
進(jìn)入Filebeat目錄
nohup sudo ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
更新
如果 nginx 日志收錄中文,則會(huì )將中文轉換為 Unicode 編碼。如果沒(méi)有,只需添加 escape=json 參數。
log_format json escape=json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
信息 查看全部
文章實(shí)時(shí)采集(日志解析失敗錯誤json._root.yml)
說(shuō)明 Filebeat 版本為 5.3.0
之所以用beats家族的Filebeat來(lái)代替Logstash,是因為L(cháng)ogstash消耗資源太多(如果服務(wù)器資源充足請忽略)
官網(wǎng)下載Logstash有89M,而Filebeat只有8.4M,可見(jiàn)
Logstash 可以配置 jvm 參數。經(jīng)過(guò)我自己調試,內存分配小,啟動(dòng)很慢,有時(shí)根本起不來(lái)。如果分配很大,其他服務(wù)將沒(méi)有資源。
都說(shuō)對于低配置的服務(wù)器,選擇Filebeat是最好的選擇,現在Filebeat已經(jīng)開(kāi)始替代Logstash了。還是需要修改nginx的日志格式,nginx.config。
更改日志記錄的格式
log_format json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
文件節拍.yml
#=========================== Filebeat prospectors =============================
filebeat.prospectors:
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/nginx/*access*.log
json.keys_under_root: true
json.overwrite_keys: true
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["ip:port","ip:port"]
index: "filebeat_server_nginx_%{+YYYY-MM}"
這里要注意的是
json.keys_under_root:默認值為FALSE,表示我們的json日志解析后會(huì )放在json key上。設置為 TRUE,所有鍵都將放置在根節點(diǎn)中
json.overwrite_keys:是否覆蓋原來(lái)的key,這個(gè)是key的配置。設置keys_under_root為T(mén)RUE后,再設置overwrite_keys為T(mén)RUE,覆蓋filebeat的默認key值
還有其他配置
json.add_error_key: 添加json_error key key 記錄json解析失敗錯誤
json.message_key:指定解析后的json日志放哪個(gè)key,默認為json,也可以指定log等。
說(shuō)白了,區別就是elasticsearch的配置前的數據是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9sVOkCcRcg0IPg399",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T03:00:17.544Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"input_type": "log",
"json": {},
"message": "{ "@timestamp": "2018-05-08T11:00:11+08:00", "time": "2018-05-08T11:00:11+08:00", "remote_addr": "113.16.251.67", "remote_user": "-", "body_bytes_sent": "403", "request_time": "0.000", "status": "200", "host": "blog.joylau.cn", "request": "GET /img/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90.png HTTP/1.1", "request_method": "GET", "uri": "/img/\xE7\xBD\x91\xE6\x98\x93\xE4\xBA\x91\xE9\x9F\xB3\xE4\xB9\x90.png", "http_referrer": "http://blog.joylau.cn/css/style.css", "body_bytes_sent":"403", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" }",
"offset": 7633,
"source": "/var/log/nginx/access.log",
"type": "log"
}
}
配置好之后是這樣的:
{
"_index": "filebeat_server_nginx_2018-05",
"_type": "log",
"_id": "AWM9rjLd8mVZNgvhdnN9",
"_version": 1,
"_score": 1,
"_source": {
"@timestamp": "2018-05-08T02:56:50.000Z",
"beat": {
"hostname": "VM_252_18_centos",
"name": "VM_252_18_centos",
"version": "5.3.0"
},
"body_bytes_sent": "12576",
"host": "blog.joylau.cn",
"http_referrer": "http://blog.joylau.cn/",
"http_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
"http_x_forwarded_for": "-",
"input_type": "log",
"offset": 3916,
"remote_addr": "60.166.12.138",
"remote_user": "-",
"request": "GET /2018/03/01/JDK8-Stream-Distinct/ HTTP/1.1",
"request_method": "GET",
"request_time": "0.000",
"source": "/var/log/nginx/access.log",
"status": "200",
"time": "2018-05-08T10:56:50+08:00",
"type": "log",
"uri": "/2018/03/01/JDK8-Stream-Distinct/index.html"
}
}
所以看起來(lái)很舒服
啟動(dòng) FileBeat
進(jìn)入Filebeat目錄
nohup sudo ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
更新
如果 nginx 日志收錄中文,則會(huì )將中文轉換為 Unicode 編碼。如果沒(méi)有,只需添加 escape=json 參數。
log_format json escape=json '{ "@timestamp": "$time_iso8601", '
'"time": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"host": "$host", '
'"request": "$request", '
'"request_method": "$request_method", '
'"uri": "$uri", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" '
'}';
access_log /var/log/nginx/access.log json;
信息
文章實(shí)時(shí)采集(如何實(shí)時(shí)采集微信公眾號圖文信息?(附教程))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 541 次瀏覽 ? 2021-10-05 01:01
文章實(shí)時(shí)采集微信公眾號圖文信息
一、目標制定選擇可采集優(yōu)質(zhì)圖文的平臺進(jìn)行操作,或根據圖文標題/封面等進(jìn)行分析判斷。
二、準備工作根據工作量,以及所能采集的資源,大致可分為以下3個(gè)步驟:1.采集圖文背景圖的過(guò)程,請在采集頁(yè)面中進(jìn)行操作,請不要把素材放入某些需要填寫(xiě)素材目錄的文件夾中。素材采集時(shí)會(huì )產(chǎn)生大量data_file,需要保存一份到網(wǎng)盤(pán)上。(如出現素材丟失或丟失的現象,請抓取原始圖片并進(jìn)行相應的處理。)data_file定位要求:至少要預留上傳素材的路徑。
操作步驟:選擇圖文上傳目錄---圖文上傳---上傳剛剛保存的data_file.png,部分目錄定位需要多次操作。2.采集圖文標題的過(guò)程,請在微信平臺商務(wù)后臺里將標題進(jìn)行命名。操作步驟:選擇自己想要采集的標題,點(diǎn)擊插入---圖文標題---發(fā)送。注意標題后,請使用編號進(jìn)行標注。發(fā)送時(shí)請填寫(xiě)上傳文件的路徑。
3.采集圖文封面的過(guò)程,請在商務(wù)后臺里設置發(fā)送標題、采集位置、收貨地址等內容,并命名圖文封面。操作步驟:選擇采集文件目錄---收貨地址---設置標題---開(kāi)始采集文章。圖文封面采集大致如此。
三、軟件選擇采集微信公眾號內容主要靠軟件,目前市面上提供采集、編輯、群發(fā)功能的軟件較多,具體可參考:今日頭條采集器【軟件】今日頭條訂閱號內容采集。新浪扶翼采集器【軟件】新浪網(wǎng)新聞源采集。pp紅采集器【軟件】pp紅網(wǎng)站內容采集。(建議在使用pp紅,性?xún)r(jià)比高,主要是采集標題、封面。)今日頭條【采集器】(注意需版權問(wèn)題,需要購買(mǎi)版權才能采集封面和封面圖文章。)。
四、采集過(guò)程采集過(guò)程中請注意避免出現死鏈、延遲采集封面圖文。建議把文章的標題/封面采集到服務(wù)器(專(zhuān)門(mén)的服務(wù)器文件夾中)。文章采集數量不要太多,也不要太少,兩三篇差不多就行。如采集到500篇,在qq群/論壇等發(fā)布擴展地址出現繁雜信息,用戶(hù)點(diǎn)擊難,即為可能出現死鏈。因此,文章采集需要分頁(yè),建議每頁(yè)都采集,采集較長(cháng)文章也能通過(guò)多個(gè)頁(yè)面進(jìn)行多次采集。
只有文章真正的覆蓋到了微信公眾號所發(fā)布的文章,才算是完成初步采集和封面采集。更多采集、編輯、微信公眾號編輯排版相關(guān)文章,請關(guān)注公眾號:20155633473。 查看全部
文章實(shí)時(shí)采集(如何實(shí)時(shí)采集微信公眾號圖文信息?(附教程))
文章實(shí)時(shí)采集微信公眾號圖文信息
一、目標制定選擇可采集優(yōu)質(zhì)圖文的平臺進(jìn)行操作,或根據圖文標題/封面等進(jìn)行分析判斷。
二、準備工作根據工作量,以及所能采集的資源,大致可分為以下3個(gè)步驟:1.采集圖文背景圖的過(guò)程,請在采集頁(yè)面中進(jìn)行操作,請不要把素材放入某些需要填寫(xiě)素材目錄的文件夾中。素材采集時(shí)會(huì )產(chǎn)生大量data_file,需要保存一份到網(wǎng)盤(pán)上。(如出現素材丟失或丟失的現象,請抓取原始圖片并進(jìn)行相應的處理。)data_file定位要求:至少要預留上傳素材的路徑。
操作步驟:選擇圖文上傳目錄---圖文上傳---上傳剛剛保存的data_file.png,部分目錄定位需要多次操作。2.采集圖文標題的過(guò)程,請在微信平臺商務(wù)后臺里將標題進(jìn)行命名。操作步驟:選擇自己想要采集的標題,點(diǎn)擊插入---圖文標題---發(fā)送。注意標題后,請使用編號進(jìn)行標注。發(fā)送時(shí)請填寫(xiě)上傳文件的路徑。
3.采集圖文封面的過(guò)程,請在商務(wù)后臺里設置發(fā)送標題、采集位置、收貨地址等內容,并命名圖文封面。操作步驟:選擇采集文件目錄---收貨地址---設置標題---開(kāi)始采集文章。圖文封面采集大致如此。
三、軟件選擇采集微信公眾號內容主要靠軟件,目前市面上提供采集、編輯、群發(fā)功能的軟件較多,具體可參考:今日頭條采集器【軟件】今日頭條訂閱號內容采集。新浪扶翼采集器【軟件】新浪網(wǎng)新聞源采集。pp紅采集器【軟件】pp紅網(wǎng)站內容采集。(建議在使用pp紅,性?xún)r(jià)比高,主要是采集標題、封面。)今日頭條【采集器】(注意需版權問(wèn)題,需要購買(mǎi)版權才能采集封面和封面圖文章。)。
四、采集過(guò)程采集過(guò)程中請注意避免出現死鏈、延遲采集封面圖文。建議把文章的標題/封面采集到服務(wù)器(專(zhuān)門(mén)的服務(wù)器文件夾中)。文章采集數量不要太多,也不要太少,兩三篇差不多就行。如采集到500篇,在qq群/論壇等發(fā)布擴展地址出現繁雜信息,用戶(hù)點(diǎn)擊難,即為可能出現死鏈。因此,文章采集需要分頁(yè),建議每頁(yè)都采集,采集較長(cháng)文章也能通過(guò)多個(gè)頁(yè)面進(jìn)行多次采集。
只有文章真正的覆蓋到了微信公眾號所發(fā)布的文章,才算是完成初步采集和封面采集。更多采集、編輯、微信公眾號編輯排版相關(guān)文章,請關(guān)注公眾號:20155633473。
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集并推送給服務(wù)器,前端路由好點(diǎn)的話(huà))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 165 次瀏覽 ? 2021-10-04 13:03
文章實(shí)時(shí)采集并推送給服務(wù)器,服務(wù)器再推送給客戶(hù)端。前端路由好點(diǎn)的話(huà),抓包,分析url的utm特征,爬蟲(chóng)最好也接入,能抓一抓也不錯,
就題主的問(wèn)題,
1、抓包容易丟包或中斷;
2、人工分析每一次請求中每一個(gè)字段,
3、模擬返回很累,
4、別人抓包分析你也不放心;綜上,建議題主用第一個(gè)方案:一步步弄清每個(gè)字段具體含義,分析并獲取鏈接及驗證其他參數,最后聚合顯示結果。
1、登錄:你的每一次訪(fǎng)問(wèn)都會(huì )在你自己的服務(wù)器上生成一個(gè)記錄,當你從別人那里登錄后,這個(gè)登錄時(shí)間段的記錄就會(huì )同步到你自己的服務(wù)器上。
2、抓包:爬取的是整個(gè)站點(diǎn)的數據,一般的服務(wù)器都會(huì )有默認的模擬ip,打開(kāi)的網(wǎng)頁(yè)是無(wú)法發(fā)起請求的,但是你可以通過(guò)修改其他字段發(fā)送請求。
3、模擬返回:在訪(fǎng)問(wèn)一些靜態(tài)文件時(shí),你可以把它模擬成你自己的網(wǎng)站,這樣你就能返回給你合適的網(wǎng)站地址,這樣你每次瀏覽這些文件都是獲取你的網(wǎng)站地址,順著(zhù)網(wǎng)址就可以到對應的服務(wù)器上了。
4、聚合:看你的爬蟲(chóng)是不是有收集其他網(wǎng)站數據的,比如ip、cookie這些,如果有的話(huà),你就可以把這些數據爬取過(guò)來(lái),用聚合接口就可以聚合到一起。
5、最后,所有的信息統計是比較少的,估計做不下來(lái),更何況你分析這些數據是不是有些數據是重復的,人工統計是比較費力的,如果是數據預處理,還要編寫(xiě)一些特征工程代碼,實(shí)現這些功能,你不可能每一次都請求數據庫把重復的數據過(guò)濾出來(lái)吧,而且到時(shí)候服務(wù)器出現問(wèn)題還要花時(shí)間去處理,最后數據的可用性才能得到保證,如果每一次請求都需要使用nginx,你每次請求的數據都需要到nginx的數據庫中去查詢(xún),然后就把數據保存到數據庫中,有一點(diǎn)風(fēng)險。
最后,根據我的理解,你沒(méi)必要大費周章,一步步從第一個(gè)到后面一個(gè),爬蟲(chóng)總會(huì )成熟的,不用有點(diǎn)困難就困難一步,會(huì )過(guò)的很吃力的。 查看全部
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集并推送給服務(wù)器,前端路由好點(diǎn)的話(huà))
文章實(shí)時(shí)采集并推送給服務(wù)器,服務(wù)器再推送給客戶(hù)端。前端路由好點(diǎn)的話(huà),抓包,分析url的utm特征,爬蟲(chóng)最好也接入,能抓一抓也不錯,
就題主的問(wèn)題,
1、抓包容易丟包或中斷;
2、人工分析每一次請求中每一個(gè)字段,
3、模擬返回很累,
4、別人抓包分析你也不放心;綜上,建議題主用第一個(gè)方案:一步步弄清每個(gè)字段具體含義,分析并獲取鏈接及驗證其他參數,最后聚合顯示結果。
1、登錄:你的每一次訪(fǎng)問(wèn)都會(huì )在你自己的服務(wù)器上生成一個(gè)記錄,當你從別人那里登錄后,這個(gè)登錄時(shí)間段的記錄就會(huì )同步到你自己的服務(wù)器上。
2、抓包:爬取的是整個(gè)站點(diǎn)的數據,一般的服務(wù)器都會(huì )有默認的模擬ip,打開(kāi)的網(wǎng)頁(yè)是無(wú)法發(fā)起請求的,但是你可以通過(guò)修改其他字段發(fā)送請求。
3、模擬返回:在訪(fǎng)問(wèn)一些靜態(tài)文件時(shí),你可以把它模擬成你自己的網(wǎng)站,這樣你就能返回給你合適的網(wǎng)站地址,這樣你每次瀏覽這些文件都是獲取你的網(wǎng)站地址,順著(zhù)網(wǎng)址就可以到對應的服務(wù)器上了。
4、聚合:看你的爬蟲(chóng)是不是有收集其他網(wǎng)站數據的,比如ip、cookie這些,如果有的話(huà),你就可以把這些數據爬取過(guò)來(lái),用聚合接口就可以聚合到一起。
5、最后,所有的信息統計是比較少的,估計做不下來(lái),更何況你分析這些數據是不是有些數據是重復的,人工統計是比較費力的,如果是數據預處理,還要編寫(xiě)一些特征工程代碼,實(shí)現這些功能,你不可能每一次都請求數據庫把重復的數據過(guò)濾出來(lái)吧,而且到時(shí)候服務(wù)器出現問(wèn)題還要花時(shí)間去處理,最后數據的可用性才能得到保證,如果每一次請求都需要使用nginx,你每次請求的數據都需要到nginx的數據庫中去查詢(xún),然后就把數據保存到數據庫中,有一點(diǎn)風(fēng)險。
最后,根據我的理解,你沒(méi)必要大費周章,一步步從第一個(gè)到后面一個(gè),爬蟲(chóng)總會(huì )成熟的,不用有點(diǎn)困難就困難一步,會(huì )過(guò)的很吃力的。
文章實(shí)時(shí)采集(mysql實(shí)時(shí)數據采集框架maxwell基本介紹-蘇州安嘉 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 166 次瀏覽 ? 2021-10-02 11:18
)
介紹本文文章主要介紹MaxWell(Mysql實(shí)時(shí)數據采集)及相關(guān)經(jīng)驗和技巧。文章約13381字,瀏覽量317,點(diǎn)贊2,值得參考!
mysql實(shí)時(shí)數據采集框架maxwell基礎介紹
maxwell 是一個(gè)可以實(shí)時(shí)讀取 MySQL 二進(jìn)制日志 binlog 并生成 JSON 格式消息的應用程序,這些消息作為生產(chǎn)者發(fā)送到 Kafka、Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其他平臺。其常見(jiàn)的應用場(chǎng)景包括ETL、維護緩存、采集表級dml指標、遞增到搜索引擎、數據分區遷移、切割數據庫binlog回滾方案等。
Maxwell主要提供以下功能:
支持 SELECT * FROM 表進(jìn)行 44 行全數據初始化。支持主庫故障轉移后binlog位置(GTID)的自動(dòng)恢復??梢詫祿M(jìn)行分區以解決數據傾斜問(wèn)題。發(fā)送到 Kafka 的數據支持數據庫、表和列。等級數據分區的工作方式是偽裝成slave,接收binlog事件,然后根據scheme信息進(jìn)行組裝,可以接受ddl、xid、row等各種事件binlog的引入。
Binlog是mysql中的二進(jìn)制日志。主要用于記錄mysql數據庫中發(fā)生或潛在改變數據的SQL語(yǔ)句,以二進(jìn)制形式存儲在磁盤(pán)中。如果我們后面需要配置主從數據庫,如果我們需要從數據庫同步主數據庫的內容,我們可以通過(guò)binlog進(jìn)行同步。說(shuō)白了,可以用binlog來(lái)解決mysql數據庫中數據的實(shí)時(shí)同步問(wèn)題。還有三種 binlog 格式:STATEMENT、ROW 和 MIXED。
基于行的復制(RBR):它不記錄每個(gè) SQL 語(yǔ)句的上下文信息。它只需要記錄修改了哪些數據,修改成了什么?;旌蠌椭疲∕BR):以上兩種模式的結合。一般復制使用 STATEMENT 方式保存 binlog。對于 STATEMENT 模式下無(wú)法復制的操作,使用 ROW 模式保存 binlog。MySQL會(huì )根據執行的SQL語(yǔ)句進(jìn)行選擇。日志保存方法。
因為語(yǔ)句只有sql,沒(méi)有數據,無(wú)法獲取到原來(lái)的變更日志,一般建議使用ROW模式)mysql數據實(shí)時(shí)同步,我們可以通過(guò)解析mysql bin-log來(lái)實(shí)現,有很多bin-log的解析方式,可以通過(guò)canal或者max-well實(shí)現。下面是各種提取方法的對比介紹
啟用binlog功能第一步:添加一個(gè)普通用戶(hù)maxwell
在mysql中添加一個(gè)普通用戶(hù)maxwell,因為maxwell軟件默認用戶(hù)是maxwell用戶(hù),進(jìn)入mysql客戶(hù)端,然后執行如下命令授權
mysql?-uroot??-p?
set?global?validate_password_policy=LOW;
set?global?validate_password_length=6;
CREATE?USER?'maxwell'@'%'?IDENTIFIED?BY?'123456';
GRANT?ALL?ON?maxwell.*?TO?'maxwell'@'%';
GRANT?SELECT,?REPLICATION?CLIENT,?REPLICATION?SLAVE?on?*.*?to?'maxwell'@'%';
flush?privileges;
第二步:開(kāi)啟binlog機制
對于我們的mysql數據庫,我們可以打開(kāi)mysql的binlog功能,通過(guò)修改mysql配置文件來(lái)啟用。修改配置文件后,我們需要重啟mysql服務(wù)
sudo?vim?/etc/my.cnf
#?添加或修改以下三行配置
log-bin=?/var/lib/mysql/mysql-bin?#?日志存放位置
binlog-format=ROW?#?binlog格式
server_id=1?#?server?id
#?重啟mysql
sudo?service?mysqld?restart
第三步:驗證mysql服務(wù)
#?進(jìn)入mysql客戶(hù)端,并執行以下命令進(jìn)行驗證
mysql?-uroot?-p
mysql>?show?variables?like?'%log_bin%';
+---------------------------------+-----------------------------+
|?Variable_name???????????????????|?Value???????????????????????|
+---------------------------------+-----------------------------+
|?log_bin?????????????????????????|?ON??????????????????????????|
|?log_bin_basename????????????????|?/var/lib/mysql/binlog???????|
|?log_bin_index???????????????????|?/var/lib/mysql/binlog.index?|
|?log_bin_trust_function_creators?|?OFF?????????????????????????|
|?log_bin_use_v1_row_events???????|?OFF?????????????????????????|
|?sql_log_bin?????????????????????|?ON??????????????????????????|
+---------------------------------+-----------------------------+
root@0f3525c74115:/#?cd?/var/lib/mysql/
root@0f3525c74115:/var/lib/mysql#?ls?-la
-rw-r-----??1?mysql?mysql??????324?Jul??2?14:54??binlog.000007
-rw-r-----??1?mysql?mysql??????156?Jul??2?14:54??binlog.000008
-rw-r-----??1?mysql?mysql???????32?Jul??2?14:54??binlog.index
#?以上是binlog文件說(shuō)明已經(jīng)開(kāi)啟
安裝maxwell實(shí)現實(shí)時(shí)采集mysql數據第一步:下載maxwell
下載:
第二步:修改配置
啟動(dòng)服務(wù)。啟動(dòng)我們的動(dòng)物園管理員服務(wù)。啟動(dòng)kafka服務(wù)并創(chuàng )建kafka主題。啟動(dòng)maxwell服務(wù),測試插入數據到數據庫,查看kafka是否可以同步到mysql數據
#?創(chuàng )建kafka?topic?分區?3?副本?2
bin/kafka-topics.sh??--create?--topic?maxwell_kafka?--partitions?3?--replication-factor?2?--zookeeper?node01:2181
#?創(chuàng )建kafka?消費者?
bin/kafka-console-consumer.sh?--topic?maxwell_kafka?--from-beginning?--bootstrap-server?node01:9092,node02:9092,node03:9092
#?啟動(dòng)maxwell
bin/maxwell
插入數據測試
--?創(chuàng )建目標庫
CREATE?DATABASE?/*!32312?IF?NOT?EXISTS*/`test`?/*!40100?DEFAULT?CHARACTER?SET?utf8?*/;
USE?`test`;
--?創(chuàng )建表
CREATE?TABLE?`myuser`?(
??`id`?int(12)?NOT?NULL,
??`name`?varchar(32)?DEFAULT?NULL,
??`age`?varchar(32)?DEFAULT?NULL,
??PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
--?插入數據
insert??into?`myuser`(`id`,`name`,`age`)?values?(1,'zhangsan',NULL),(2,'xxx',NULL),(3,'ggg',NULL),(5,'xxxx',NULL),(8,'skldjlskdf',NULL),(10,'ggggg',NULL),(99,'ttttt',NULL),(114,NULL,NULL),(121,'xxx',NULL);
--?豈容kafka消費者,會(huì )看到消費的數據
bin/kafka-console-consumer.sh?--bootstrap-server?node01:9092,node02:9092,node03:9092?--topic??maxwell_kafka 查看全部
文章實(shí)時(shí)采集(mysql實(shí)時(shí)數據采集框架maxwell基本介紹-蘇州安嘉
)
介紹本文文章主要介紹MaxWell(Mysql實(shí)時(shí)數據采集)及相關(guān)經(jīng)驗和技巧。文章約13381字,瀏覽量317,點(diǎn)贊2,值得參考!
mysql實(shí)時(shí)數據采集框架maxwell基礎介紹
maxwell 是一個(gè)可以實(shí)時(shí)讀取 MySQL 二進(jìn)制日志 binlog 并生成 JSON 格式消息的應用程序,這些消息作為生產(chǎn)者發(fā)送到 Kafka、Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其他平臺。其常見(jiàn)的應用場(chǎng)景包括ETL、維護緩存、采集表級dml指標、遞增到搜索引擎、數據分區遷移、切割數據庫binlog回滾方案等。
Maxwell主要提供以下功能:
支持 SELECT * FROM 表進(jìn)行 44 行全數據初始化。支持主庫故障轉移后binlog位置(GTID)的自動(dòng)恢復??梢詫祿M(jìn)行分區以解決數據傾斜問(wèn)題。發(fā)送到 Kafka 的數據支持數據庫、表和列。等級數據分區的工作方式是偽裝成slave,接收binlog事件,然后根據scheme信息進(jìn)行組裝,可以接受ddl、xid、row等各種事件binlog的引入。
Binlog是mysql中的二進(jìn)制日志。主要用于記錄mysql數據庫中發(fā)生或潛在改變數據的SQL語(yǔ)句,以二進(jìn)制形式存儲在磁盤(pán)中。如果我們后面需要配置主從數據庫,如果我們需要從數據庫同步主數據庫的內容,我們可以通過(guò)binlog進(jìn)行同步。說(shuō)白了,可以用binlog來(lái)解決mysql數據庫中數據的實(shí)時(shí)同步問(wèn)題。還有三種 binlog 格式:STATEMENT、ROW 和 MIXED。
基于行的復制(RBR):它不記錄每個(gè) SQL 語(yǔ)句的上下文信息。它只需要記錄修改了哪些數據,修改成了什么?;旌蠌椭疲∕BR):以上兩種模式的結合。一般復制使用 STATEMENT 方式保存 binlog。對于 STATEMENT 模式下無(wú)法復制的操作,使用 ROW 模式保存 binlog。MySQL會(huì )根據執行的SQL語(yǔ)句進(jìn)行選擇。日志保存方法。
因為語(yǔ)句只有sql,沒(méi)有數據,無(wú)法獲取到原來(lái)的變更日志,一般建議使用ROW模式)mysql數據實(shí)時(shí)同步,我們可以通過(guò)解析mysql bin-log來(lái)實(shí)現,有很多bin-log的解析方式,可以通過(guò)canal或者max-well實(shí)現。下面是各種提取方法的對比介紹
啟用binlog功能第一步:添加一個(gè)普通用戶(hù)maxwell
在mysql中添加一個(gè)普通用戶(hù)maxwell,因為maxwell軟件默認用戶(hù)是maxwell用戶(hù),進(jìn)入mysql客戶(hù)端,然后執行如下命令授權
mysql?-uroot??-p?
set?global?validate_password_policy=LOW;
set?global?validate_password_length=6;
CREATE?USER?'maxwell'@'%'?IDENTIFIED?BY?'123456';
GRANT?ALL?ON?maxwell.*?TO?'maxwell'@'%';
GRANT?SELECT,?REPLICATION?CLIENT,?REPLICATION?SLAVE?on?*.*?to?'maxwell'@'%';
flush?privileges;
第二步:開(kāi)啟binlog機制
對于我們的mysql數據庫,我們可以打開(kāi)mysql的binlog功能,通過(guò)修改mysql配置文件來(lái)啟用。修改配置文件后,我們需要重啟mysql服務(wù)
sudo?vim?/etc/my.cnf
#?添加或修改以下三行配置
log-bin=?/var/lib/mysql/mysql-bin?#?日志存放位置
binlog-format=ROW?#?binlog格式
server_id=1?#?server?id
#?重啟mysql
sudo?service?mysqld?restart
第三步:驗證mysql服務(wù)
#?進(jìn)入mysql客戶(hù)端,并執行以下命令進(jìn)行驗證
mysql?-uroot?-p
mysql>?show?variables?like?'%log_bin%';
+---------------------------------+-----------------------------+
|?Variable_name???????????????????|?Value???????????????????????|
+---------------------------------+-----------------------------+
|?log_bin?????????????????????????|?ON??????????????????????????|
|?log_bin_basename????????????????|?/var/lib/mysql/binlog???????|
|?log_bin_index???????????????????|?/var/lib/mysql/binlog.index?|
|?log_bin_trust_function_creators?|?OFF?????????????????????????|
|?log_bin_use_v1_row_events???????|?OFF?????????????????????????|
|?sql_log_bin?????????????????????|?ON??????????????????????????|
+---------------------------------+-----------------------------+
root@0f3525c74115:/#?cd?/var/lib/mysql/
root@0f3525c74115:/var/lib/mysql#?ls?-la
-rw-r-----??1?mysql?mysql??????324?Jul??2?14:54??binlog.000007
-rw-r-----??1?mysql?mysql??????156?Jul??2?14:54??binlog.000008
-rw-r-----??1?mysql?mysql???????32?Jul??2?14:54??binlog.index
#?以上是binlog文件說(shuō)明已經(jīng)開(kāi)啟
安裝maxwell實(shí)現實(shí)時(shí)采集mysql數據第一步:下載maxwell
下載:
第二步:修改配置
啟動(dòng)服務(wù)。啟動(dòng)我們的動(dòng)物園管理員服務(wù)。啟動(dòng)kafka服務(wù)并創(chuàng )建kafka主題。啟動(dòng)maxwell服務(wù),測試插入數據到數據庫,查看kafka是否可以同步到mysql數據
#?創(chuàng )建kafka?topic?分區?3?副本?2
bin/kafka-topics.sh??--create?--topic?maxwell_kafka?--partitions?3?--replication-factor?2?--zookeeper?node01:2181
#?創(chuàng )建kafka?消費者?
bin/kafka-console-consumer.sh?--topic?maxwell_kafka?--from-beginning?--bootstrap-server?node01:9092,node02:9092,node03:9092
#?啟動(dòng)maxwell
bin/maxwell
插入數據測試
--?創(chuàng )建目標庫
CREATE?DATABASE?/*!32312?IF?NOT?EXISTS*/`test`?/*!40100?DEFAULT?CHARACTER?SET?utf8?*/;
USE?`test`;
--?創(chuàng )建表
CREATE?TABLE?`myuser`?(
??`id`?int(12)?NOT?NULL,
??`name`?varchar(32)?DEFAULT?NULL,
??`age`?varchar(32)?DEFAULT?NULL,
??PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
--?插入數據
insert??into?`myuser`(`id`,`name`,`age`)?values?(1,'zhangsan',NULL),(2,'xxx',NULL),(3,'ggg',NULL),(5,'xxxx',NULL),(8,'skldjlskdf',NULL),(10,'ggggg',NULL),(99,'ttttt',NULL),(114,NULL,NULL),(121,'xxx',NULL);
--?豈容kafka消費者,會(huì )看到消費的數據
bin/kafka-console-consumer.sh?--bootstrap-server?node01:9092,node02:9092,node03:9092?--topic??maxwell_kafka
文章實(shí)時(shí)采集(自動(dòng)提交又可以分為主動(dòng)推送和sitemap三種鏈接提交通道)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2021-10-01 10:07
很多人為了節省時(shí)間,選擇了自動(dòng)提交的方式。但是,如您所知,自動(dòng)提交可以分為三個(gè)鏈接提交渠道:主動(dòng)推送(實(shí)時(shí))、自動(dòng)推送和站點(diǎn)地圖。
下面我就給大家分析一下這三種鏈接提交渠道的優(yōu)劣,看看哪個(gè)更適合我們。
1、主動(dòng)推送(實(shí)時(shí))
這是最快的提交方式。技術(shù)改造后,您的網(wǎng)站每次更新文章時(shí),都可以通過(guò)這種方式主動(dòng)推送給百度,保證新鏈接能及時(shí)被百度收錄接收。但有一個(gè)缺點(diǎn),就是技術(shù)發(fā)展起來(lái)后才能使用。
2、自動(dòng)推送
自動(dòng)推送是百度搜索資源平臺推出的一款提高網(wǎng)站新網(wǎng)頁(yè)發(fā)現速度的工具。安裝了自動(dòng)推送JS代碼的網(wǎng)頁(yè),無(wú)論訪(fǎng)問(wèn)哪個(gè)頁(yè)面,頁(yè)面URL都會(huì )立即自動(dòng)推送到百度。
要使用它,需要將JS代碼安裝在一個(gè)全站共享的模板頁(yè)面中,例如在一個(gè)類(lèi)似于header.htm的header模板頁(yè)面中,以達到一次安裝,整個(gè)站點(diǎn)的效果。
這個(gè)方法很好,很適合優(yōu)采云,安裝完成后可以實(shí)現自動(dòng)鏈接推送功能。但是這樣的js代碼會(huì )拖慢網(wǎng)站,一點(diǎn)也不友好。
3、站點(diǎn)地圖提交
Sitemap是站點(diǎn)地圖的意思,指的是你網(wǎng)站上的網(wǎng)頁(yè)列表。創(chuàng )建并提交站點(diǎn)地圖將幫助百度找到并理解您網(wǎng)站 上的所有網(wǎng)頁(yè)。
除了這個(gè)便捷的功能,您還可以使用Sitemap提供關(guān)于您的其他信息網(wǎng)站,如最后更新日期、Sitemap文件的更新頻率等,僅供百度蜘蛛參考。
百度不保證所提交的站點(diǎn)地圖數據的所有網(wǎng)址都會(huì )被抓取并編入索引。不過(guò),百度搜索引擎會(huì )利用Sitemap中的數據來(lái)了解網(wǎng)站的結構等信息,可以幫助百度搜索引擎蜘蛛改進(jìn)爬取策略,在以后更好的捕獲網(wǎng)站的Pick。
順便說(shuō)一下,Sitemap網(wǎng)站 地圖可以使用愛(ài)站SEO toolkit 和SitemapX 等工具制作。還有一點(diǎn)需要說(shuō)明的是,百度搜索引擎蜘蛛不會(huì )定期來(lái)更新Sitemap網(wǎng)站。
此站點(diǎn)地圖與搜索排名無(wú)關(guān)。不是說(shuō)更新站點(diǎn)地圖越頻繁,網(wǎng)站的排名就越高,不是這樣的。
所以,綜上所述,最適合我們的鏈接提交方式是主動(dòng)推送(實(shí)時(shí))。
接下來(lái)教大家修改API提交,實(shí)現只要在WordPress后臺點(diǎn)擊發(fā)布文章,就可以主動(dòng)推送文章(實(shí)時(shí))到百度.
其實(shí)方法很簡(jiǎn)單。我們只需要在funtions.php模板中寫(xiě)入如下代碼,發(fā)布文章就會(huì )自動(dòng)推送到百度。
date_default_timezone_set('Asia/Shanghai'); add_action('publish_post', 'publish_bd_submit', 999);
function publish_bd_submit($post_ID){ global $post;
$bd_submit_enabled = true;
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B
if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
}
上面的代碼有兩個(gè)API,改成自己的就好了。注:第一個(gè)api是天機收錄的接口調用地址。只有受原創(chuàng )保護的站長(cháng)才有資格使用它。第二個(gè)api地址是主動(dòng)推送(實(shí)時(shí))接口調用地址,別搞錯了。
另一個(gè)是關(guān)于 funtions.php 模板的路徑?,F在我給你一些提示。目前Kang使用的wordpress主題是Robin,這個(gè)funtions.php模板的路徑在/wp-content/themes/begin/根目錄下,大家可以自己找。
版權所有:科鼎博客 ? WNAG.COM.CN
文章標題:《wordpress如何實(shí)現向百度發(fā)布文章主動(dòng)推送(實(shí)時(shí))》
這篇文章的鏈接:
特別聲明:除非另有說(shuō)明,本站所有文章均為原創(chuàng ),本站文章原則上禁止轉載。如果真的要轉載請聯(lián)系我們:尊重他人勞動(dòng)成果,謝謝Over~ 查看全部
文章實(shí)時(shí)采集(自動(dòng)提交又可以分為主動(dòng)推送和sitemap三種鏈接提交通道)
很多人為了節省時(shí)間,選擇了自動(dòng)提交的方式。但是,如您所知,自動(dòng)提交可以分為三個(gè)鏈接提交渠道:主動(dòng)推送(實(shí)時(shí))、自動(dòng)推送和站點(diǎn)地圖。
下面我就給大家分析一下這三種鏈接提交渠道的優(yōu)劣,看看哪個(gè)更適合我們。
1、主動(dòng)推送(實(shí)時(shí))
這是最快的提交方式。技術(shù)改造后,您的網(wǎng)站每次更新文章時(shí),都可以通過(guò)這種方式主動(dòng)推送給百度,保證新鏈接能及時(shí)被百度收錄接收。但有一個(gè)缺點(diǎn),就是技術(shù)發(fā)展起來(lái)后才能使用。
2、自動(dòng)推送
自動(dòng)推送是百度搜索資源平臺推出的一款提高網(wǎng)站新網(wǎng)頁(yè)發(fā)現速度的工具。安裝了自動(dòng)推送JS代碼的網(wǎng)頁(yè),無(wú)論訪(fǎng)問(wèn)哪個(gè)頁(yè)面,頁(yè)面URL都會(huì )立即自動(dòng)推送到百度。
要使用它,需要將JS代碼安裝在一個(gè)全站共享的模板頁(yè)面中,例如在一個(gè)類(lèi)似于header.htm的header模板頁(yè)面中,以達到一次安裝,整個(gè)站點(diǎn)的效果。
這個(gè)方法很好,很適合優(yōu)采云,安裝完成后可以實(shí)現自動(dòng)鏈接推送功能。但是這樣的js代碼會(huì )拖慢網(wǎng)站,一點(diǎn)也不友好。
3、站點(diǎn)地圖提交
Sitemap是站點(diǎn)地圖的意思,指的是你網(wǎng)站上的網(wǎng)頁(yè)列表。創(chuàng )建并提交站點(diǎn)地圖將幫助百度找到并理解您網(wǎng)站 上的所有網(wǎng)頁(yè)。
除了這個(gè)便捷的功能,您還可以使用Sitemap提供關(guān)于您的其他信息網(wǎng)站,如最后更新日期、Sitemap文件的更新頻率等,僅供百度蜘蛛參考。
百度不保證所提交的站點(diǎn)地圖數據的所有網(wǎng)址都會(huì )被抓取并編入索引。不過(guò),百度搜索引擎會(huì )利用Sitemap中的數據來(lái)了解網(wǎng)站的結構等信息,可以幫助百度搜索引擎蜘蛛改進(jìn)爬取策略,在以后更好的捕獲網(wǎng)站的Pick。
順便說(shuō)一下,Sitemap網(wǎng)站 地圖可以使用愛(ài)站SEO toolkit 和SitemapX 等工具制作。還有一點(diǎn)需要說(shuō)明的是,百度搜索引擎蜘蛛不會(huì )定期來(lái)更新Sitemap網(wǎng)站。
此站點(diǎn)地圖與搜索排名無(wú)關(guān)。不是說(shuō)更新站點(diǎn)地圖越頻繁,網(wǎng)站的排名就越高,不是這樣的。
所以,綜上所述,最適合我們的鏈接提交方式是主動(dòng)推送(實(shí)時(shí))。
接下來(lái)教大家修改API提交,實(shí)現只要在WordPress后臺點(diǎn)擊發(fā)布文章,就可以主動(dòng)推送文章(實(shí)時(shí))到百度.
其實(shí)方法很簡(jiǎn)單。我們只需要在funtions.php模板中寫(xiě)入如下代碼,發(fā)布文章就會(huì )自動(dòng)推送到百度。
date_default_timezone_set('Asia/Shanghai'); add_action('publish_post', 'publish_bd_submit', 999);
function publish_bd_submit($post_ID){ global $post;
$bd_submit_enabled = true;
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
if($bd_submit_enabled){
$api ='http://data.zz.baidu.com/urls% ... 3B%3B
if($post->post_status != "publish"){
$url = get_permalink($post_ID);
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
// $result = json_decode($result, true);
$time = time();
$file = dirname(__FILE__).'/by_baiduSubmit.txt';//生成日志文件,與代碼所處文件同目錄
if(date('Y-m-d',filemtime($file)) != date('Y-m-d')){
$handle = fopen($file,"w");
}else{
$handle = fopen($file,"a");
}
$resultMessage="";
if($result['message']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交失敗".$result['message'].":\n網(wǎng)址:".$url."\n\n".$result;
}
if($result['success']){
$resultMessage= date('Y-m-d G:i:s',$time)."\n提交成功".":".$url."\n\n";
}
fwrite($handle,$resultMessage);
fclose($handle);
}
}
}
上面的代碼有兩個(gè)API,改成自己的就好了。注:第一個(gè)api是天機收錄的接口調用地址。只有受原創(chuàng )保護的站長(cháng)才有資格使用它。第二個(gè)api地址是主動(dòng)推送(實(shí)時(shí))接口調用地址,別搞錯了。
另一個(gè)是關(guān)于 funtions.php 模板的路徑?,F在我給你一些提示。目前Kang使用的wordpress主題是Robin,這個(gè)funtions.php模板的路徑在/wp-content/themes/begin/根目錄下,大家可以自己找。
版權所有:科鼎博客 ? WNAG.COM.CN
文章標題:《wordpress如何實(shí)現向百度發(fā)布文章主動(dòng)推送(實(shí)時(shí))》
這篇文章的鏈接:
特別聲明:除非另有說(shuō)明,本站所有文章均為原創(chuàng ),本站文章原則上禁止轉載。如果真的要轉載請聯(lián)系我們:尊重他人勞動(dòng)成果,謝謝Over~
文章實(shí)時(shí)采集(gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)(一))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 161 次瀏覽 ? 2021-09-29 13:08
文章實(shí)時(shí)采集簡(jiǎn)介gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)
1、原理簡(jiǎn)介1.1預備知識計算機視覺(jué)方面的基礎知識,一般來(lái)說(shuō)所謂cnn模型,即使是神經(jīng)網(wǎng)絡(luò )模型,其圖像或者視頻或者信號或者文本數據都是二維數據,而且有噪聲(灰度、噪聲、扭曲等)。一般來(lái)說(shuō)在視頻等情況下,由于存在信號的持續傳播和速度的限制,一幀的信號單單通過(guò)激活函數是無(wú)法達到精確的分類(lèi)結果。同樣的道理,一個(gè)信號如果如果沒(méi)有經(jīng)過(guò)人工修正參數,或者完全只通過(guò)識別系統來(lái)識別,誤識率也會(huì )不斷提高,這樣一個(gè)模型的分類(lèi)精度也難以提高。
1.2卷積神經(jīng)網(wǎng)絡(luò )(cnn)1.2.1卷積層在計算機視覺(jué)計算上,卷積層有許多的應用。通過(guò)作用上的分類(lèi)比如:圖像、識別、文本分類(lèi)、網(wǎng)頁(yè)識別等等。由于cnn采用一個(gè)一個(gè)的卷積核使得該方法在圖像分類(lèi)和文本分類(lèi)等其他的一些任務(wù)上都取得了非常好的效果。假設我們想要的是分類(lèi)最準確的模型。簡(jiǎn)單設置是對角線(xiàn)和角接連的神經(jīng)元節點(diǎn)統統連接輸入。
但是,目前大多數計算機視覺(jué)任務(wù)中的大多數方法的維度是32x32以及更小的尺寸,但是對于要求大幅度提高分類(lèi)精度的識別(如自然語(yǔ)言處理)任務(wù)來(lái)說(shuō),一般情況下是2x2尺寸的。設置一個(gè)32x32的輸入節點(diǎn),圖像識別的分類(lèi)效果達到80%,識別的分類(lèi)效果達到90%。所以我們需要有一個(gè)足夠大的輸入,達到目標尺寸。
那么對于32x32的圖像,將32x32輸入到32x32的分類(lèi)網(wǎng)絡(luò )中將會(huì )得到32x32的輸出(可以看出,對于cnn單個(gè)輸入的輸出個(gè)數,是可以很多的,并且同樣的分類(lèi)效果有很多的輸出),結合圖像分類(lèi)一般用[0,1]輸出一個(gè)概率值,1表示正類(lèi),0表示負類(lèi)。因此,這種情況下設置輸入,輸出的神經(jīng)元數量,是有些不合理。
而且目前有時(shí)候需要求一個(gè)最大公約數(極大的方法),以使得用極大算法進(jìn)行計算,可以通過(guò)設置:計算函數,取非極大時(shí)的值作為輸出的分類(lèi),來(lái)達到更大效果的分類(lèi)結果。將這些值直接設置為[0,1]也可以達到預期的分類(lèi)結果。然而,在復雜情況下會(huì )出現這種結果:例如:識別:如果輸入尺寸是32x32,進(jìn)行識別的話(huà),一般會(huì )得到小于1的數據,即使用32x32進(jìn)行識別結果依然是錯誤的結果。
2、神經(jīng)網(wǎng)絡(luò )簡(jiǎn)介2.1創(chuàng )建原理cnn結構簡(jiǎn)單的說(shuō),cnn是一種深度神經(jīng)網(wǎng)絡(luò ),每一層都是一種卷積層。
1、圖像層進(jìn)行層與層的連接,
1)分別輸入卷積核;
2)通過(guò)運算
2、識別層進(jìn)行參數化處理,
1)分別的輸入是普通的音頻信號;
3、文本識 查看全部
文章實(shí)時(shí)采集(gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)(一))
文章實(shí)時(shí)采集簡(jiǎn)介gpu2:基于卷積神經(jīng)網(wǎng)絡(luò )的文本分類(lèi)任務(wù)
1、原理簡(jiǎn)介1.1預備知識計算機視覺(jué)方面的基礎知識,一般來(lái)說(shuō)所謂cnn模型,即使是神經(jīng)網(wǎng)絡(luò )模型,其圖像或者視頻或者信號或者文本數據都是二維數據,而且有噪聲(灰度、噪聲、扭曲等)。一般來(lái)說(shuō)在視頻等情況下,由于存在信號的持續傳播和速度的限制,一幀的信號單單通過(guò)激活函數是無(wú)法達到精確的分類(lèi)結果。同樣的道理,一個(gè)信號如果如果沒(méi)有經(jīng)過(guò)人工修正參數,或者完全只通過(guò)識別系統來(lái)識別,誤識率也會(huì )不斷提高,這樣一個(gè)模型的分類(lèi)精度也難以提高。
1.2卷積神經(jīng)網(wǎng)絡(luò )(cnn)1.2.1卷積層在計算機視覺(jué)計算上,卷積層有許多的應用。通過(guò)作用上的分類(lèi)比如:圖像、識別、文本分類(lèi)、網(wǎng)頁(yè)識別等等。由于cnn采用一個(gè)一個(gè)的卷積核使得該方法在圖像分類(lèi)和文本分類(lèi)等其他的一些任務(wù)上都取得了非常好的效果。假設我們想要的是分類(lèi)最準確的模型。簡(jiǎn)單設置是對角線(xiàn)和角接連的神經(jīng)元節點(diǎn)統統連接輸入。
但是,目前大多數計算機視覺(jué)任務(wù)中的大多數方法的維度是32x32以及更小的尺寸,但是對于要求大幅度提高分類(lèi)精度的識別(如自然語(yǔ)言處理)任務(wù)來(lái)說(shuō),一般情況下是2x2尺寸的。設置一個(gè)32x32的輸入節點(diǎn),圖像識別的分類(lèi)效果達到80%,識別的分類(lèi)效果達到90%。所以我們需要有一個(gè)足夠大的輸入,達到目標尺寸。
那么對于32x32的圖像,將32x32輸入到32x32的分類(lèi)網(wǎng)絡(luò )中將會(huì )得到32x32的輸出(可以看出,對于cnn單個(gè)輸入的輸出個(gè)數,是可以很多的,并且同樣的分類(lèi)效果有很多的輸出),結合圖像分類(lèi)一般用[0,1]輸出一個(gè)概率值,1表示正類(lèi),0表示負類(lèi)。因此,這種情況下設置輸入,輸出的神經(jīng)元數量,是有些不合理。
而且目前有時(shí)候需要求一個(gè)最大公約數(極大的方法),以使得用極大算法進(jìn)行計算,可以通過(guò)設置:計算函數,取非極大時(shí)的值作為輸出的分類(lèi),來(lái)達到更大效果的分類(lèi)結果。將這些值直接設置為[0,1]也可以達到預期的分類(lèi)結果。然而,在復雜情況下會(huì )出現這種結果:例如:識別:如果輸入尺寸是32x32,進(jìn)行識別的話(huà),一般會(huì )得到小于1的數據,即使用32x32進(jìn)行識別結果依然是錯誤的結果。
2、神經(jīng)網(wǎng)絡(luò )簡(jiǎn)介2.1創(chuàng )建原理cnn結構簡(jiǎn)單的說(shuō),cnn是一種深度神經(jīng)網(wǎng)絡(luò ),每一層都是一種卷積層。
1、圖像層進(jìn)行層與層的連接,
1)分別輸入卷積核;
2)通過(guò)運算
2、識別層進(jìn)行參數化處理,
1)分別的輸入是普通的音頻信號;
3、文本識
文章實(shí)時(shí)采集(小程序插件-gt實(shí)時(shí)日志使用規則(組圖) )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 281 次瀏覽 ? 2021-09-28 13:11
)
實(shí)時(shí)日志背景
為幫助小程序開(kāi)發(fā)者快速排查小程序漏洞和定位問(wèn)題,我們推出了實(shí)時(shí)日志功能。開(kāi)發(fā)者可以通過(guò)提供的接口打印日志,采集日志并實(shí)時(shí)上報給小程序后端。開(kāi)發(fā)者可以從小程序管理后臺“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入小程序日志查詢(xún)頁(yè)面,或從“小程序插件->實(shí)時(shí)日志”進(jìn)入插件日志查詢(xún)頁(yè)面Log”,然后查看開(kāi)發(fā)者打印的日志信息。
小程序/小游戲使用方法
從基礎庫2.7.1開(kāi)始,小終端可以使用實(shí)時(shí)日志,從基礎庫2.14.4開(kāi)始支持小游戲終端.
1、調用相關(guān)接口。日志的接口是wx.getRealtimeLogManager。為了兼容舊版本,建議使用如下代碼進(jìn)行封裝,例如封裝在log.js文件中:
var log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null
module.exports = {
debug() {
if (!log) return
log.debug.apply(log, arguments)
},
info() {
if (!log) return
log.info.apply(log, arguments)
},
warn() {
if (!log) return
log.warn.apply(log, arguments)
},
error() {
if (!log) return
log.error.apply(log, arguments)
},
setFilterMsg(msg) { // 從基礎庫2.7.3開(kāi)始支持
if (!log || !log.setFilterMsg) return
if (typeof msg !== 'string') return
log.setFilterMsg(msg)
},
addFilterMsg(msg) { // 從基礎庫2.8.1開(kāi)始支持
if (!log || !log.addFilterMsg) return
if (typeof msg !== 'string') return
log.addFilterMsg(msg)
}
}
2、在頁(yè)面特定位置打印日志:
var log = require('./log.js') // 引用上面的log.js文件
log.info('hello test hahaha') // 日志會(huì )和當前打開(kāi)的頁(yè)面關(guān)聯(lián),建議在頁(yè)面的onHide、onShow等生命周期里面打
log.warn('warn')
log.error('error')
log.setFilterMsg('filterkeyword')
log.addFilterMsg('addfilterkeyword')
完整的例子可以參考代碼片段:
插件端
從基礎庫2.16.0開(kāi)始,插件也支持實(shí)時(shí)日志。為了讓日志更加結構化以進(jìn)行更復雜的分析,插件端采用了全新設計的格式。
1、 調用相關(guān)接口 wx.getRealtimeLogManager 獲取實(shí)時(shí)日志管理器的實(shí)例:
const logManager = wx.getRealtimeLogManager()
2、在需要日志的邏輯中,獲取日志實(shí)例:
// 標簽名可以是任意字符串,一個(gè)標簽名對應一組日志;同樣的標簽名允許被重復使用,具有相同標簽名的日志在后臺會(huì )被匯總到一個(gè)標簽下
// 標簽可為日志進(jìn)行分類(lèi),因此建議開(kāi)發(fā)者按邏輯來(lái)進(jìn)行標簽劃分
const logger = logManager.tag('plugin-onUserTapSth')
3、在合適的位置打印日志:
logger.info('key1', 'value1') // 每條日志為一個(gè) key-value 對,key 必須是字符串,value 可以是字符串/數值/對象/數組等可序列化類(lèi)型
logger.error('key2', {str: 'value2'})
logger.warn('key3', 'value3')
logger.setFilterMsg('filterkeyword') // 和小程序/小游戲端接口一致
logger.setFilterMsg('addfilterkeyword') // 和小程序/小游戲端接口一致
如何查看日志
登錄小程序管理后臺,從“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面。開(kāi)發(fā)者可以通過(guò)設置時(shí)間、微信ID/OpenID、頁(yè)面鏈接、FilterMsg內容(基礎庫2.7.3及以上支持setFilterMsg)等過(guò)濾條件查詢(xún)指定用戶(hù)的日志信息。如果是插件上報的實(shí)時(shí)日志,可以通過(guò)“小程序插件->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面進(jìn)行查詢(xún)。
預防措施
由于后臺資源限制,“實(shí)時(shí)日志”的使用規則如下:
為了方便定位問(wèn)題,將日志按頁(yè)面劃分,某個(gè)頁(yè)面,在一定時(shí)間內(最短為5秒,最長(cháng)為頁(yè)面顯示和隱藏的時(shí)間間隔),會(huì )聚合成一個(gè)小程序管理后臺可以根據頁(yè)面路徑查找該日志。每個(gè)小程序賬號每天限制1000萬(wàn)條日志,日志保存7天。建議及時(shí)定位問(wèn)題。一個(gè)日志的上限為5KB,最多收錄200個(gè)打印日志函數調用(info、warn、error調用都算在內),所以要注意log,避免循環(huán)調用log接口,避免直接覆蓋console .log 點(diǎn)擊日志。反饋中的日志可以根據OpenID查找。setFilterMsg 和 addFilterMsg 可以設置類(lèi)似于日志標簽的過(guò)濾字段。如果需要添加多個(gè)關(guān)鍵字,建議使用addFilterMsg。比如addFilterMsg('scene1'), addFilterMsg('scene2'), addFilterMsg('scene3'),設置后可以隨機組合三個(gè)關(guān)鍵字在小程序管理后臺搜索,如:“scene1 scene2 scene3”, "scene1 scene2" ", "scene1 scene3" or "scene2" 等(用空格隔開(kāi),所以addFilterMsg不能收錄空格)日志可以通過(guò)以上幾種檢索方式進(jìn)行檢索,檢索條件越多越準確會(huì )的,目前為了方便日志分析,插件實(shí)時(shí)日志只支持key-value格式。實(shí)時(shí)日志目前僅支持手機端測試。工具端的接口可以調用,但是不會(huì )上報后臺。
查看全部
文章實(shí)時(shí)采集(小程序插件-gt實(shí)時(shí)日志使用規則(組圖)
)
實(shí)時(shí)日志背景
為幫助小程序開(kāi)發(fā)者快速排查小程序漏洞和定位問(wèn)題,我們推出了實(shí)時(shí)日志功能。開(kāi)發(fā)者可以通過(guò)提供的接口打印日志,采集日志并實(shí)時(shí)上報給小程序后端。開(kāi)發(fā)者可以從小程序管理后臺“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入小程序日志查詢(xún)頁(yè)面,或從“小程序插件->實(shí)時(shí)日志”進(jìn)入插件日志查詢(xún)頁(yè)面Log”,然后查看開(kāi)發(fā)者打印的日志信息。
小程序/小游戲使用方法
從基礎庫2.7.1開(kāi)始,小終端可以使用實(shí)時(shí)日志,從基礎庫2.14.4開(kāi)始支持小游戲終端.
1、調用相關(guān)接口。日志的接口是wx.getRealtimeLogManager。為了兼容舊版本,建議使用如下代碼進(jìn)行封裝,例如封裝在log.js文件中:
var log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null
module.exports = {
debug() {
if (!log) return
log.debug.apply(log, arguments)
},
info() {
if (!log) return
log.info.apply(log, arguments)
},
warn() {
if (!log) return
log.warn.apply(log, arguments)
},
error() {
if (!log) return
log.error.apply(log, arguments)
},
setFilterMsg(msg) { // 從基礎庫2.7.3開(kāi)始支持
if (!log || !log.setFilterMsg) return
if (typeof msg !== 'string') return
log.setFilterMsg(msg)
},
addFilterMsg(msg) { // 從基礎庫2.8.1開(kāi)始支持
if (!log || !log.addFilterMsg) return
if (typeof msg !== 'string') return
log.addFilterMsg(msg)
}
}
2、在頁(yè)面特定位置打印日志:
var log = require('./log.js') // 引用上面的log.js文件
log.info('hello test hahaha') // 日志會(huì )和當前打開(kāi)的頁(yè)面關(guān)聯(lián),建議在頁(yè)面的onHide、onShow等生命周期里面打
log.warn('warn')
log.error('error')
log.setFilterMsg('filterkeyword')
log.addFilterMsg('addfilterkeyword')
完整的例子可以參考代碼片段:
插件端
從基礎庫2.16.0開(kāi)始,插件也支持實(shí)時(shí)日志。為了讓日志更加結構化以進(jìn)行更復雜的分析,插件端采用了全新設計的格式。
1、 調用相關(guān)接口 wx.getRealtimeLogManager 獲取實(shí)時(shí)日志管理器的實(shí)例:
const logManager = wx.getRealtimeLogManager()
2、在需要日志的邏輯中,獲取日志實(shí)例:
// 標簽名可以是任意字符串,一個(gè)標簽名對應一組日志;同樣的標簽名允許被重復使用,具有相同標簽名的日志在后臺會(huì )被匯總到一個(gè)標簽下
// 標簽可為日志進(jìn)行分類(lèi),因此建議開(kāi)發(fā)者按邏輯來(lái)進(jìn)行標簽劃分
const logger = logManager.tag('plugin-onUserTapSth')
3、在合適的位置打印日志:
logger.info('key1', 'value1') // 每條日志為一個(gè) key-value 對,key 必須是字符串,value 可以是字符串/數值/對象/數組等可序列化類(lèi)型
logger.error('key2', {str: 'value2'})
logger.warn('key3', 'value3')
logger.setFilterMsg('filterkeyword') // 和小程序/小游戲端接口一致
logger.setFilterMsg('addfilterkeyword') // 和小程序/小游戲端接口一致
如何查看日志
登錄小程序管理后臺,從“開(kāi)發(fā)->開(kāi)發(fā)管理->運維中心->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面。開(kāi)發(fā)者可以通過(guò)設置時(shí)間、微信ID/OpenID、頁(yè)面鏈接、FilterMsg內容(基礎庫2.7.3及以上支持setFilterMsg)等過(guò)濾條件查詢(xún)指定用戶(hù)的日志信息。如果是插件上報的實(shí)時(shí)日志,可以通過(guò)“小程序插件->實(shí)時(shí)日志”進(jìn)入日志查詢(xún)頁(yè)面進(jìn)行查詢(xún)。

預防措施
由于后臺資源限制,“實(shí)時(shí)日志”的使用規則如下:
為了方便定位問(wèn)題,將日志按頁(yè)面劃分,某個(gè)頁(yè)面,在一定時(shí)間內(最短為5秒,最長(cháng)為頁(yè)面顯示和隱藏的時(shí)間間隔),會(huì )聚合成一個(gè)小程序管理后臺可以根據頁(yè)面路徑查找該日志。每個(gè)小程序賬號每天限制1000萬(wàn)條日志,日志保存7天。建議及時(shí)定位問(wèn)題。一個(gè)日志的上限為5KB,最多收錄200個(gè)打印日志函數調用(info、warn、error調用都算在內),所以要注意log,避免循環(huán)調用log接口,避免直接覆蓋console .log 點(diǎn)擊日志。反饋中的日志可以根據OpenID查找。setFilterMsg 和 addFilterMsg 可以設置類(lèi)似于日志標簽的過(guò)濾字段。如果需要添加多個(gè)關(guān)鍵字,建議使用addFilterMsg。比如addFilterMsg('scene1'), addFilterMsg('scene2'), addFilterMsg('scene3'),設置后可以隨機組合三個(gè)關(guān)鍵字在小程序管理后臺搜索,如:“scene1 scene2 scene3”, "scene1 scene2" ", "scene1 scene3" or "scene2" 等(用空格隔開(kāi),所以addFilterMsg不能收錄空格)日志可以通過(guò)以上幾種檢索方式進(jìn)行檢索,檢索條件越多越準確會(huì )的,目前為了方便日志分析,插件實(shí)時(shí)日志只支持key-value格式。實(shí)時(shí)日志目前僅支持手機端測試。工具端的接口可以調用,但是不會(huì )上報后臺。
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 185 次瀏覽 ? 2021-09-27 08:02
文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理。這是一篇具有實(shí)用性的python爬蟲(chóng)博客貼,包含了微信公眾號的數據采集和清洗方法:筆者研究了一下這個(gè)問(wèn)題,發(fā)現數據集取之不盡,也十分豐富。想獲取更多的話(huà),自己組織一下代碼和數據集,甚至爬蟲(chóng)加上人肉采集也都可以爬上去。準備工作清洗及預處理resize,replace,andloadresizeresizetocenterwithpython'smagnitude-linewhitefillcolorgraycolorizetheusefullayer.loadbetweenthedirsizedfilesandinner_blocks.例如srt_get_url_info_path/http/resources/mx4_dist.gif由于博客無(wú)法登陸,所以也沒(méi)有做cookiesharingwindows系統用shlife做ip或地址到文件夾的localsharedbasesecurity性能優(yōu)化對于同一個(gè)data里的不同directory分別下載數據(全部一樣就好)請避免對每個(gè)directory重復下載我這里用了3個(gè)directory:srt_dist/total,srt_dist/total.mx4和srt_dist/total.mx4.gif下載任務(wù)依次處理excel圖片的數據如下:文本轉json我一開(kāi)始用的是pandassortimage.txt,最好的是用pandassortpdf.txt。
用inlineterminal下的infile函數速度最快jsonreader里的用expand_dims()函數減小dim邊界比如要減去字符串中的content,改成decodeuricomponent(),保留四舍五入;要減去字符串中的text或者文本文件中的url如果以字典格式下載,df.to_csv()在windows編輯環(huán)境下,df.to_json()在linux下則直接下載就行,我這里直接用文本的方式content={'content':df.to_json()}text=json.loads(df.text)url=""'但是這樣做可能在排序時(shí)遇到問(wèn)題;有時(shí)候下載到txt后在importjson之前確實(shí)下載不出來(lái)json,那就用foriinrange(int(java.util.ioloop.task)):json.sort()或者new_url={"response_url":"","response_time":"","source":"","url":""}第三個(gè)問(wèn)題json的包裝字符串:url=""對于引入的模塊urllib3defurllib3_cookies():ifyouwanttoincludetheresourceswithoutexistingjson.loadsinmodule:open("url.txt",encoding="utf-8").write(result)else:open("cookies.json",encoding="utf-8").write(result)print("followingoperationsarethosewhousethisimplementation:")。 查看全部
文章實(shí)時(shí)采集(文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理)
文章實(shí)時(shí)采集數據,批量下載圖片并進(jìn)行清洗預處理。這是一篇具有實(shí)用性的python爬蟲(chóng)博客貼,包含了微信公眾號的數據采集和清洗方法:筆者研究了一下這個(gè)問(wèn)題,發(fā)現數據集取之不盡,也十分豐富。想獲取更多的話(huà),自己組織一下代碼和數據集,甚至爬蟲(chóng)加上人肉采集也都可以爬上去。準備工作清洗及預處理resize,replace,andloadresizeresizetocenterwithpython'smagnitude-linewhitefillcolorgraycolorizetheusefullayer.loadbetweenthedirsizedfilesandinner_blocks.例如srt_get_url_info_path/http/resources/mx4_dist.gif由于博客無(wú)法登陸,所以也沒(méi)有做cookiesharingwindows系統用shlife做ip或地址到文件夾的localsharedbasesecurity性能優(yōu)化對于同一個(gè)data里的不同directory分別下載數據(全部一樣就好)請避免對每個(gè)directory重復下載我這里用了3個(gè)directory:srt_dist/total,srt_dist/total.mx4和srt_dist/total.mx4.gif下載任務(wù)依次處理excel圖片的數據如下:文本轉json我一開(kāi)始用的是pandassortimage.txt,最好的是用pandassortpdf.txt。
用inlineterminal下的infile函數速度最快jsonreader里的用expand_dims()函數減小dim邊界比如要減去字符串中的content,改成decodeuricomponent(),保留四舍五入;要減去字符串中的text或者文本文件中的url如果以字典格式下載,df.to_csv()在windows編輯環(huán)境下,df.to_json()在linux下則直接下載就行,我這里直接用文本的方式content={'content':df.to_json()}text=json.loads(df.text)url=""'但是這樣做可能在排序時(shí)遇到問(wèn)題;有時(shí)候下載到txt后在importjson之前確實(shí)下載不出來(lái)json,那就用foriinrange(int(java.util.ioloop.task)):json.sort()或者new_url={"response_url":"","response_time":"","source":"","url":""}第三個(gè)問(wèn)題json的包裝字符串:url=""對于引入的模塊urllib3defurllib3_cookies():ifyouwanttoincludetheresourceswithoutexistingjson.loadsinmodule:open("url.txt",encoding="utf-8").write(result)else:open("cookies.json",encoding="utf-8").write(result)print("followingoperationsarethosewhousethisimplementation:")。


