自動(dòng)采集編寫(xiě)
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的數據
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2022-05-04 22:01
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的代碼里面的數據,然后用headers去請求一個(gè)json文件然后對爬蟲(chóng)發(fā)送請求,看返回的數據,和數據庫對應。就是這么簡(jiǎn)單。
謝邀!任何一個(gè)成熟的中間件都可以做到你說(shuō)的那樣。你自己設計或開(kāi)發(fā)一個(gè)也可以。
采集的話(huà)。就是簡(jiǎn)單的事情。
大家講的都有道理,我講一下我的理解吧,不一定完全正確,歡迎批評指正:如果是博客的話(huà),可以找到博客所屬的網(wǎng)站,根據網(wǎng)站的規范和域名,自己設計采集程序。然后找到對應的網(wǎng)站,利用js這種技術(shù)把你想采的目標頁(yè)面渲染出來(lái)。另外為啥要采abc?a,b,c指的是頁(yè)面里面的內容,abc可以看做整個(gè)網(wǎng)站的目錄。c下面是d。
這樣采了以后,你直接把對應的abc這樣的目錄文件放到相應的頁(yè)面中。每次爬都用的是之前設定好的頁(yè)面文件。
采集指的是爬蟲(chóng),采站或者采團隊成員的站。目前是pc爬蟲(chóng)為主,因為有瀏覽器分類(lèi),但一般采用pc采集。另外采集的模式是利用scrapy/gray/flask/bot等框架,通過(guò)python或shell等技術(shù)解析采集結果。方案根據你爬的站數量需求會(huì )有一些不同。如果爬得多,爬得差可以建立一個(gè)scrapy-botfrom這樣的組,用python寫(xiě),然后在你定位的站點(diǎn)中爬爬試試。
你得去找一個(gè)可以爬過(guò)程的工具,不斷的重復一個(gè)過(guò)程 查看全部
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的數據
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的代碼里面的數據,然后用headers去請求一個(gè)json文件然后對爬蟲(chóng)發(fā)送請求,看返回的數據,和數據庫對應。就是這么簡(jiǎn)單。
謝邀!任何一個(gè)成熟的中間件都可以做到你說(shuō)的那樣。你自己設計或開(kāi)發(fā)一個(gè)也可以。
采集的話(huà)。就是簡(jiǎn)單的事情。
大家講的都有道理,我講一下我的理解吧,不一定完全正確,歡迎批評指正:如果是博客的話(huà),可以找到博客所屬的網(wǎng)站,根據網(wǎng)站的規范和域名,自己設計采集程序。然后找到對應的網(wǎng)站,利用js這種技術(shù)把你想采的目標頁(yè)面渲染出來(lái)。另外為啥要采abc?a,b,c指的是頁(yè)面里面的內容,abc可以看做整個(gè)網(wǎng)站的目錄。c下面是d。
這樣采了以后,你直接把對應的abc這樣的目錄文件放到相應的頁(yè)面中。每次爬都用的是之前設定好的頁(yè)面文件。
采集指的是爬蟲(chóng),采站或者采團隊成員的站。目前是pc爬蟲(chóng)為主,因為有瀏覽器分類(lèi),但一般采用pc采集。另外采集的模式是利用scrapy/gray/flask/bot等框架,通過(guò)python或shell等技術(shù)解析采集結果。方案根據你爬的站數量需求會(huì )有一些不同。如果爬得多,爬得差可以建立一個(gè)scrapy-botfrom這樣的組,用python寫(xiě),然后在你定位的站點(diǎn)中爬爬試試。
你得去找一個(gè)可以爬過(guò)程的工具,不斷的重復一個(gè)過(guò)程
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data(圖)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 142 次瀏覽 ? 2022-05-02 18:00
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data。通過(guò)正則表達式得到的是request_url等php類(lèi)型變量。發(fā)送數據的方式是網(wǎng)頁(yè)上的形如“數據請求”時(shí)的net_url。爬蟲(chóng)代碼每個(gè)網(wǎng)頁(yè)都會(huì )由很多post請求構成。爬蟲(chóng)控制器中相應的爬蟲(chóng)對象對這些請求做處理并返回網(wǎng)頁(yè)的post請求的url。
filter掉然后發(fā)請求
看@克銳在高程里面講的:xpath存xmlpost發(fā)postheadref=“page({}).html”+url;返回值也要注意,一般正常返回是:{page}/page/xml;index:url;}還有注意get和post的不同:get,應該是發(fā)表達式,httpsession會(huì )保存這個(gè)表達式,后面服務(wù)器接受了sessionid,就把網(wǎng)頁(yè)搞下來(lái);post,不應該發(fā)表達式,因為session會(huì )根據表達式把網(wǎng)頁(yè)搞下來(lái),一般不會(huì )把sessionid保存在session內。
另外如果服務(wù)器響應:{url}/{page}/xml;index:url;請不要驗證真假,因為正常情況下這個(gè)url/page/xml;index肯定是。
header中的user-agent不知道你們用的是哪里的:disallow:[block0]headeruser-agent中的user-agent是springmvc中的agent-marker-style頭部的bean。在header中輸入user-agent的值springmvc會(huì )驗證bean中的參數,如果有這樣的值就返回給springmvc。
例如:@autowiredpublic@interfaceagent-marker-style{intgetvalue()throwsillegalargumentexception,interruptedexception{}}vs-marker-style通過(guò)@autowired注入的@interface的方法是單行注入,在這里這里就是只有單行注入:。 查看全部
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data(圖)
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data。通過(guò)正則表達式得到的是request_url等php類(lèi)型變量。發(fā)送數據的方式是網(wǎng)頁(yè)上的形如“數據請求”時(shí)的net_url。爬蟲(chóng)代碼每個(gè)網(wǎng)頁(yè)都會(huì )由很多post請求構成。爬蟲(chóng)控制器中相應的爬蟲(chóng)對象對這些請求做處理并返回網(wǎng)頁(yè)的post請求的url。
filter掉然后發(fā)請求
看@克銳在高程里面講的:xpath存xmlpost發(fā)postheadref=“page({}).html”+url;返回值也要注意,一般正常返回是:{page}/page/xml;index:url;}還有注意get和post的不同:get,應該是發(fā)表達式,httpsession會(huì )保存這個(gè)表達式,后面服務(wù)器接受了sessionid,就把網(wǎng)頁(yè)搞下來(lái);post,不應該發(fā)表達式,因為session會(huì )根據表達式把網(wǎng)頁(yè)搞下來(lái),一般不會(huì )把sessionid保存在session內。
另外如果服務(wù)器響應:{url}/{page}/xml;index:url;請不要驗證真假,因為正常情況下這個(gè)url/page/xml;index肯定是。
header中的user-agent不知道你們用的是哪里的:disallow:[block0]headeruser-agent中的user-agent是springmvc中的agent-marker-style頭部的bean。在header中輸入user-agent的值springmvc會(huì )驗證bean中的參數,如果有這樣的值就返回給springmvc。
例如:@autowiredpublic@interfaceagent-marker-style{intgetvalue()throwsillegalargumentexception,interruptedexception{}}vs-marker-style通過(guò)@autowired注入的@interface的方法是單行注入,在這里這里就是只有單行注入:。
||ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 125 次瀏覽 ? 2022-04-30 09:00
摘要:以“5·12”汶川地震、“4·20”蘆山地震和“6·18”寧南特大山洪泥石流等地質(zhì)災害為例,在 ArcGIS環(huán)境下采用 ArcMap 軟件與 Python 腳本開(kāi)發(fā)相結合的方式,利用多時(shí)期無(wú)人機影像進(jìn)行災害樣本的采集,批量處理多種災害樣本,從而建立對應的無(wú)人機影像災害樣本庫。關(guān)鍵詞ArcGIS;無(wú)人機;地質(zhì)災害;樣本庫1 引言20 世紀 90 年代以來(lái),受人類(lèi)活動(dòng)和全球化的影響,地質(zhì)災害越發(fā)嚴重,地質(zhì)災害發(fā)生的規模、數量和分布范圍呈上升趨勢。2008 年“5·12”汶川特大地震后,由于地質(zhì)結構被破壞,加之惡劣天氣的影響,滑坡和泥石流等次生災害在很長(cháng)一段時(shí)間內影響著(zhù)震區,這些地質(zhì)災害不僅直接或者間接地危害人民群眾生命、財產(chǎn)安全,還會(huì )給社會(huì )和經(jīng)濟建設造成巨大的損失。利用遙感技術(shù)獲取災區影像已成為災后獲取災害信息的重要手段,無(wú)人機遙感技術(shù)時(shí)效性強、使用成本低、起降方式靈活多樣、影像分辨率高等優(yōu)勢,使其在地質(zhì)災害應急救援工作中具有廣闊的應用前景和發(fā)展前途。近幾年,相關(guān)應急救災部門(mén)已經(jīng)具備在災后第一時(shí)間獲取地質(zhì)災害現場(chǎng)的無(wú)人機影像的能力。是一門(mén)解釋型語(yǔ)言,因其不需要編譯和鏈接的時(shí)間,所以能夠節省開(kāi)發(fā)時(shí)間,解釋器可以交互式使用,同時(shí)能夠很方便地測試語(yǔ)言中的各種功能,便于編寫(xiě)發(fā)布用的程序,具有開(kāi)源、模塊豐富、面向對象、面向過(guò)程等特性,能夠與 ArcGIS 軟件很好地結合使用[3]。從 ArcGIS9.0 開(kāi)始,我們就可以使用 Python, 并把它作為首選腳本語(yǔ)言[4],實(shí)現空間數據的自動(dòng)化批量處理,從而起到簡(jiǎn)化流程,提高工作的自動(dòng)化程度的作用[2]。本文介紹一種在 ArcGIS環(huán)境下,結合 Python 腳本開(kāi)發(fā)的方式,利用歷史系列無(wú)人機影像快速批量建立地質(zhì)災害樣本庫的方法,該樣本庫可為后續災害識別提供基礎的訓練數據支持,一定程度上改善了樣本數據采集僅停留在人工解譯層面的現狀。
2 研究區與實(shí)驗數據
根據現有數據情況確定的研究區包括:2008 年汶川地震受災的汶川縣、北川縣、安縣、綿竹縣及都江堰市;2010 年寧南泥石流受災的涼山州寧南縣;2013年蘆山地震受災的蘆山縣、寶興縣、天全縣以及雨城區。研究區內涉及滑坡、泥石流、房屋倒塌、斷路斷橋、洪澇等災害,且災害大多分布于山區,影像數據為災后高分辨率無(wú)人機遙感影像,影像覆蓋面積總計644.59 平方千米。研究區范圍和數據覆蓋情況見(jiàn)圖 1。
3 災害影像樣本采集
3.1 基于 Python 的災害樣本采集方法的建立
Python 為腳本開(kāi)發(fā)語(yǔ)言,因為 Python 簡(jiǎn)單易操作,功能齊全,通過(guò) Python 調用 ArcGIS 的一些功能的開(kāi)發(fā)方式在復雜的數據處理等方面有很大的優(yōu)勢[1]。本文利用 ArcGIS 提供的 Python 站點(diǎn)包 ArcPy,實(shí)現了系列無(wú)人機影像災害點(diǎn)樣本數據的自動(dòng)批量裁剪。具體實(shí)現方法是:基于 Python 編寫(xiě)好的腳本文本在A(yíng)rcGIS 中創(chuàng )建自定義 Arctoolbox 工具,首先配置工作空間,如圖 2 所示:工作空間下有 images 文件夾,用于存放災害的原始影像,支持系列無(wú)人機影像;points 文件夾用于存放災害點(diǎn)矢量數據,該矢量數據為災害點(diǎn)的位置數據,字段信息需包含災害類(lèi)型、樣本大小等相關(guān)用于腳本語(yǔ)言讀取的字段;samples 文件夾用于存放生成的災害樣本數據;tool 文件夾存放ArcGIStoolbox 工具箱,并將此目錄關(guān)聯(lián)到 ArcGIS中。
工具的關(guān)聯(lián)和參數設置如圖 3 所示。在 ArcGIS toolbox 工具箱下添加一個(gè)新的 Toolbox ( New Toolbox),在 Toolbox 中可添加腳本工具,Add 一個(gè)新的 Script,這個(gè)新增加的 Script 工具可以和 Python文件關(guān)聯(lián),在 Script File 中選擇影像樣本裁剪所需的 py 文件,創(chuàng )建用于樣本裁剪的 clip raster 工具。
3.2 采集災害樣本
基于收集到的無(wú)人機影像,進(jìn)一步通過(guò)目視解譯的方法,完善專(zhuān)題資料上沒(méi)有的災害點(diǎn)信息。用與ArcGIS 建立災害點(diǎn)數據,并將具有災害點(diǎn)的影像圖存放在工作空間的 images 文件夾下,點(diǎn)擊 clip raster工具,在出現的界面下路徑文件選擇建立好的工作空間 Clip 即可對影像進(jìn)行自動(dòng)裁剪如圖 4 所示,批量處理得到各類(lèi)災害樣本,并制作地質(zhì)災害范圍圖層。
基于 Python 的災害樣本采集方法的建立,與其他的樣本采集方法相比更為方便。根據實(shí)地和受災范圍的大小來(lái)對每種災害類(lèi)型的樣本大小統一進(jìn)行設置,自動(dòng)采集好災害樣本后,在 samples 里查看每種類(lèi)型的災害樣本大小采集的是否合適、樣本的可辨度是否高,如果不合理,可以重新設置樣本大小來(lái)重新采集,直到每種災害類(lèi)型的樣本都清晰可見(jiàn),并且可辨度高。樣本具體制作流程如圖 5 所示。
4 樣本數據庫
4.1 樣本數據庫的建設
數據庫的建設是管理信息資源最有效地手段,對于某一目的的應用環(huán)境,構建最優(yōu)的數據庫模式。建立數據庫一方面不僅能有效地存儲數據,另一方面還能滿(mǎn)足用戶(hù)信息要求和處理要求,使用戶(hù)更顯而易見(jiàn)地了解到樣本的各方面的數據信息。本次樣本數據庫的建設,按照成果要求和相關(guān)規范,制定了災害點(diǎn)屬性信息采集標準及相應的規范格式,并確定災害相關(guān)信息的編碼規范;最后按照成果要求進(jìn)行入庫,入庫成果包括災害樣本影像數據、地面照片、災害點(diǎn)矢量數據、災害范圍矢量數據和屬性信息數據表,形成災害樣本數據庫,如圖 6 所示。
4.2 樣本數據庫表格的設計
遙感解譯樣本數據主要包括災害樣本影像數據、實(shí)地照片、災害點(diǎn)矢量數據、災害范圍矢量數據和災害屬性信息數據表。樣本數據要求影像紋理清晰、地物特征明顯;影像紋理和光譜信息豐富、色調均勻、反差適中。建立災害樣本數據的工作量是非常龐大的,它需要合理組織樣本數據庫。為了能快速方便地查詢(xún)獲取樣本數據及其基本信息,系統應當按照不同地質(zhì)災害類(lèi)型建庫,把同種地災類(lèi)多時(shí)相、多來(lái)源、不同分辨率等的樣本數據存放在一張表中,而把其他地類(lèi)樣本放在另一張表中。將所采集的樣本數據輸入到數據庫中,建立每種類(lèi)別的多時(shí)相、多分辨率、多來(lái)源的樣本影像數據庫。建立遙感解譯樣本數據庫必須考慮行政區位、日期、影像來(lái)源、紋理、形狀與地形等特征,這不僅僅是簡(jiǎn)單地將所有樣本影像堆積,而是必須按照樣本影像的類(lèi)別進(jìn)行分類(lèi)存放,同時(shí)存儲這些影像的元數據及其描述信息。災害屬性信息數據表中包含災害名稱(chēng)、影像源、日期、行政區位、經(jīng)度、緯度、誘發(fā)因素、險情級別、圖幅號、樣本大小、光譜特征、形狀特征、紋理特征、地形類(lèi)型。遙感解譯樣本數據庫基本結構示例如圖 7所示。
4.3 樣本數據庫示例
災害樣本數據整理,是以實(shí)地照片及其屬性信息為基礎,獲取災害樣本影像及相關(guān)屬性信息,從而建立災害樣本數據庫。樣本數據庫示例如圖 8 所示。
4.4 樣本數據庫的檢查與更新
遙感解譯影像樣本數據庫也需要進(jìn)行后期檢查,結合影像庫進(jìn)行各項專(zhuān)業(yè)信息提取,并對其獲取的專(zhuān)業(yè)信息成果進(jìn)行檢查,同時(shí)還能夠利用 GPS 輔助外業(yè)檢查,運用之前提取的成果檢查樣本庫,及時(shí)更新以保持數據的正確性與有效性。遙感解譯影像樣本數據庫是某個(gè)時(shí)期該地區的遙感樣本影像,對于不同年份應依照收集的資料情況建立不同年度的樣本影像庫,以保證樣本影像庫的時(shí)效性。
5 結束語(yǔ)
在具體工作實(shí)踐中常常需要根據特定的專(zhuān)業(yè)業(yè)務(wù)需要定制適合解決問(wèn)題的地理處理工具,Python與 ArcGIS 的結合,使得問(wèn)題變得簡(jiǎn)單,操作也變得簡(jiǎn)單,處理問(wèn)題也變得比較方便容易一些,所以Python 在 ArcGIS 地理處理框架中占據非常重要的位置。ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設,在裁剪樣本的過(guò)程中提高了速度,并且可以批量處理多種災害樣本,節約了時(shí)間的同時(shí)也大大減少了人力;數據庫的成功建設,不僅有助于我們清晰地了解災害信息,而且可為后一步的災害識別工作提供基礎的訓練數據支持。
參考文獻:
[1] 丘恩. Python 核心編程(第 2 版)[M]. 北京:人民郵電出版社,2008.
[2] 焦洋,鄧鑫,李勝才. 基于 Python 的 ArcGIS 空間數據格式批處理轉換工具開(kāi)發(fā)[J]. 現代測繪,2012,35(3):54-55.
[3] 馬衛春,楊友長(cháng). 基于 Python 的 ArcGIS Server 地圖瓦片定時(shí)自動(dòng)更新方法[J]. 地理空間信息,2013, 11(2):147-149.
[4] 田學(xué)志. 基于 Python 的 ArcGIS 地理處理應用研究[J].計算機光盤(pán)軟件與應用,2013,(7).
最后,小編提醒,由于微信修改了推送規則,沒(méi)有經(jīng)常留言或點(diǎn)“在看”的,會(huì )慢慢的收不到推送!如果你還想每天看到我們的推送,請將ArcGis愛(ài)學(xué)習加為星標或每次看完后點(diǎn)擊一下頁(yè)面下端的“贊”“在看”,拜托了!▼往期精彩回顧 ▼
2、
3、
4、 查看全部
||ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設
摘要:以“5·12”汶川地震、“4·20”蘆山地震和“6·18”寧南特大山洪泥石流等地質(zhì)災害為例,在 ArcGIS環(huán)境下采用 ArcMap 軟件與 Python 腳本開(kāi)發(fā)相結合的方式,利用多時(shí)期無(wú)人機影像進(jìn)行災害樣本的采集,批量處理多種災害樣本,從而建立對應的無(wú)人機影像災害樣本庫。關(guān)鍵詞ArcGIS;無(wú)人機;地質(zhì)災害;樣本庫1 引言20 世紀 90 年代以來(lái),受人類(lèi)活動(dòng)和全球化的影響,地質(zhì)災害越發(fā)嚴重,地質(zhì)災害發(fā)生的規模、數量和分布范圍呈上升趨勢。2008 年“5·12”汶川特大地震后,由于地質(zhì)結構被破壞,加之惡劣天氣的影響,滑坡和泥石流等次生災害在很長(cháng)一段時(shí)間內影響著(zhù)震區,這些地質(zhì)災害不僅直接或者間接地危害人民群眾生命、財產(chǎn)安全,還會(huì )給社會(huì )和經(jīng)濟建設造成巨大的損失。利用遙感技術(shù)獲取災區影像已成為災后獲取災害信息的重要手段,無(wú)人機遙感技術(shù)時(shí)效性強、使用成本低、起降方式靈活多樣、影像分辨率高等優(yōu)勢,使其在地質(zhì)災害應急救援工作中具有廣闊的應用前景和發(fā)展前途。近幾年,相關(guān)應急救災部門(mén)已經(jīng)具備在災后第一時(shí)間獲取地質(zhì)災害現場(chǎng)的無(wú)人機影像的能力。是一門(mén)解釋型語(yǔ)言,因其不需要編譯和鏈接的時(shí)間,所以能夠節省開(kāi)發(fā)時(shí)間,解釋器可以交互式使用,同時(shí)能夠很方便地測試語(yǔ)言中的各種功能,便于編寫(xiě)發(fā)布用的程序,具有開(kāi)源、模塊豐富、面向對象、面向過(guò)程等特性,能夠與 ArcGIS 軟件很好地結合使用[3]。從 ArcGIS9.0 開(kāi)始,我們就可以使用 Python, 并把它作為首選腳本語(yǔ)言[4],實(shí)現空間數據的自動(dòng)化批量處理,從而起到簡(jiǎn)化流程,提高工作的自動(dòng)化程度的作用[2]。本文介紹一種在 ArcGIS環(huán)境下,結合 Python 腳本開(kāi)發(fā)的方式,利用歷史系列無(wú)人機影像快速批量建立地質(zhì)災害樣本庫的方法,該樣本庫可為后續災害識別提供基礎的訓練數據支持,一定程度上改善了樣本數據采集僅停留在人工解譯層面的現狀。
2 研究區與實(shí)驗數據
根據現有數據情況確定的研究區包括:2008 年汶川地震受災的汶川縣、北川縣、安縣、綿竹縣及都江堰市;2010 年寧南泥石流受災的涼山州寧南縣;2013年蘆山地震受災的蘆山縣、寶興縣、天全縣以及雨城區。研究區內涉及滑坡、泥石流、房屋倒塌、斷路斷橋、洪澇等災害,且災害大多分布于山區,影像數據為災后高分辨率無(wú)人機遙感影像,影像覆蓋面積總計644.59 平方千米。研究區范圍和數據覆蓋情況見(jiàn)圖 1。
3 災害影像樣本采集
3.1 基于 Python 的災害樣本采集方法的建立
Python 為腳本開(kāi)發(fā)語(yǔ)言,因為 Python 簡(jiǎn)單易操作,功能齊全,通過(guò) Python 調用 ArcGIS 的一些功能的開(kāi)發(fā)方式在復雜的數據處理等方面有很大的優(yōu)勢[1]。本文利用 ArcGIS 提供的 Python 站點(diǎn)包 ArcPy,實(shí)現了系列無(wú)人機影像災害點(diǎn)樣本數據的自動(dòng)批量裁剪。具體實(shí)現方法是:基于 Python 編寫(xiě)好的腳本文本在A(yíng)rcGIS 中創(chuàng )建自定義 Arctoolbox 工具,首先配置工作空間,如圖 2 所示:工作空間下有 images 文件夾,用于存放災害的原始影像,支持系列無(wú)人機影像;points 文件夾用于存放災害點(diǎn)矢量數據,該矢量數據為災害點(diǎn)的位置數據,字段信息需包含災害類(lèi)型、樣本大小等相關(guān)用于腳本語(yǔ)言讀取的字段;samples 文件夾用于存放生成的災害樣本數據;tool 文件夾存放ArcGIStoolbox 工具箱,并將此目錄關(guān)聯(lián)到 ArcGIS中。
工具的關(guān)聯(lián)和參數設置如圖 3 所示。在 ArcGIS toolbox 工具箱下添加一個(gè)新的 Toolbox ( New Toolbox),在 Toolbox 中可添加腳本工具,Add 一個(gè)新的 Script,這個(gè)新增加的 Script 工具可以和 Python文件關(guān)聯(lián),在 Script File 中選擇影像樣本裁剪所需的 py 文件,創(chuàng )建用于樣本裁剪的 clip raster 工具。
3.2 采集災害樣本
基于收集到的無(wú)人機影像,進(jìn)一步通過(guò)目視解譯的方法,完善專(zhuān)題資料上沒(méi)有的災害點(diǎn)信息。用與ArcGIS 建立災害點(diǎn)數據,并將具有災害點(diǎn)的影像圖存放在工作空間的 images 文件夾下,點(diǎn)擊 clip raster工具,在出現的界面下路徑文件選擇建立好的工作空間 Clip 即可對影像進(jìn)行自動(dòng)裁剪如圖 4 所示,批量處理得到各類(lèi)災害樣本,并制作地質(zhì)災害范圍圖層。
基于 Python 的災害樣本采集方法的建立,與其他的樣本采集方法相比更為方便。根據實(shí)地和受災范圍的大小來(lái)對每種災害類(lèi)型的樣本大小統一進(jìn)行設置,自動(dòng)采集好災害樣本后,在 samples 里查看每種類(lèi)型的災害樣本大小采集的是否合適、樣本的可辨度是否高,如果不合理,可以重新設置樣本大小來(lái)重新采集,直到每種災害類(lèi)型的樣本都清晰可見(jiàn),并且可辨度高。樣本具體制作流程如圖 5 所示。
4 樣本數據庫
4.1 樣本數據庫的建設
數據庫的建設是管理信息資源最有效地手段,對于某一目的的應用環(huán)境,構建最優(yōu)的數據庫模式。建立數據庫一方面不僅能有效地存儲數據,另一方面還能滿(mǎn)足用戶(hù)信息要求和處理要求,使用戶(hù)更顯而易見(jiàn)地了解到樣本的各方面的數據信息。本次樣本數據庫的建設,按照成果要求和相關(guān)規范,制定了災害點(diǎn)屬性信息采集標準及相應的規范格式,并確定災害相關(guān)信息的編碼規范;最后按照成果要求進(jìn)行入庫,入庫成果包括災害樣本影像數據、地面照片、災害點(diǎn)矢量數據、災害范圍矢量數據和屬性信息數據表,形成災害樣本數據庫,如圖 6 所示。
4.2 樣本數據庫表格的設計
遙感解譯樣本數據主要包括災害樣本影像數據、實(shí)地照片、災害點(diǎn)矢量數據、災害范圍矢量數據和災害屬性信息數據表。樣本數據要求影像紋理清晰、地物特征明顯;影像紋理和光譜信息豐富、色調均勻、反差適中。建立災害樣本數據的工作量是非常龐大的,它需要合理組織樣本數據庫。為了能快速方便地查詢(xún)獲取樣本數據及其基本信息,系統應當按照不同地質(zhì)災害類(lèi)型建庫,把同種地災類(lèi)多時(shí)相、多來(lái)源、不同分辨率等的樣本數據存放在一張表中,而把其他地類(lèi)樣本放在另一張表中。將所采集的樣本數據輸入到數據庫中,建立每種類(lèi)別的多時(shí)相、多分辨率、多來(lái)源的樣本影像數據庫。建立遙感解譯樣本數據庫必須考慮行政區位、日期、影像來(lái)源、紋理、形狀與地形等特征,這不僅僅是簡(jiǎn)單地將所有樣本影像堆積,而是必須按照樣本影像的類(lèi)別進(jìn)行分類(lèi)存放,同時(shí)存儲這些影像的元數據及其描述信息。災害屬性信息數據表中包含災害名稱(chēng)、影像源、日期、行政區位、經(jīng)度、緯度、誘發(fā)因素、險情級別、圖幅號、樣本大小、光譜特征、形狀特征、紋理特征、地形類(lèi)型。遙感解譯樣本數據庫基本結構示例如圖 7所示。
4.3 樣本數據庫示例
災害樣本數據整理,是以實(shí)地照片及其屬性信息為基礎,獲取災害樣本影像及相關(guān)屬性信息,從而建立災害樣本數據庫。樣本數據庫示例如圖 8 所示。
4.4 樣本數據庫的檢查與更新
遙感解譯影像樣本數據庫也需要進(jìn)行后期檢查,結合影像庫進(jìn)行各項專(zhuān)業(yè)信息提取,并對其獲取的專(zhuān)業(yè)信息成果進(jìn)行檢查,同時(shí)還能夠利用 GPS 輔助外業(yè)檢查,運用之前提取的成果檢查樣本庫,及時(shí)更新以保持數據的正確性與有效性。遙感解譯影像樣本數據庫是某個(gè)時(shí)期該地區的遙感樣本影像,對于不同年份應依照收集的資料情況建立不同年度的樣本影像庫,以保證樣本影像庫的時(shí)效性。
5 結束語(yǔ)
在具體工作實(shí)踐中常常需要根據特定的專(zhuān)業(yè)業(yè)務(wù)需要定制適合解決問(wèn)題的地理處理工具,Python與 ArcGIS 的結合,使得問(wèn)題變得簡(jiǎn)單,操作也變得簡(jiǎn)單,處理問(wèn)題也變得比較方便容易一些,所以Python 在 ArcGIS 地理處理框架中占據非常重要的位置。ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設,在裁剪樣本的過(guò)程中提高了速度,并且可以批量處理多種災害樣本,節約了時(shí)間的同時(shí)也大大減少了人力;數據庫的成功建設,不僅有助于我們清晰地了解災害信息,而且可為后一步的災害識別工作提供基礎的訓練數據支持。
參考文獻:
[1] 丘恩. Python 核心編程(第 2 版)[M]. 北京:人民郵電出版社,2008.
[2] 焦洋,鄧鑫,李勝才. 基于 Python 的 ArcGIS 空間數據格式批處理轉換工具開(kāi)發(fā)[J]. 現代測繪,2012,35(3):54-55.
[3] 馬衛春,楊友長(cháng). 基于 Python 的 ArcGIS Server 地圖瓦片定時(shí)自動(dòng)更新方法[J]. 地理空間信息,2013, 11(2):147-149.
[4] 田學(xué)志. 基于 Python 的 ArcGIS 地理處理應用研究[J].計算機光盤(pán)軟件與應用,2013,(7).
最后,小編提醒,由于微信修改了推送規則,沒(méi)有經(jīng)常留言或點(diǎn)“在看”的,會(huì )慢慢的收不到推送!如果你還想每天看到我們的推送,請將ArcGis愛(ài)學(xué)習加為星標或每次看完后點(diǎn)擊一下頁(yè)面下端的“贊”“在看”,拜托了!▼往期精彩回顧 ▼
2、
3、
4、
自動(dòng)采集編寫(xiě)(Scrapy框架Scrapy架構圖)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2022-04-18 14:20
Scrapy 框架 Scrapy 架構圖(綠線(xiàn)為數據流向):
Scrapy 的工作原理
代碼寫(xiě)好了,程序開(kāi)始運行了……
發(fā)動(dòng)機:嗨!蜘蛛,你在對付哪個(gè)網(wǎng)站?
蜘蛛:老板要我處理。
引擎:給我第一個(gè)需要處理的 URL。
Spider:在這里,第一個(gè) URL 是。
發(fā)動(dòng)機:嗨!調度員,我有一個(gè)請求,請求您幫我排序并加入隊列。
調度程序:好的,正在處理您等一下。
發(fā)動(dòng)機:嗨!調度員,給我你處理的請求。
調度器:給你,這是我處理的請求
發(fā)動(dòng)機:嗨!下載者,請幫我按照老板下載中間件的設置下載這個(gè)請求
下載者:好的!給你,這是下載的東西。(如果失?。簊orry,這個(gè)請求下載失敗。然后引擎告訴調度器這個(gè)請求下載失敗,你記錄一下,我們稍后下載)
發(fā)動(dòng)機:嗨!蜘蛛,這是一個(gè)下載的東西,已經(jīng)按照老大的下載中間件進(jìn)行了處理,你可以自己處理(注意!這里的響應默認由def parse()函數處理)
蜘蛛:(處理數據后需要跟進(jìn)的URL),嗨!Engine,我這里有兩個(gè)結果,這是我需要跟進(jìn)的URL,這是我得到的Item數據。
發(fā)動(dòng)機:嗨!我這里有一件物品,請幫我處理!調度器!這個(gè)是需要你跟進(jìn)的網(wǎng)址幫我處理的。然后從第四步開(kāi)始循環(huán),直到得到boss需要的所有信息。
Pipes ``調度器:好的,現在就做!
注意!只有當調度器中沒(méi)有請求時(shí),整個(gè)程序才會(huì )停止,(即對于下載失敗的URL,Scrapy也會(huì )重新下載。)
制作一個(gè)Scrapy爬蟲(chóng)一共需要4步: Scrapy安裝介紹
Scrapy框架官網(wǎng):
Scrapy中文維護網(wǎng)站:
Windows安裝方式Ubuntu需要9.10以上的安裝方式
安裝完成后,只要在命令終端輸入scrapy,就會(huì )出現類(lèi)似如下的結果,說(shuō)明已經(jīng)安裝成功
具體Scrapy安裝過(guò)程參考:每個(gè)平臺都有安裝方法
入門(mén)案例學(xué)習目標一. 新項目(scrapy startproject)
scrapy startproject mySpider
下面簡(jiǎn)單介紹一下各個(gè)主文件的作用:
scrapy.cfg :項目的配置文件
mySpider/ :項目的 Python 模塊,將從中引用代碼
mySpider/items.py :項目的目標文件
mySpider/pipelines.py :項目的管道文件
mySpider/settings.py :項目的設置文件
mySpider/spiders/ : 蜘蛛代碼存放的目錄
信息。
打開(kāi) mySpider 目錄下的 items.py
Item 定義了一個(gè)結構化的數據字段來(lái)保存爬取的數據,有點(diǎn)像 Python 中的 dict,但提供了一些額外的保護來(lái)減少錯誤。
可以通過(guò)創(chuàng )建一個(gè)scrapy.Item類(lèi)并定義一個(gè)scrapy.Field類(lèi)型的類(lèi)屬性來(lái)定義一個(gè)Item(可以理解為一種類(lèi)似于ORM的映射關(guān)系)。
接下來(lái),創(chuàng )建一個(gè) ItcastItem 類(lèi),并構建項目模型。
import scrapy
class ItcastItem(scrapy.Item):
name = scrapy.Field()
level = scrapy.Field()
info = scrapy.Field()
三、制作蜘蛛 (spiders/itcastSpider.py)
爬蟲(chóng)功能分為兩步:
1. 爬取數據
scrapy genspider itcast "itcast.cn" ?
import scrapy
class ItcastSpider(scrapy.Spider):
name = "itcast"
allowed_domains = ["itcast.cn"]
start_urls = (
'http://www.itcast.cn/',
)
def parse(self, response):
pass
其實(shí)我們也可以自己創(chuàng )建itcast.py,寫(xiě)上面的代碼,不過(guò)使用命令可以省去寫(xiě)固定代碼的麻煩
要創(chuàng )建 Spider,您必須繼承 scrapy.Spider 類(lèi)并定義三個(gè)強制屬性和一個(gè)方法。
將start_urls的值改為第一個(gè)要爬取的url
start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)
修改 parse() 方法
def parse(self, response):
filename = "teacher.html"
open(filename, 'w').write(response.body)
然后運行看看,在mySpider目錄下執行:
scrapy crawl itcast
是的,它是itcast??瓷厦娲a,是ItcastSpider類(lèi)的name屬性,是唯一使用scrapy genspider命令的爬蟲(chóng)名稱(chēng)。
運行后,如果打印日志顯示[scrapy] INFO: Spider closed (finished),則表示執行完成。之后,當前文件夾中出現了一個(gè)teacher.html文件,里面收錄了我們剛要抓取的網(wǎng)頁(yè)的所有源碼信息。
# 注意,Python2.x默認編碼環(huán)境是ASCII,當和取回的數據編碼格式不一致時(shí),可能會(huì )造成亂碼;
# 我們可以指定保存內容的編碼格式,一般情況下,我們可以在代碼最上方添加:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")<br /><br /># 這三行代碼是Python2.x里解決中文編碼的萬(wàn)能鑰匙,經(jīng)過(guò)這么多年的吐槽后Python3學(xué)乖了,默認編碼是Unicode了...(祝大家早日擁抱Python3)
2. 獲取數據
xxx
xxxxx
xxxxxxxx
是不是一目了然?只需轉到 XPath 并開(kāi)始提取數據。
from mySpider.items import ItcastItem
from mySpider.items import ItcastItem
def parse(self, response): #open("teacher.html","wb").write(response.body).close() # 存放老師信息的集合 items = [] for each in response.xpath("//div[@class='li_txt']"): # 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象 item = ItcastItem() #extract()方法返回的都是unicode字符串 name = each.xpath("h3/text()").extract() title = each.xpath("h4/text()").extract() info = each.xpath("p/text()").extract() #xpath返回的是包含一個(gè)元素的列表 item['name'] = name[0] item['title'] = title[0] item['info'] = info[0] items.append(item) # 直接返回最后數據 return items
保存數據有四種最簡(jiǎn)單的方法scrapy保存信息,-o輸出指定格式的文件,命令如下:
# json格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.json
# json lines格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.jsonl
# csv 逗號表達式,可用Excel打開(kāi)
scrapy crawl itcast -o teachers.csv
# xml格式
scrapy crawl itcast -o teachers.xml
想想如果把代碼改成下面的形式,結果是完全一樣的??紤]產(chǎn)量在這里的作用:
from mySpider.items import ItcastItem
def parse(self, response):
#open("teacher.html","wb").write(response.body).close()
# 存放老師信息的集合
#items = []
for each in response.xpath("//div[@class='li_txt']"):
# 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象
item = ItcastItem()
#extract()方法返回的都是unicode字符串
name = each.xpath("h3/text()").extract()
title = each.xpath("h4/text()").extract()
info = each.xpath("p/text()").extract()
#xpath返回的是包含一個(gè)元素的列表
item['name'] = name[0]
item['title'] = title[0]
item['info'] = info[0]
#items.append(item)
#將獲取的數據交給pipelines
yield item
# 返回數據,不經(jīng)過(guò)pipeline
#return items
廢殼
Scrapy 終端是一個(gè)交互式終端。我們可以在不啟動(dòng)蜘蛛的情況下嘗試調試代碼。它還可以用于測試 XPath 或 CSS 表達式,了解它們是如何工作的,并促進(jìn)從我們抓取的網(wǎng)頁(yè)中提取數據。
如果安裝了 IPython,Scrapy 終端將使用 IPython(代替標準 Python 終端)。IPython 終端比其他終端更強大,提供智能自動(dòng)完成、突出顯示和其他功能。(推薦安裝IPython)
啟動(dòng) Scrapy Shell
進(jìn)入項目根目錄,執行以下命令啟動(dòng)shell:
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"
Scrapy Shell 會(huì )根據下載的頁(yè)面自動(dòng)創(chuàng )建一些方便的對象,例如 Response 對象,Selector 對象(用于 HTML 和 XML 內容)。
Selectors 選擇器 Scrapy Selectors 內置 XPath 和 CSS 選擇器表達式機制
Selector有四種基本方法,最常用的是xpath:
XPath 表達式及其對應含義的示例:
/html/head/title: 選擇文檔中 標簽內的 元素
/html/head/title/text(): 選擇上面提到的 元素的文字
//td: 選擇所有的 元素
//div[@class="mine"]: 選擇所有具有 class="mine" 屬性的 div 元素
試試選擇器
我們以騰訊招聘的網(wǎng)站為例:
<p># 啟動(dòng)
scrapy shell "http://hr.tencent.com/position ... ot%3B
# 返回 xpath選擇器對象列表
response.xpath('//title')
[ 查看全部
自動(dòng)采集編寫(xiě)(Scrapy框架Scrapy架構圖)
Scrapy 框架 Scrapy 架構圖(綠線(xiàn)為數據流向):

Scrapy 的工作原理
代碼寫(xiě)好了,程序開(kāi)始運行了……
發(fā)動(dòng)機:嗨!蜘蛛,你在對付哪個(gè)網(wǎng)站?
蜘蛛:老板要我處理。
引擎:給我第一個(gè)需要處理的 URL。
Spider:在這里,第一個(gè) URL 是。
發(fā)動(dòng)機:嗨!調度員,我有一個(gè)請求,請求您幫我排序并加入隊列。
調度程序:好的,正在處理您等一下。
發(fā)動(dòng)機:嗨!調度員,給我你處理的請求。
調度器:給你,這是我處理的請求
發(fā)動(dòng)機:嗨!下載者,請幫我按照老板下載中間件的設置下載這個(gè)請求
下載者:好的!給你,這是下載的東西。(如果失?。簊orry,這個(gè)請求下載失敗。然后引擎告訴調度器這個(gè)請求下載失敗,你記錄一下,我們稍后下載)
發(fā)動(dòng)機:嗨!蜘蛛,這是一個(gè)下載的東西,已經(jīng)按照老大的下載中間件進(jìn)行了處理,你可以自己處理(注意!這里的響應默認由def parse()函數處理)
蜘蛛:(處理數據后需要跟進(jìn)的URL),嗨!Engine,我這里有兩個(gè)結果,這是我需要跟進(jìn)的URL,這是我得到的Item數據。
發(fā)動(dòng)機:嗨!我這里有一件物品,請幫我處理!調度器!這個(gè)是需要你跟進(jìn)的網(wǎng)址幫我處理的。然后從第四步開(kāi)始循環(huán),直到得到boss需要的所有信息。
Pipes ``調度器:好的,現在就做!
注意!只有當調度器中沒(méi)有請求時(shí),整個(gè)程序才會(huì )停止,(即對于下載失敗的URL,Scrapy也會(huì )重新下載。)
制作一個(gè)Scrapy爬蟲(chóng)一共需要4步: Scrapy安裝介紹
Scrapy框架官網(wǎng):
Scrapy中文維護網(wǎng)站:
Windows安裝方式Ubuntu需要9.10以上的安裝方式
安裝完成后,只要在命令終端輸入scrapy,就會(huì )出現類(lèi)似如下的結果,說(shuō)明已經(jīng)安裝成功

具體Scrapy安裝過(guò)程參考:每個(gè)平臺都有安裝方法
入門(mén)案例學(xué)習目標一. 新項目(scrapy startproject)
scrapy startproject mySpider

下面簡(jiǎn)單介紹一下各個(gè)主文件的作用:
scrapy.cfg :項目的配置文件
mySpider/ :項目的 Python 模塊,將從中引用代碼
mySpider/items.py :項目的目標文件
mySpider/pipelines.py :項目的管道文件
mySpider/settings.py :項目的設置文件
mySpider/spiders/ : 蜘蛛代碼存放的目錄
信息。
打開(kāi) mySpider 目錄下的 items.py
Item 定義了一個(gè)結構化的數據字段來(lái)保存爬取的數據,有點(diǎn)像 Python 中的 dict,但提供了一些額外的保護來(lái)減少錯誤。
可以通過(guò)創(chuàng )建一個(gè)scrapy.Item類(lèi)并定義一個(gè)scrapy.Field類(lèi)型的類(lèi)屬性來(lái)定義一個(gè)Item(可以理解為一種類(lèi)似于ORM的映射關(guān)系)。
接下來(lái),創(chuàng )建一個(gè) ItcastItem 類(lèi),并構建項目模型。
import scrapy
class ItcastItem(scrapy.Item):
name = scrapy.Field()
level = scrapy.Field()
info = scrapy.Field()
三、制作蜘蛛 (spiders/itcastSpider.py)
爬蟲(chóng)功能分為兩步:
1. 爬取數據
scrapy genspider itcast "itcast.cn" ?
import scrapy
class ItcastSpider(scrapy.Spider):
name = "itcast"
allowed_domains = ["itcast.cn"]
start_urls = (
'http://www.itcast.cn/',
)
def parse(self, response):
pass
其實(shí)我們也可以自己創(chuàng )建itcast.py,寫(xiě)上面的代碼,不過(guò)使用命令可以省去寫(xiě)固定代碼的麻煩
要創(chuàng )建 Spider,您必須繼承 scrapy.Spider 類(lèi)并定義三個(gè)強制屬性和一個(gè)方法。
將start_urls的值改為第一個(gè)要爬取的url
start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)
修改 parse() 方法
def parse(self, response):
filename = "teacher.html"
open(filename, 'w').write(response.body)
然后運行看看,在mySpider目錄下執行:
scrapy crawl itcast
是的,它是itcast??瓷厦娲a,是ItcastSpider類(lèi)的name屬性,是唯一使用scrapy genspider命令的爬蟲(chóng)名稱(chēng)。
運行后,如果打印日志顯示[scrapy] INFO: Spider closed (finished),則表示執行完成。之后,當前文件夾中出現了一個(gè)teacher.html文件,里面收錄了我們剛要抓取的網(wǎng)頁(yè)的所有源碼信息。
# 注意,Python2.x默認編碼環(huán)境是ASCII,當和取回的數據編碼格式不一致時(shí),可能會(huì )造成亂碼;
# 我們可以指定保存內容的編碼格式,一般情況下,我們可以在代碼最上方添加:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")<br /><br /># 這三行代碼是Python2.x里解決中文編碼的萬(wàn)能鑰匙,經(jīng)過(guò)這么多年的吐槽后Python3學(xué)乖了,默認編碼是Unicode了...(祝大家早日擁抱Python3)
2. 獲取數據

xxx
xxxxx
xxxxxxxx
是不是一目了然?只需轉到 XPath 并開(kāi)始提取數據。
from mySpider.items import ItcastItem
from mySpider.items import ItcastItem
def parse(self, response): #open("teacher.html","wb").write(response.body).close() # 存放老師信息的集合 items = [] for each in response.xpath("//div[@class='li_txt']"): # 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象 item = ItcastItem() #extract()方法返回的都是unicode字符串 name = each.xpath("h3/text()").extract() title = each.xpath("h4/text()").extract() info = each.xpath("p/text()").extract() #xpath返回的是包含一個(gè)元素的列表 item['name'] = name[0] item['title'] = title[0] item['info'] = info[0] items.append(item) # 直接返回最后數據 return items
保存數據有四種最簡(jiǎn)單的方法scrapy保存信息,-o輸出指定格式的文件,命令如下:
# json格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.json
# json lines格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.jsonl
# csv 逗號表達式,可用Excel打開(kāi)
scrapy crawl itcast -o teachers.csv
# xml格式
scrapy crawl itcast -o teachers.xml
想想如果把代碼改成下面的形式,結果是完全一樣的??紤]產(chǎn)量在這里的作用:
from mySpider.items import ItcastItem
def parse(self, response):
#open("teacher.html","wb").write(response.body).close()
# 存放老師信息的集合
#items = []
for each in response.xpath("//div[@class='li_txt']"):
# 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象
item = ItcastItem()
#extract()方法返回的都是unicode字符串
name = each.xpath("h3/text()").extract()
title = each.xpath("h4/text()").extract()
info = each.xpath("p/text()").extract()
#xpath返回的是包含一個(gè)元素的列表
item['name'] = name[0]
item['title'] = title[0]
item['info'] = info[0]
#items.append(item)
#將獲取的數據交給pipelines
yield item
# 返回數據,不經(jīng)過(guò)pipeline
#return items
廢殼
Scrapy 終端是一個(gè)交互式終端。我們可以在不啟動(dòng)蜘蛛的情況下嘗試調試代碼。它還可以用于測試 XPath 或 CSS 表達式,了解它們是如何工作的,并促進(jìn)從我們抓取的網(wǎng)頁(yè)中提取數據。
如果安裝了 IPython,Scrapy 終端將使用 IPython(代替標準 Python 終端)。IPython 終端比其他終端更強大,提供智能自動(dòng)完成、突出顯示和其他功能。(推薦安裝IPython)
啟動(dòng) Scrapy Shell
進(jìn)入項目根目錄,執行以下命令啟動(dòng)shell:
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"

Scrapy Shell 會(huì )根據下載的頁(yè)面自動(dòng)創(chuàng )建一些方便的對象,例如 Response 對象,Selector 對象(用于 HTML 和 XML 內容)。
Selectors 選擇器 Scrapy Selectors 內置 XPath 和 CSS 選擇器表達式機制
Selector有四種基本方法,最常用的是xpath:
XPath 表達式及其對應含義的示例:
/html/head/title: 選擇文檔中 標簽內的 元素
/html/head/title/text(): 選擇上面提到的 元素的文字
//td: 選擇所有的 元素
//div[@class="mine"]: 選擇所有具有 class="mine" 屬性的 div 元素
試試選擇器
我們以騰訊招聘的網(wǎng)站為例:
<p># 啟動(dòng)
scrapy shell "http://hr.tencent.com/position ... ot%3B
# 返回 xpath選擇器對象列表
response.xpath('//title')
[
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 156 次瀏覽 ? 2022-04-18 14:17
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一無(wú)所知,不妨看看這個(gè)。幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。
三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址
2、使用百度的搜索界面,Python編寫(xiě)url采集工具
需要使用requests庫和BeautifulSoup庫,遵守百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭繞過(guò)百度搜索引擎的反爬機制。
Python 源代碼:
用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:
3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以用json庫解析這組數據,把爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。
渲染:
4、Python 自動(dòng)填充調查
和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。
如圖:
那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:
效果:
5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。
爬取的數據如圖:
演示:
結論 查看全部
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一無(wú)所知,不妨看看這個(gè)。幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。

三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址

2、使用百度的搜索界面,Python編寫(xiě)url采集工具
需要使用requests庫和BeautifulSoup庫,遵守百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭繞過(guò)百度搜索引擎的反爬機制。

Python 源代碼:

用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:

3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以用json庫解析這組數據,把爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。

渲染:

4、Python 自動(dòng)填充調查

和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。

如圖:

那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:

效果:



5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。

爬取的數據如圖:

演示:

結論
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 102 次瀏覽 ? 2022-04-17 18:03
自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章。原理:python的網(wǎng)絡(luò )請求采用get方法即可實(shí)現,模擬瀏覽器登錄公眾號后臺,即可自動(dòng)爬取我們需要的文章。主要實(shí)現內容:搜索,看圖,和你聊天。方法:在實(shí)現自動(dòng)采集之前,先用瀏覽器登錄公眾號后臺,采集公眾號相關(guān)用戶(hù)信息。打開(kāi)瀏覽器,在地址欄,輸入相關(guān)搜索關(guān)鍵詞,按照對應提示操作。
只要網(wǎng)頁(yè)登錄成功,點(diǎn)擊關(guān)鍵詞和公眾號名稱(chēng),就會(huì )自動(dòng)搜索并爬取。實(shí)踐一次:python爬蟲(chóng)系列之1——搜索關(guān)鍵詞教程地址:用python爬取一個(gè)微信公眾號文章需要requests模塊,進(jìn)行網(wǎng)絡(luò )請求,模擬瀏覽器后臺登錄,獲取相關(guān)信息。根據圖例的步驟,就能自動(dòng)獲取大量數據信息,實(shí)踐本次實(shí)踐教程所需要的信息。
【準備工作】網(wǎng)頁(yè)登錄問(wèn)題:難點(diǎn)在于如何把爬取的數據實(shí)時(shí)保存到本地,傳到服務(wù)器。第一步:開(kāi)發(fā)板登錄因為之前就有登錄不成功的經(jīng)歷,作為初次接觸爬蟲(chóng)的同學(xué),一定要熟悉網(wǎng)頁(yè)登錄的實(shí)際操作方法。登錄首先登錄開(kāi)發(fā)板,推薦使用梯子或者國內的某些chrome瀏覽器,如360的firefox和chrome擴展支持,實(shí)現登錄。
登錄成功后,python爬蟲(chóng)系列之一——爬取微信公眾號文章,教程上方的url就出現了。pipinstall開(kāi)發(fā)板瀏覽器,安裝相關(guān)的開(kāi)發(fā)板軟件。urllib2是python網(wǎng)絡(luò )通信最常用的庫。第二步:數據預處理本次實(shí)踐準備爬取的是公眾號文章推送列表。因為第一步的網(wǎng)頁(yè)登錄成功后,要打開(kāi)登錄頁(yè)面。所以一直處于登錄狀態(tài),用不到訪(fǎng)問(wèn)ip和端口這些操作。
用戶(hù)管理:爬取到的數據,保存到本地,需要一個(gè)用戶(hù)名和密碼,用戶(hù)名和密碼是唯一的。拿公眾號文章列表項目來(lái)說(shuō),用戶(hù)名和密碼就是文章列表項目標識符了。源代碼引用:globalokhttp;import"weixin.urlopen";import"http.https";import"requests";import"xml.parser";import"sql";import"servlet";import"tomcat";import"urllib";import"flask";import"requests";import"xml.parser";import"xml";import"xmltest";import"tomcat";import"lxml";import"python";import"c";import"urllib.parse";import"multiprocessing";import"lxml";import"python";import"chef";import"cookielib";import"sqlite";import"mysql";import"time";import"mongo";import"redis";import"crypto";import"thrift";import"pymongo";import"node";import"core";imp。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章)
自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章。原理:python的網(wǎng)絡(luò )請求采用get方法即可實(shí)現,模擬瀏覽器登錄公眾號后臺,即可自動(dòng)爬取我們需要的文章。主要實(shí)現內容:搜索,看圖,和你聊天。方法:在實(shí)現自動(dòng)采集之前,先用瀏覽器登錄公眾號后臺,采集公眾號相關(guān)用戶(hù)信息。打開(kāi)瀏覽器,在地址欄,輸入相關(guān)搜索關(guān)鍵詞,按照對應提示操作。
只要網(wǎng)頁(yè)登錄成功,點(diǎn)擊關(guān)鍵詞和公眾號名稱(chēng),就會(huì )自動(dòng)搜索并爬取。實(shí)踐一次:python爬蟲(chóng)系列之1——搜索關(guān)鍵詞教程地址:用python爬取一個(gè)微信公眾號文章需要requests模塊,進(jìn)行網(wǎng)絡(luò )請求,模擬瀏覽器后臺登錄,獲取相關(guān)信息。根據圖例的步驟,就能自動(dòng)獲取大量數據信息,實(shí)踐本次實(shí)踐教程所需要的信息。
【準備工作】網(wǎng)頁(yè)登錄問(wèn)題:難點(diǎn)在于如何把爬取的數據實(shí)時(shí)保存到本地,傳到服務(wù)器。第一步:開(kāi)發(fā)板登錄因為之前就有登錄不成功的經(jīng)歷,作為初次接觸爬蟲(chóng)的同學(xué),一定要熟悉網(wǎng)頁(yè)登錄的實(shí)際操作方法。登錄首先登錄開(kāi)發(fā)板,推薦使用梯子或者國內的某些chrome瀏覽器,如360的firefox和chrome擴展支持,實(shí)現登錄。
登錄成功后,python爬蟲(chóng)系列之一——爬取微信公眾號文章,教程上方的url就出現了。pipinstall開(kāi)發(fā)板瀏覽器,安裝相關(guān)的開(kāi)發(fā)板軟件。urllib2是python網(wǎng)絡(luò )通信最常用的庫。第二步:數據預處理本次實(shí)踐準備爬取的是公眾號文章推送列表。因為第一步的網(wǎng)頁(yè)登錄成功后,要打開(kāi)登錄頁(yè)面。所以一直處于登錄狀態(tài),用不到訪(fǎng)問(wèn)ip和端口這些操作。
用戶(hù)管理:爬取到的數據,保存到本地,需要一個(gè)用戶(hù)名和密碼,用戶(hù)名和密碼是唯一的。拿公眾號文章列表項目來(lái)說(shuō),用戶(hù)名和密碼就是文章列表項目標識符了。源代碼引用:globalokhttp;import"weixin.urlopen";import"http.https";import"requests";import"xml.parser";import"sql";import"servlet";import"tomcat";import"urllib";import"flask";import"requests";import"xml.parser";import"xml";import"xmltest";import"tomcat";import"lxml";import"python";import"c";import"urllib.parse";import"multiprocessing";import"lxml";import"python";import"chef";import"cookielib";import"sqlite";import"mysql";import"time";import"mongo";import"redis";import"crypto";import"thrift";import"pymongo";import"node";import"core";imp。
自動(dòng)采集編寫(xiě)(用GS瀏覽器的采數據方式介紹不同的窗口類(lèi)型 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 174 次瀏覽 ? 2022-04-17 10:27
)
用GS瀏覽器或者M(jìn)S點(diǎn)數機完成采集規則后,就可以打開(kāi)DS點(diǎn)數機進(jìn)行數據采集,而吉索克爬蟲(chóng)軟件非常靈活,提供多種使用方式供大家選擇。下面介紹幾種不同的數據采集方法。他們使用的爬蟲(chóng)窗口類(lèi)型不同,控制方式也略有不同。爬蟲(chóng)窗口的描述請參考“DS 計數器的窗口類(lèi)型”。
方法一:保存規則,爬取數據
完成采集規則并保存后,點(diǎn)擊右上角“爬取數據”按鈕,會(huì )自動(dòng)彈出爬蟲(chóng)窗口。直接采集示例網(wǎng)頁(yè),使用測試窗口,菜單項很少。用于驗證爬取規則的正確性。
1.1、用MS找幾個(gè)單位制定規則并保存。
1.2,然后點(diǎn)擊MS工具欄右上角的“爬取數據”按鈕,會(huì )彈出DS爬蟲(chóng)窗口采集示例頁(yè)面信息。
方法二:?jiǎn)未嗡阉?采集 DS 計數器
單獨運行 DS 計數器,可以在左側看到規則列表,每個(gè)規則都有“單次搜索”和“采集搜索”按鈕。單查與吉搜的使用說(shuō)明及區別請參考《吉索專(zhuān)有名詞:?jiǎn)尾榕c吉搜》。簡(jiǎn)單總結一下,Single Search 只運行一個(gè)爬蟲(chóng)窗口,而 Jisou 可以運行多個(gè)爬蟲(chóng)窗口。
2.1、打開(kāi)DS計數器(GS瀏覽器版爬蟲(chóng)點(diǎn)擊右上角“DS計數器”運行;火狐版爬蟲(chóng)點(diǎn)擊工具中“DS數據”運行菜單)。
2.2、搜索主題名,可以使用*模糊匹配(前、后、中都可以收錄*)。
2.3、右擊主題名稱(chēng),在彈出的菜單中選擇“Statistical Leads”。您可以看到有多少潛在客戶(hù)正在等待被抓取,而這些潛在客戶(hù)就是 URL。
2.4、點(diǎn)擊單搜索,輸入線(xiàn)索數量(激活所有線(xiàn)索;如果要采集其他結構相同的網(wǎng)頁(yè),選擇添加,然后復制多個(gè)網(wǎng)址進(jìn)去,可以批量采集 >.更多操作見(jiàn)《如何管理規則線(xiàn)索》
方法三:使用爬蟲(chóng)組并發(fā)采集數據
爬蟲(chóng)組功能支持在一臺電腦上同時(shí)運行多個(gè)爬蟲(chóng)。它集成了crontab爬蟲(chóng)調度器、DS計數器主菜單功能、數據庫存儲三大功能塊。無(wú)需指定采集多少潛在客戶(hù),爬蟲(chóng)組會(huì )自動(dòng)采集所有等待采集的潛在客戶(hù),讓您高效采集數據,監控規則運行。有關(guān)用法,請參閱“如何運行 Crawler Swarm”
方法四:編寫(xiě)crontab并發(fā)爬蟲(chóng)采集數據
crontab程序(終極功能)和爬蟲(chóng)組一樣,可以設置多個(gè)爬蟲(chóng)窗口并發(fā)采集數據,但是需要自己編寫(xiě)程序。兩者的區別在于crontab程序可以指定爬蟲(chóng)窗口只有哪個(gè)主題任務(wù)采集,這樣可以大大提高穩定性和效率,而爬蟲(chóng)組可以自由地將主題任務(wù)分配給爬蟲(chóng)窗口,而效率稍慢。詳情請閱讀文章《如何通過(guò)crontab程序實(shí)現周期性增量采集數據》。
如有疑問(wèn),您可以或
查看全部
自動(dòng)采集編寫(xiě)(用GS瀏覽器的采數據方式介紹不同的窗口類(lèi)型
)
用GS瀏覽器或者M(jìn)S點(diǎn)數機完成采集規則后,就可以打開(kāi)DS點(diǎn)數機進(jìn)行數據采集,而吉索克爬蟲(chóng)軟件非常靈活,提供多種使用方式供大家選擇。下面介紹幾種不同的數據采集方法。他們使用的爬蟲(chóng)窗口類(lèi)型不同,控制方式也略有不同。爬蟲(chóng)窗口的描述請參考“DS 計數器的窗口類(lèi)型”。
方法一:保存規則,爬取數據
完成采集規則并保存后,點(diǎn)擊右上角“爬取數據”按鈕,會(huì )自動(dòng)彈出爬蟲(chóng)窗口。直接采集示例網(wǎng)頁(yè),使用測試窗口,菜單項很少。用于驗證爬取規則的正確性。
1.1、用MS找幾個(gè)單位制定規則并保存。
1.2,然后點(diǎn)擊MS工具欄右上角的“爬取數據”按鈕,會(huì )彈出DS爬蟲(chóng)窗口采集示例頁(yè)面信息。

方法二:?jiǎn)未嗡阉?采集 DS 計數器
單獨運行 DS 計數器,可以在左側看到規則列表,每個(gè)規則都有“單次搜索”和“采集搜索”按鈕。單查與吉搜的使用說(shuō)明及區別請參考《吉索專(zhuān)有名詞:?jiǎn)尾榕c吉搜》。簡(jiǎn)單總結一下,Single Search 只運行一個(gè)爬蟲(chóng)窗口,而 Jisou 可以運行多個(gè)爬蟲(chóng)窗口。
2.1、打開(kāi)DS計數器(GS瀏覽器版爬蟲(chóng)點(diǎn)擊右上角“DS計數器”運行;火狐版爬蟲(chóng)點(diǎn)擊工具中“DS數據”運行菜單)。
2.2、搜索主題名,可以使用*模糊匹配(前、后、中都可以收錄*)。
2.3、右擊主題名稱(chēng),在彈出的菜單中選擇“Statistical Leads”。您可以看到有多少潛在客戶(hù)正在等待被抓取,而這些潛在客戶(hù)就是 URL。
2.4、點(diǎn)擊單搜索,輸入線(xiàn)索數量(激活所有線(xiàn)索;如果要采集其他結構相同的網(wǎng)頁(yè),選擇添加,然后復制多個(gè)網(wǎng)址進(jìn)去,可以批量采集 >.更多操作見(jiàn)《如何管理規則線(xiàn)索》


方法三:使用爬蟲(chóng)組并發(fā)采集數據
爬蟲(chóng)組功能支持在一臺電腦上同時(shí)運行多個(gè)爬蟲(chóng)。它集成了crontab爬蟲(chóng)調度器、DS計數器主菜單功能、數據庫存儲三大功能塊。無(wú)需指定采集多少潛在客戶(hù),爬蟲(chóng)組會(huì )自動(dòng)采集所有等待采集的潛在客戶(hù),讓您高效采集數據,監控規則運行。有關(guān)用法,請參閱“如何運行 Crawler Swarm”

方法四:編寫(xiě)crontab并發(fā)爬蟲(chóng)采集數據
crontab程序(終極功能)和爬蟲(chóng)組一樣,可以設置多個(gè)爬蟲(chóng)窗口并發(fā)采集數據,但是需要自己編寫(xiě)程序。兩者的區別在于crontab程序可以指定爬蟲(chóng)窗口只有哪個(gè)主題任務(wù)采集,這樣可以大大提高穩定性和效率,而爬蟲(chóng)組可以自由地將主題任務(wù)分配給爬蟲(chóng)窗口,而效率稍慢。詳情請閱讀文章《如何通過(guò)crontab程序實(shí)現周期性增量采集數據》。
如有疑問(wèn),您可以或
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2022-04-16 15:16
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一竅不通,不妨看看這幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。
三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址
2、使用百度的搜索界面,Python編寫(xiě)url采集工具
你需要使用requests庫和BeautifulSoup庫來(lái)觀(guān)察百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭來(lái)繞過(guò)百度搜索引擎的反爬蟲(chóng)機制。
Python 源代碼:
用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:
3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以使用json庫解析這組數據,將爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。
渲染:
4、Python 自動(dòng)填充調查
和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。
如圖:
那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:
效果:
5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。
爬取的數據如圖:
演示:
結論 查看全部
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一竅不通,不妨看看這幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。

三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址

2、使用百度的搜索界面,Python編寫(xiě)url采集工具
你需要使用requests庫和BeautifulSoup庫來(lái)觀(guān)察百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭來(lái)繞過(guò)百度搜索引擎的反爬蟲(chóng)機制。

Python 源代碼:

用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:

3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以使用json庫解析這組數據,將爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。

渲染:

4、Python 自動(dòng)填充調查

和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。

如圖:

那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:

效果:



5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。

爬取的數據如圖:

演示:

結論
自動(dòng)采集編寫(xiě)(觸發(fā)MCC#抓取surface筆記圖像采集卡channel!)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 208 次瀏覽 ? 2022-04-15 15:29
標簽:觸發(fā)MCC#抓取表面筆記圖像采集卡片通道
每周更新!
1.參數1.1CAM文件
CAM 文件是一個(gè)可讀的 ASCII 文件,文件擴展名為 .cam,收錄一系列參數,例如:AcquisitionMode、TrigMode 等。通過(guò) McSetParamStr 方法將 Camfile 加載到通道:
McSetParamStr(MyChannelMyChannel, MC_CamFile , "VCC VCC-870A_P15RA");
1.2 頻道
通道是相機、圖像采集卡和主機 PC 內存之間的 采集 路徑。頻道由三部分組成:
1. 負責圖像捕獲的相機。
2. 圖像采集卡負責采集 和圖像的傳輸。
3. 用于在主機 PC 中存儲圖像的內存緩沖區。
可以將通道設置為以下四種狀態(tài)之一:
名字
意義
孤兒
沒(méi)有與之關(guān)聯(lián)的爬蟲(chóng)。所以不可能立即得到圖像。但是通道是存在的,它的所有參數都可以自由設置或獲取。
空閑
當一個(gè)通道空閑時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 可能會(huì )自動(dòng)將采集器資源重新分配給另一個(gè)通道。
準備好了
當一個(gè)通道處于就緒狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
活躍
當一個(gè)通道處于活動(dòng)狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器并執行一系列圖像采集。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
代碼示例:
1.3 曲面
surface 是一個(gè)緩沖區,用戶(hù)應用程序可以在其中找到要分析的 采集圖像。內存緩沖區由稱(chēng)為表面的 MultiCam 對象表示。曲面可以由 Multicam 自動(dòng)創(chuàng )建或由用戶(hù)手動(dòng)創(chuàng )建。抓取器通過(guò) DMA 機制自動(dòng)將 采集 圖像傳輸到目標表面。一個(gè)通道可以有一個(gè)或多個(gè)表面(默認為 4)。根據表面的數量,定義了單緩沖和多緩沖。
表面狀態(tài)
意義
免費
自由曲面可以無(wú)條件地接收來(lái)自抓手的圖像數據。
填充
目前正在從采集卡接收圖像數據,或準備接收數據。集群中應該有一個(gè)處于 FILLING 狀態(tài)的 Surface。
填滿(mǎn)
已完成從抓取器接收圖像數據,準備處理。
處理
處理器正在處理處于 PROCESSING 狀態(tài)的 Surface。
保留
從標準狀態(tài)轉換機制中移除。
代碼示例:
一組表面稱(chēng)為一個(gè)簇,一個(gè)通道只能有一個(gè)簇。集群狀態(tài)為OFF、READY(正在獲取圖像但沒(méi)有表面在PROCESSING)、BUSY(有表面在PROCESSING中)、UNAVAILABLE(無(wú)法獲取圖像)
單緩沖
雙緩沖
三重緩沖
1.4多機位信號發(fā)送
信號是由與用戶(hù)應用程序交互的通道生成的事件。
幀觸發(fā)沖突
開(kāi)始曝光
此信號在幀曝光條件開(kāi)始時(shí)發(fā)出。
結束曝光
該信號在幀曝光條件結束時(shí)發(fā)出。
表面填充
當目標簇的Surface進(jìn)入Filled狀態(tài)時(shí)發(fā)出此信號。
表面處理
當目標簇的Surface進(jìn)入Processing狀態(tài)時(shí)發(fā)出此信號。
集群不可用
采集失敗 (**)
采集序列開(kāi)始
采集序列結束
頻道活動(dòng)結束
有三種訪(fǎng)問(wèn)它們的機制:
1. 是指用戶(hù)編寫(xiě)的函數,當預定義的信號出現時(shí)會(huì )自動(dòng)調用這些函數。 (回調)
2. 允許線(xiàn)程等待預定義信號發(fā)生的專(zhuān)用機制。
3. 一種用戶(hù)定義的機制,涉及標準的 Windows 等待函數。
使用回調的案例:
1. 默認情況下,所有信號都被禁用。 SignalEnable 參數用于設置。
2.注冊回調函數
3. 在回調函數中,使用 PMCSIGNALINFO 捕獲事件,其中收錄有關(guān)觸發(fā)事件的信息。
例子:
1.5觸發(fā)器
觸發(fā)事件由 TrigMode 和 NextTrigMode 參數設置。
1.5.1 初始觸發(fā)事件:
1.5.2觸發(fā)事件結束
采集階段可以用 EndTrigMode 結束:
1)當幀、頁(yè)或行計數器到期時(shí),采集 序列會(huì )自動(dòng)終止。 (自動(dòng))
2)當檢測到硬件側觸發(fā)線(xiàn)的有效轉換時(shí),采集序列終止(HARD)
或者通過(guò)BreakEffect參數直接終止通道的活動(dòng)狀態(tài):
1)切片/相位/序列結束后停止采集(FINISH)
2)中止
1.6采集模式1.7異常
通過(guò)異常代碼或 Windows 異常來(lái)管理異常。 ErrorHandling 參數設置錯誤管理行為,有 4 個(gè)可能的值。
2.演示
2.1 打開(kāi)驅動(dòng)
// Open MultiCam driver
MC.OpenDriver();
2.2 創(chuàng )建頻道
// Create a channel and associate it with the first connector on the first board
MC.Create("CHANNEL", out channel);
MC.SetParam(channel, "DriverIndex", 0);
2.3 相機參數設置
// Choose the CAM file
MC.SetParam(channel, "CamFile", "1000m_P50RG");
// Choose the camera expose duration
MC.SetParam(channel, "Expose_us", 20000);
// Choose the pixel color format
MC.SetParam(channel, "ColorFormat", "Y8");
2.4 觸發(fā)模式改變
//Set the acquisition mode to Snapshot
MC.SetParam(channel, "AcquisitionMode", "SNAPSHOT");
// Choose the way the first acquisition is triggered
MC.SetParam(channel, "TrigMode", "COMBINED");
// Choose the triggering mode for subsequent acquisitions
MC.SetParam(channel, "NextTrigMode", "COMBINED");
2.5 個(gè)事件觸發(fā)器
2.5.1 注冊回調函數
// Register the callback function
multiCamCallback = new MC.CALLBACK(MultiCamCallback);
MC.RegisterCallback(channel, multiCamCallback, channel);
2.5.2 信號開(kāi)啟
// Enable the signals corresponding to the callback functions
MC.SetParam(channel, MC.SignalEnable + MC.SIG_SURFACE_PROCESSING, "ON");
MC.SetParam(channel, MC.SignalEnable + MC.SIG_ACQUISITION_FAILURE, "ON");
2.5.3 判斷接收信號
如果接收到的是MC.SIG_SURFACE_PROCESSING,調用ProcessingCallback獲取圖片的數據,并將圖片數據轉換為位圖。如果收到 MC.SIG_ACQUISITION_FAILURE,調用 AcqFailureCallback 輸出“Acquisition Failure”。
private void MultiCamCallback(ref MC.SIGNALINFO signalInfo)
{
switch(signalInfo.Signal)
{
case MC.SIG_SURFACE_PROCESSING:
ProcessingCallback(signalInfo);
break;
case MC.SIG_ACQUISITION_FAILURE:
AcqFailureCallback(signalInfo);
break;
default:
throw new Euresys.MultiCamException("Unknown signal");
}
}
2.6通道狀態(tài)設置為READY
// Prepare the channel in order to minimize the acquisition sequence startup latency
MC.SetParam(channel, "ChannelState", "READY");
3. 編寫(xiě)測試程序
觸發(fā)方式使用默認的連續觸發(fā)。
在界面上顯示camfile的加載。
演示界面只有Go和stop和一個(gè)狀態(tài)欄。添加按鈕以打開(kāi)/關(guān)閉相機和啟動(dòng)/停止采集.
曝光開(kāi)始事件被觸發(fā),幀數開(kāi)始計數++;觸發(fā)surface_processing事件,圖像采集計數++;觸發(fā)采集失敗事件,丟幀計數++。
代碼肯定行不通。畢竟我是一個(gè)沒(méi)見(jiàn)過(guò)采集卡片的人,所以我只是在說(shuō)紙上談兵哈哈哈
標簽:觸發(fā)器、MC、C#、抓取、表面、筆記、圖像、采集卡片、通道 查看全部
自動(dòng)采集編寫(xiě)(觸發(fā)MCC#抓取surface筆記圖像采集卡channel!)
標簽:觸發(fā)MCC#抓取表面筆記圖像采集卡片通道
每周更新!
1.參數1.1CAM文件
CAM 文件是一個(gè)可讀的 ASCII 文件,文件擴展名為 .cam,收錄一系列參數,例如:AcquisitionMode、TrigMode 等。通過(guò) McSetParamStr 方法將 Camfile 加載到通道:
McSetParamStr(MyChannelMyChannel, MC_CamFile , "VCC VCC-870A_P15RA");
1.2 頻道
通道是相機、圖像采集卡和主機 PC 內存之間的 采集 路徑。頻道由三部分組成:
1. 負責圖像捕獲的相機。
2. 圖像采集卡負責采集 和圖像的傳輸。
3. 用于在主機 PC 中存儲圖像的內存緩沖區。

可以將通道設置為以下四種狀態(tài)之一:
名字
意義
孤兒
沒(méi)有與之關(guān)聯(lián)的爬蟲(chóng)。所以不可能立即得到圖像。但是通道是存在的,它的所有參數都可以自由設置或獲取。
空閑
當一個(gè)通道空閑時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 可能會(huì )自動(dòng)將采集器資源重新分配給另一個(gè)通道。
準備好了
當一個(gè)通道處于就緒狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
活躍
當一個(gè)通道處于活動(dòng)狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器并執行一系列圖像采集。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
代碼示例:

1.3 曲面
surface 是一個(gè)緩沖區,用戶(hù)應用程序可以在其中找到要分析的 采集圖像。內存緩沖區由稱(chēng)為表面的 MultiCam 對象表示。曲面可以由 Multicam 自動(dòng)創(chuàng )建或由用戶(hù)手動(dòng)創(chuàng )建。抓取器通過(guò) DMA 機制自動(dòng)將 采集 圖像傳輸到目標表面。一個(gè)通道可以有一個(gè)或多個(gè)表面(默認為 4)。根據表面的數量,定義了單緩沖和多緩沖。
表面狀態(tài)
意義
免費
自由曲面可以無(wú)條件地接收來(lái)自抓手的圖像數據。
填充
目前正在從采集卡接收圖像數據,或準備接收數據。集群中應該有一個(gè)處于 FILLING 狀態(tài)的 Surface。
填滿(mǎn)
已完成從抓取器接收圖像數據,準備處理。
處理
處理器正在處理處于 PROCESSING 狀態(tài)的 Surface。
保留
從標準狀態(tài)轉換機制中移除。
代碼示例:

一組表面稱(chēng)為一個(gè)簇,一個(gè)通道只能有一個(gè)簇。集群狀態(tài)為OFF、READY(正在獲取圖像但沒(méi)有表面在PROCESSING)、BUSY(有表面在PROCESSING中)、UNAVAILABLE(無(wú)法獲取圖像)

單緩沖

雙緩沖

三重緩沖
1.4多機位信號發(fā)送
信號是由與用戶(hù)應用程序交互的通道生成的事件。
幀觸發(fā)沖突
開(kāi)始曝光
此信號在幀曝光條件開(kāi)始時(shí)發(fā)出。
結束曝光
該信號在幀曝光條件結束時(shí)發(fā)出。
表面填充
當目標簇的Surface進(jìn)入Filled狀態(tài)時(shí)發(fā)出此信號。
表面處理
當目標簇的Surface進(jìn)入Processing狀態(tài)時(shí)發(fā)出此信號。
集群不可用
采集失敗 (**)
采集序列開(kāi)始
采集序列結束
頻道活動(dòng)結束
有三種訪(fǎng)問(wèn)它們的機制:
1. 是指用戶(hù)編寫(xiě)的函數,當預定義的信號出現時(shí)會(huì )自動(dòng)調用這些函數。 (回調)
2. 允許線(xiàn)程等待預定義信號發(fā)生的專(zhuān)用機制。
3. 一種用戶(hù)定義的機制,涉及標準的 Windows 等待函數。
使用回調的案例:
1. 默認情況下,所有信號都被禁用。 SignalEnable 參數用于設置。
2.注冊回調函數
3. 在回調函數中,使用 PMCSIGNALINFO 捕獲事件,其中收錄有關(guān)觸發(fā)事件的信息。
例子:


1.5觸發(fā)器
觸發(fā)事件由 TrigMode 和 NextTrigMode 參數設置。
1.5.1 初始觸發(fā)事件:
1.5.2觸發(fā)事件結束
采集階段可以用 EndTrigMode 結束:
1)當幀、頁(yè)或行計數器到期時(shí),采集 序列會(huì )自動(dòng)終止。 (自動(dòng))
2)當檢測到硬件側觸發(fā)線(xiàn)的有效轉換時(shí),采集序列終止(HARD)
或者通過(guò)BreakEffect參數直接終止通道的活動(dòng)狀態(tài):
1)切片/相位/序列結束后停止采集(FINISH)
2)中止
1.6采集模式1.7異常
通過(guò)異常代碼或 Windows 異常來(lái)管理異常。 ErrorHandling 參數設置錯誤管理行為,有 4 個(gè)可能的值。

2.演示

2.1 打開(kāi)驅動(dòng)
// Open MultiCam driver
MC.OpenDriver();
2.2 創(chuàng )建頻道
// Create a channel and associate it with the first connector on the first board
MC.Create("CHANNEL", out channel);
MC.SetParam(channel, "DriverIndex", 0);
2.3 相機參數設置
// Choose the CAM file
MC.SetParam(channel, "CamFile", "1000m_P50RG");
// Choose the camera expose duration
MC.SetParam(channel, "Expose_us", 20000);
// Choose the pixel color format
MC.SetParam(channel, "ColorFormat", "Y8");
2.4 觸發(fā)模式改變
//Set the acquisition mode to Snapshot
MC.SetParam(channel, "AcquisitionMode", "SNAPSHOT");
// Choose the way the first acquisition is triggered
MC.SetParam(channel, "TrigMode", "COMBINED");
// Choose the triggering mode for subsequent acquisitions
MC.SetParam(channel, "NextTrigMode", "COMBINED");
2.5 個(gè)事件觸發(fā)器
2.5.1 注冊回調函數
// Register the callback function
multiCamCallback = new MC.CALLBACK(MultiCamCallback);
MC.RegisterCallback(channel, multiCamCallback, channel);
2.5.2 信號開(kāi)啟
// Enable the signals corresponding to the callback functions
MC.SetParam(channel, MC.SignalEnable + MC.SIG_SURFACE_PROCESSING, "ON");
MC.SetParam(channel, MC.SignalEnable + MC.SIG_ACQUISITION_FAILURE, "ON");
2.5.3 判斷接收信號
如果接收到的是MC.SIG_SURFACE_PROCESSING,調用ProcessingCallback獲取圖片的數據,并將圖片數據轉換為位圖。如果收到 MC.SIG_ACQUISITION_FAILURE,調用 AcqFailureCallback 輸出“Acquisition Failure”。
private void MultiCamCallback(ref MC.SIGNALINFO signalInfo)
{
switch(signalInfo.Signal)
{
case MC.SIG_SURFACE_PROCESSING:
ProcessingCallback(signalInfo);
break;
case MC.SIG_ACQUISITION_FAILURE:
AcqFailureCallback(signalInfo);
break;
default:
throw new Euresys.MultiCamException("Unknown signal");
}
}
2.6通道狀態(tài)設置為READY
// Prepare the channel in order to minimize the acquisition sequence startup latency
MC.SetParam(channel, "ChannelState", "READY");
3. 編寫(xiě)測試程序
觸發(fā)方式使用默認的連續觸發(fā)。
在界面上顯示camfile的加載。
演示界面只有Go和stop和一個(gè)狀態(tài)欄。添加按鈕以打開(kāi)/關(guān)閉相機和啟動(dòng)/停止采集.
曝光開(kāi)始事件被觸發(fā),幀數開(kāi)始計數++;觸發(fā)surface_processing事件,圖像采集計數++;觸發(fā)采集失敗事件,丟幀計數++。


代碼肯定行不通。畢竟我是一個(gè)沒(méi)見(jiàn)過(guò)采集卡片的人,所以我只是在說(shuō)紙上談兵哈哈哈
標簽:觸發(fā)器、MC、C#、抓取、表面、筆記、圖像、采集卡片、通道
自動(dòng)采集編寫(xiě)(GoldData配制登錄和檢查會(huì )話(huà)的數據集有什么區別?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 150 次瀏覽 ? 2022-04-15 09:45
概括
本文將介紹GoldData的半自動(dòng)登錄功能對采集必填網(wǎng)站數據的使用。GoldData的半自動(dòng)登錄功能是指通過(guò)腳本進(jìn)行登錄。如果需要手動(dòng)輸入驗證碼或其他內容,可以通過(guò)收發(fā)郵件的方式進(jìn)行登錄。
下載示例
為了解釋方便,我們使用采集mydict的數據一詞來(lái)解釋需要登錄的采集網(wǎng)站數據。mydict示例程序可以從開(kāi)源下載< @網(wǎng)站 到 ( , 或 )。
下載后打開(kāi)命令行,運行以下命令啟動(dòng)示例程序。
java -jar mydict.war
啟動(dòng)后,打開(kāi)瀏覽器輸入 URL:8080/ 即可打開(kāi)登錄頁(yè)面。如下所示:
輸入用戶(hù)名和密碼(均為admin),即可打開(kāi)首頁(yè)單詞列表。
編寫(xiě)登錄和檢查會(huì )話(huà)腳本
點(diǎn)擊“采集Management”網(wǎng)站Management”,點(diǎn)擊“Add”按鈕,添加一個(gè)名為mydict的站點(diǎn)。如下:
接下來(lái)配置登錄和檢查會(huì )話(huà)腳本,點(diǎn)擊“設置半自動(dòng)登錄”,會(huì )打開(kāi)站點(diǎn)半自動(dòng)登錄配置頁(yè)面,如下圖:
登錄腳本如下:
//發(fā)送ajax請求驗證碼
var va=$ajax('http://localhost:8080/code/vcode?timestamp=1554001708730',{encoding:false});
var arg_={
label:site.name+"驗證碼",
type:1,
content:va.content
}
//waitForInput內置函數將發(fā)送郵件,并等待輸入
//(回復郵件,或者goldData平臺輸入),
//并把輸入內容當作驗證碼返回。
var code=waitForInput(arg_);
var data="username=admin&password=admin&vcode="+code
var m=new Map()
m.put('Cookie',va.cookie)
//發(fā)送ajax請求執行登錄
var content=$ajax('http://localhost:8080/doLogin',{method:'POST',headers:m,data:data})
//如果正確,將返回狀態(tài)1(登錄成功),和headers信息給GoldData,
//否則返回0(登錄失?。?!
if(content.headers){
m.putAll(content.headers)
}
var ret={status:1,headers:m}
if(content.status!=200){
ret.status=0
}
ret
檢查腳本如下:
var ret=true;
if(html.contains("我的單詞-登錄")){
ret=false
}
ret;
準備好后,我們回到網(wǎng)站管理頁(yè)面,點(diǎn)擊“開(kāi)始登錄”,會(huì )開(kāi)始執行“自動(dòng)登錄”,之后點(diǎn)擊“查詢(xún)”按鈕刷新頁(yè)面,可以看到“等待輸入”狀態(tài)。如下所示:
此時(shí),您設置的通知郵箱應該也會(huì )同時(shí)收到郵件。點(diǎn)擊打開(kāi)郵件,或者點(diǎn)擊頁(yè)面上的“輸入等待輸入”按鈕,會(huì )看到如下內容:
根據郵件內容,回復郵件“{{qcxe}}”,程序可以繼續執行。在golddata頁(yè)面輸入“qcxe”,效果是一樣的。程序將返回“waitForInput()”并返回輸入。
回復后,我們在golddata頁(yè)面點(diǎn)擊“查詢(xún)”刷新頁(yè)面,mydict的登錄狀態(tài)會(huì )變?yōu)椤暗卿洝?。如下所示?br />
接下來(lái),我們可以定義抓取規則。
定義抓取規則
在添加規則之前,我們還需要定義一個(gè)類(lèi)似于表結構的數據集。如下所示:
接下來(lái)點(diǎn)擊“采集管理“規則管理”,添加規則,打開(kāi)添加規則頁(yè)面,如下圖:
抓取規則腳本如下:
[
{
__sample: http://localhost:8080/word/index?pageNum=2
match0: http\:\/\/localhost\:8080\/word\/index(\?pageNum=\d+)?
fields0:
{
__model: true
__dataset: word
__node: "#content ul >li"
sn:
{
expr: ""
attr: ""
js: md5(item.name)
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
name:
{
expr: h5
attr: ""
js: ""
__label: ""
__showOnList: true
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
uk:
{
expr: li span.uk
attr: ""
js: source.replace("uk: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
us:
{
expr: li span.us
attr: ""
js: source.replace("us: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
fields1:
{
__node: .pagination a
href:
{
expr: a
attr: abs:href
js: ""
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
}
]
然后單擊測試,將進(jìn)行測試爬網(wǎng)。我們發(fā)現數據確實(shí)被抓到了,如下圖所示:
配置抓取器抓取
這個(gè)和之前一樣,設置爬蟲(chóng)爬取站點(diǎn)“mydict”。然后點(diǎn)擊開(kāi)始抓取。然后您將在數據管理中查看捕獲的數據。
綜上所述
GoldData半自動(dòng)登錄的本質(zhì)是提供一個(gè)框架,可以手動(dòng)干預異步獲取會(huì )話(huà)。既可以調用AI接口完成自動(dòng)登錄;當復雜的識別需要提供類(lèi)似于驗證碼的輸入時(shí),它也可以直接轉換cookie或token信息。通過(guò)電子郵件向 GoldData 平臺發(fā)送和接收(這樣無(wú)論 CAPTCHA 多么復雜),讓 GoldData 能夠繼續捕獲數據。 查看全部
自動(dòng)采集編寫(xiě)(GoldData配制登錄和檢查會(huì )話(huà)的數據集有什么區別?)
概括
本文將介紹GoldData的半自動(dòng)登錄功能對采集必填網(wǎng)站數據的使用。GoldData的半自動(dòng)登錄功能是指通過(guò)腳本進(jìn)行登錄。如果需要手動(dòng)輸入驗證碼或其他內容,可以通過(guò)收發(fā)郵件的方式進(jìn)行登錄。
下載示例
為了解釋方便,我們使用采集mydict的數據一詞來(lái)解釋需要登錄的采集網(wǎng)站數據。mydict示例程序可以從開(kāi)源下載< @網(wǎng)站 到 ( , 或 )。
下載后打開(kāi)命令行,運行以下命令啟動(dòng)示例程序。
java -jar mydict.war
啟動(dòng)后,打開(kāi)瀏覽器輸入 URL:8080/ 即可打開(kāi)登錄頁(yè)面。如下所示:

輸入用戶(hù)名和密碼(均為admin),即可打開(kāi)首頁(yè)單詞列表。
編寫(xiě)登錄和檢查會(huì )話(huà)腳本
點(diǎn)擊“采集Management”網(wǎng)站Management”,點(diǎn)擊“Add”按鈕,添加一個(gè)名為mydict的站點(diǎn)。如下:

接下來(lái)配置登錄和檢查會(huì )話(huà)腳本,點(diǎn)擊“設置半自動(dòng)登錄”,會(huì )打開(kāi)站點(diǎn)半自動(dòng)登錄配置頁(yè)面,如下圖:

登錄腳本如下:
//發(fā)送ajax請求驗證碼
var va=$ajax('http://localhost:8080/code/vcode?timestamp=1554001708730',{encoding:false});
var arg_={
label:site.name+"驗證碼",
type:1,
content:va.content
}
//waitForInput內置函數將發(fā)送郵件,并等待輸入
//(回復郵件,或者goldData平臺輸入),
//并把輸入內容當作驗證碼返回。
var code=waitForInput(arg_);
var data="username=admin&password=admin&vcode="+code
var m=new Map()
m.put('Cookie',va.cookie)
//發(fā)送ajax請求執行登錄
var content=$ajax('http://localhost:8080/doLogin',{method:'POST',headers:m,data:data})
//如果正確,將返回狀態(tài)1(登錄成功),和headers信息給GoldData,
//否則返回0(登錄失?。?!
if(content.headers){
m.putAll(content.headers)
}
var ret={status:1,headers:m}
if(content.status!=200){
ret.status=0
}
ret
檢查腳本如下:
var ret=true;
if(html.contains("我的單詞-登錄")){
ret=false
}
ret;
準備好后,我們回到網(wǎng)站管理頁(yè)面,點(diǎn)擊“開(kāi)始登錄”,會(huì )開(kāi)始執行“自動(dòng)登錄”,之后點(diǎn)擊“查詢(xún)”按鈕刷新頁(yè)面,可以看到“等待輸入”狀態(tài)。如下所示:

此時(shí),您設置的通知郵箱應該也會(huì )同時(shí)收到郵件。點(diǎn)擊打開(kāi)郵件,或者點(diǎn)擊頁(yè)面上的“輸入等待輸入”按鈕,會(huì )看到如下內容:


根據郵件內容,回復郵件“{{qcxe}}”,程序可以繼續執行。在golddata頁(yè)面輸入“qcxe”,效果是一樣的。程序將返回“waitForInput()”并返回輸入。
回復后,我們在golddata頁(yè)面點(diǎn)擊“查詢(xún)”刷新頁(yè)面,mydict的登錄狀態(tài)會(huì )變?yōu)椤暗卿洝?。如下所示?br />

接下來(lái),我們可以定義抓取規則。
定義抓取規則
在添加規則之前,我們還需要定義一個(gè)類(lèi)似于表結構的數據集。如下所示:

接下來(lái)點(diǎn)擊“采集管理“規則管理”,添加規則,打開(kāi)添加規則頁(yè)面,如下圖:

抓取規則腳本如下:
[
{
__sample: http://localhost:8080/word/index?pageNum=2
match0: http\:\/\/localhost\:8080\/word\/index(\?pageNum=\d+)?
fields0:
{
__model: true
__dataset: word
__node: "#content ul >li"
sn:
{
expr: ""
attr: ""
js: md5(item.name)
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
name:
{
expr: h5
attr: ""
js: ""
__label: ""
__showOnList: true
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
uk:
{
expr: li span.uk
attr: ""
js: source.replace("uk: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
us:
{
expr: li span.us
attr: ""
js: source.replace("us: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
fields1:
{
__node: .pagination a
href:
{
expr: a
attr: abs:href
js: ""
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
}
]
然后單擊測試,將進(jìn)行測試爬網(wǎng)。我們發(fā)現數據確實(shí)被抓到了,如下圖所示:

配置抓取器抓取
這個(gè)和之前一樣,設置爬蟲(chóng)爬取站點(diǎn)“mydict”。然后點(diǎn)擊開(kāi)始抓取。然后您將在數據管理中查看捕獲的數據。
綜上所述
GoldData半自動(dòng)登錄的本質(zhì)是提供一個(gè)框架,可以手動(dòng)干預異步獲取會(huì )話(huà)。既可以調用AI接口完成自動(dòng)登錄;當復雜的識別需要提供類(lèi)似于驗證碼的輸入時(shí),它也可以直接轉換cookie或token信息。通過(guò)電子郵件向 GoldData 平臺發(fā)送和接收(這樣無(wú)論 CAPTCHA 多么復雜),讓 GoldData 能夠繼續捕獲數據。
自動(dòng)采集編寫(xiě)(自動(dòng)化白盒測試系統及方法()測試技術(shù))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2022-04-14 14:14
本發(fā)明專(zhuān)利技術(shù)提供了一種web應用自動(dòng)化白盒測試系統及方法,包括web data采集模塊,自動(dòng)將測試者提交的數據信息保存在客戶(hù)端瀏覽器中作為web請求信息數據文件,并添加動(dòng)作信息生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試用例執行的邏輯順序,并自動(dòng)執行初始測試。修改數據文件,生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
下載所有詳細的技術(shù)數據
【技術(shù)實(shí)現步驟總結】
本專(zhuān)利技術(shù)屬于計算機軟件測試技術(shù),特別是Web應用軟件功能可靠性自動(dòng)測試的測試技術(shù)。技術(shù)背景 目前,在軟件測試領(lǐng)域,自動(dòng)化測試是一種新興的測試技術(shù)。自動(dòng)化測試方法主要有兩種: 1、捕獲/回放機制:直接使用商業(yè)測試軟件編寫(xiě)測試用例腳本。使用商業(yè)測試軟件自動(dòng)測試被測軟件。這類(lèi)測試軟件在測試web應用時(shí),共同點(diǎn)就是記錄web應用頁(yè)面操作,生成測試腳本。測試時(shí),客戶(hù)端模擬瀏覽器操作,實(shí)現自動(dòng)化測試。如圖1所示。這種測試方式的缺點(diǎn)是客戶(hù)端只能獲取http信息流,而無(wú)法獲取軟件的內部數據結構及相關(guān)信息,無(wú)法對軟件進(jìn)行完整有效的檢查和驗證,具有一定的局限性。例如,在驗證軟件運行時(shí)動(dòng)態(tài)生成的數據,而這些動(dòng)態(tài)生成的數據并沒(méi)有通過(guò)http信息流返回給客戶(hù)端時(shí),捕獲/回放機制的測試方法很難進(jìn)行有效的測試。2、自動(dòng)白盒測試:這類(lèi)自動(dòng)化測試工具自動(dòng)生成測試用例腳本,主要用于源代碼的分析和測試,不具備邏輯測試的功能。雖然這種類(lèi)型的自動(dòng)測試很方便,它可以發(fā)現人工測試很難發(fā)現的錯誤,但也有局限性:此類(lèi)工具一般價(jià)格昂貴,初期投資非常高,無(wú)法有效測試軟件的業(yè)務(wù)功能。而且,在現有技術(shù)中,無(wú)論是捕獲/回放機制還是自動(dòng)白盒測試,這些測試方法仍然存在一個(gè)缺點(diǎn),即只能單獨執行測試用例,不能有效地使用多個(gè)用例。到 --> 業(yè)務(wù)邏輯。耦合。當一個(gè)用例需要以其他用例的運行結果作為初始條件時(shí),目前的測試方法很難將結果自動(dòng)輸出到其他用例,需要人工實(shí)現,沒(méi)有辦法自動(dòng)耦合大量根據業(yè)務(wù)邏輯的用例。
技術(shù)實(shí)現思路
該專(zhuān)利技術(shù)的目的是克服現有技術(shù)的不足,提出一種實(shí)現Web應用程序自動(dòng)白盒測試的系統,適用于基于J2EE和struts技術(shù)B/S架構的Web應用程序。該專(zhuān)利技術(shù)的另一個(gè)目的是提出一種實(shí)現網(wǎng)絡(luò )應用程序自動(dòng)化白盒測試的方法。測試過(guò)程中,對測試用例進(jìn)行人工測試,測試過(guò)程中自動(dòng)記錄測試數據,并以固定格式保存。根據保存的數據自動(dòng)生成用例的測試腳本,測試腳本和測試數據可以實(shí)現測試用例的自動(dòng)白盒測試。當業(yè)務(wù)復雜時(shí),會(huì )有大量的測試用例。該專(zhuān)利技術(shù)提出的方法還可以自動(dòng)構建不同測試用例之間的業(yè)務(wù)邏輯關(guān)系,從而可以根據業(yè)務(wù)邏輯關(guān)系批量運行測試腳本。腳本自動(dòng)測試時(shí),測試腳本部署在服務(wù)器的表現層,腳本模擬服務(wù)器組件內部的軟件業(yè)務(wù)操作。測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第一個(gè)目的,采用的技術(shù)方案如下:Web應用自動(dòng)化白盒測試系統,包括以下組件:web data采集模塊,存儲數據測試人員在客戶(hù)端瀏覽器中提交的信息自動(dòng)保存為web請求信息數據文件,添加動(dòng)作信息,生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
上述技術(shù)方案中,Web數據采集模塊是通過(guò)在客戶(hù)端瀏覽器中安裝數據采集-->采集插件實(shí)現的,數據采集插件調用提供的API瀏覽器,以及瀏覽器提交的數據請求信息,以固定格式記錄保存。動(dòng)作信息是從struts的描述文件中獲取的,該文件記錄了web操作過(guò)程中的業(yè)務(wù)映射關(guān)系。腳本生成模塊根據初始測試數據文件生成初始測試腳本。如果測試用例需要檢查更多的驗證點(diǎn),則通過(guò)修改初始測試腳本得到測試腳本。如果測試用例不需要檢查更多的驗證點(diǎn),那么初始測試腳本就是測試腳本。集成測試模塊將測試腳本部署在服務(wù)器的表現層,對服務(wù)器的表現層進(jìn)行集成測試。測試時(shí),用例根據業(yè)務(wù)邏輯將生成的數據輸出到對應的數據文件中,以便相關(guān)用例可以使用該用例的操作。結果,測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第二個(gè)目的,采用的技術(shù)方案如下:一種Web應用自動(dòng)化白盒測試方法,包括以下步驟:(1)手動(dòng)測試測試用例;(2)網(wǎng)頁(yè)數據采集模塊自動(dòng)記錄并保存瀏覽器提交的數據信息;(3)修改步驟中保存的數據文件(<
<p>是基于軟件代碼的測試,可以對軟件運行時(shí)的細節進(jìn)行仔細檢查。在測試過(guò)程中,可以通過(guò)軟件內部的邏輯結構和相關(guān)信息來(lái)判斷實(shí)際狀態(tài)是否與預期狀態(tài)一致。當軟件出現bug時(shí),可以根據測試結果報告確定具體的功能或類(lèi)別。出現問(wèn)題?,F有技術(shù)中業(yè)務(wù)邏輯的自動(dòng)化測試方法多為黑盒測試。與黑盒測試相比,本專(zhuān)利技術(shù)可以更有效地檢查軟件運行的正確性,有效測試代碼內部結構,保證軟件質(zhì)量。2、本專(zhuān)利技術(shù)的數據和腳本易于使用且編寫(xiě)高效。傳統的白盒測試方法耗時(shí)長(cháng),對測試人員技術(shù)要求高,成本高。該專(zhuān)利技術(shù)提出自動(dòng)數據自動(dòng)化 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)化白盒測試系統及方法()測試技術(shù))
本發(fā)明專(zhuān)利技術(shù)提供了一種web應用自動(dòng)化白盒測試系統及方法,包括web data采集模塊,自動(dòng)將測試者提交的數據信息保存在客戶(hù)端瀏覽器中作為web請求信息數據文件,并添加動(dòng)作信息生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試用例執行的邏輯順序,并自動(dòng)執行初始測試。修改數據文件,生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
下載所有詳細的技術(shù)數據
【技術(shù)實(shí)現步驟總結】
本專(zhuān)利技術(shù)屬于計算機軟件測試技術(shù),特別是Web應用軟件功能可靠性自動(dòng)測試的測試技術(shù)。技術(shù)背景 目前,在軟件測試領(lǐng)域,自動(dòng)化測試是一種新興的測試技術(shù)。自動(dòng)化測試方法主要有兩種: 1、捕獲/回放機制:直接使用商業(yè)測試軟件編寫(xiě)測試用例腳本。使用商業(yè)測試軟件自動(dòng)測試被測軟件。這類(lèi)測試軟件在測試web應用時(shí),共同點(diǎn)就是記錄web應用頁(yè)面操作,生成測試腳本。測試時(shí),客戶(hù)端模擬瀏覽器操作,實(shí)現自動(dòng)化測試。如圖1所示。這種測試方式的缺點(diǎn)是客戶(hù)端只能獲取http信息流,而無(wú)法獲取軟件的內部數據結構及相關(guān)信息,無(wú)法對軟件進(jìn)行完整有效的檢查和驗證,具有一定的局限性。例如,在驗證軟件運行時(shí)動(dòng)態(tài)生成的數據,而這些動(dòng)態(tài)生成的數據并沒(méi)有通過(guò)http信息流返回給客戶(hù)端時(shí),捕獲/回放機制的測試方法很難進(jìn)行有效的測試。2、自動(dòng)白盒測試:這類(lèi)自動(dòng)化測試工具自動(dòng)生成測試用例腳本,主要用于源代碼的分析和測試,不具備邏輯測試的功能。雖然這種類(lèi)型的自動(dòng)測試很方便,它可以發(fā)現人工測試很難發(fā)現的錯誤,但也有局限性:此類(lèi)工具一般價(jià)格昂貴,初期投資非常高,無(wú)法有效測試軟件的業(yè)務(wù)功能。而且,在現有技術(shù)中,無(wú)論是捕獲/回放機制還是自動(dòng)白盒測試,這些測試方法仍然存在一個(gè)缺點(diǎn),即只能單獨執行測試用例,不能有效地使用多個(gè)用例。到 --> 業(yè)務(wù)邏輯。耦合。當一個(gè)用例需要以其他用例的運行結果作為初始條件時(shí),目前的測試方法很難將結果自動(dòng)輸出到其他用例,需要人工實(shí)現,沒(méi)有辦法自動(dòng)耦合大量根據業(yè)務(wù)邏輯的用例。
技術(shù)實(shí)現思路
該專(zhuān)利技術(shù)的目的是克服現有技術(shù)的不足,提出一種實(shí)現Web應用程序自動(dòng)白盒測試的系統,適用于基于J2EE和struts技術(shù)B/S架構的Web應用程序。該專(zhuān)利技術(shù)的另一個(gè)目的是提出一種實(shí)現網(wǎng)絡(luò )應用程序自動(dòng)化白盒測試的方法。測試過(guò)程中,對測試用例進(jìn)行人工測試,測試過(guò)程中自動(dòng)記錄測試數據,并以固定格式保存。根據保存的數據自動(dòng)生成用例的測試腳本,測試腳本和測試數據可以實(shí)現測試用例的自動(dòng)白盒測試。當業(yè)務(wù)復雜時(shí),會(huì )有大量的測試用例。該專(zhuān)利技術(shù)提出的方法還可以自動(dòng)構建不同測試用例之間的業(yè)務(wù)邏輯關(guān)系,從而可以根據業(yè)務(wù)邏輯關(guān)系批量運行測試腳本。腳本自動(dòng)測試時(shí),測試腳本部署在服務(wù)器的表現層,腳本模擬服務(wù)器組件內部的軟件業(yè)務(wù)操作。測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第一個(gè)目的,采用的技術(shù)方案如下:Web應用自動(dòng)化白盒測試系統,包括以下組件:web data采集模塊,存儲數據測試人員在客戶(hù)端瀏覽器中提交的信息自動(dòng)保存為web請求信息數據文件,添加動(dòng)作信息,生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
上述技術(shù)方案中,Web數據采集模塊是通過(guò)在客戶(hù)端瀏覽器中安裝數據采集-->采集插件實(shí)現的,數據采集插件調用提供的API瀏覽器,以及瀏覽器提交的數據請求信息,以固定格式記錄保存。動(dòng)作信息是從struts的描述文件中獲取的,該文件記錄了web操作過(guò)程中的業(yè)務(wù)映射關(guān)系。腳本生成模塊根據初始測試數據文件生成初始測試腳本。如果測試用例需要檢查更多的驗證點(diǎn),則通過(guò)修改初始測試腳本得到測試腳本。如果測試用例不需要檢查更多的驗證點(diǎn),那么初始測試腳本就是測試腳本。集成測試模塊將測試腳本部署在服務(wù)器的表現層,對服務(wù)器的表現層進(jìn)行集成測試。測試時(shí),用例根據業(yè)務(wù)邏輯將生成的數據輸出到對應的數據文件中,以便相關(guān)用例可以使用該用例的操作。結果,測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第二個(gè)目的,采用的技術(shù)方案如下:一種Web應用自動(dòng)化白盒測試方法,包括以下步驟:(1)手動(dòng)測試測試用例;(2)網(wǎng)頁(yè)數據采集模塊自動(dòng)記錄并保存瀏覽器提交的數據信息;(3)修改步驟中保存的數據文件(<
<p>是基于軟件代碼的測試,可以對軟件運行時(shí)的細節進(jìn)行仔細檢查。在測試過(guò)程中,可以通過(guò)軟件內部的邏輯結構和相關(guān)信息來(lái)判斷實(shí)際狀態(tài)是否與預期狀態(tài)一致。當軟件出現bug時(shí),可以根據測試結果報告確定具體的功能或類(lèi)別。出現問(wèn)題?,F有技術(shù)中業(yè)務(wù)邏輯的自動(dòng)化測試方法多為黑盒測試。與黑盒測試相比,本專(zhuān)利技術(shù)可以更有效地檢查軟件運行的正確性,有效測試代碼內部結構,保證軟件質(zhì)量。2、本專(zhuān)利技術(shù)的數據和腳本易于使用且編寫(xiě)高效。傳統的白盒測試方法耗時(shí)長(cháng),對測試人員技術(shù)要求高,成本高。該專(zhuān)利技術(shù)提出自動(dòng)數據自動(dòng)化
自動(dòng)采集編寫(xiě)(看學(xué)習代碼編寫(xiě)爬蟲(chóng)的目的是什么?教程在這里)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 159 次瀏覽 ? 2022-04-12 02:30
這要看學(xué)習代碼寫(xiě)爬蟲(chóng)的目的是什么?磨練您的技能,獲得經(jīng)驗,或者只是想從網(wǎng)絡(luò )上抓取數據以供您自己使用或研究。
如果你想成為學(xué)生黨或者打算轉行IT技術(shù)的人,就必須學(xué)習編碼和編寫(xiě)爬蟲(chóng),以擁有更多的實(shí)踐經(jīng)驗和額外的技術(shù)技能,以便日后找到工作。因為未來(lái)互聯(lián)網(wǎng)的信息化程度會(huì )越來(lái)越高,爬蟲(chóng)可以更高效的獲取互聯(lián)網(wǎng)信息,爬蟲(chóng)的技術(shù)也在興起。
如果您在工作或學(xué)習中只需要采集互聯(lián)網(wǎng)數據應用,可以先試用市面上通用的采集器,減少獲取數據的資源投入,讓您專(zhuān)注于自己的自己的事。
自我推薦,采集網(wǎng)頁(yè)資料可以試試優(yōu)采云采集平臺,有免費版。以下是 采集 結果數據的示例:
優(yōu)采云采集是新一代網(wǎng)站文章采集及發(fā)布平臺,完全在線(xiàn)配置使用云端采集,功能強大,操作簡(jiǎn)單、快速、高效的配置。
優(yōu)采云不僅提供網(wǎng)頁(yè)文章采集、批量數據修改、定時(shí)采集、定時(shí)定量自動(dòng)發(fā)布等基礎功能,還集成了強大的SEO工具和創(chuàng )新實(shí)現了規則智能抽取引擎、書(shū)簽一鍵發(fā)布采集等功能,大大提高了采集配置和發(fā)布的效率。
采集簡(jiǎn)單,發(fā)布更輕松:支持一鍵發(fā)布到WorpPress、Empire、織夢(mèng)、ZBlog、Discuz、Destoon、Typecho、Emlog、Mipcms、Mito、Yiyoucms、Applecms、PHPcms等cms網(wǎng)站系統也可以發(fā)布到自定義Http接口。
有需要的同學(xué)可以看看下面的教程,很快就能上手。 查看全部
自動(dòng)采集編寫(xiě)(看學(xué)習代碼編寫(xiě)爬蟲(chóng)的目的是什么?教程在這里)
這要看學(xué)習代碼寫(xiě)爬蟲(chóng)的目的是什么?磨練您的技能,獲得經(jīng)驗,或者只是想從網(wǎng)絡(luò )上抓取數據以供您自己使用或研究。
如果你想成為學(xué)生黨或者打算轉行IT技術(shù)的人,就必須學(xué)習編碼和編寫(xiě)爬蟲(chóng),以擁有更多的實(shí)踐經(jīng)驗和額外的技術(shù)技能,以便日后找到工作。因為未來(lái)互聯(lián)網(wǎng)的信息化程度會(huì )越來(lái)越高,爬蟲(chóng)可以更高效的獲取互聯(lián)網(wǎng)信息,爬蟲(chóng)的技術(shù)也在興起。
如果您在工作或學(xué)習中只需要采集互聯(lián)網(wǎng)數據應用,可以先試用市面上通用的采集器,減少獲取數據的資源投入,讓您專(zhuān)注于自己的自己的事。
自我推薦,采集網(wǎng)頁(yè)資料可以試試優(yōu)采云采集平臺,有免費版。以下是 采集 結果數據的示例:

優(yōu)采云采集是新一代網(wǎng)站文章采集及發(fā)布平臺,完全在線(xiàn)配置使用云端采集,功能強大,操作簡(jiǎn)單、快速、高效的配置。
優(yōu)采云不僅提供網(wǎng)頁(yè)文章采集、批量數據修改、定時(shí)采集、定時(shí)定量自動(dòng)發(fā)布等基礎功能,還集成了強大的SEO工具和創(chuàng )新實(shí)現了規則智能抽取引擎、書(shū)簽一鍵發(fā)布采集等功能,大大提高了采集配置和發(fā)布的效率。
采集簡(jiǎn)單,發(fā)布更輕松:支持一鍵發(fā)布到WorpPress、Empire、織夢(mèng)、ZBlog、Discuz、Destoon、Typecho、Emlog、Mipcms、Mito、Yiyoucms、Applecms、PHPcms等cms網(wǎng)站系統也可以發(fā)布到自定義Http接口。
有需要的同學(xué)可以看看下面的教程,很快就能上手。
自動(dòng)采集編寫(xiě)( 如何通過(guò)Python實(shí)現自動(dòng)填寫(xiě)調查問(wèn)卷】3.5獲取公網(wǎng)代理IP)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 342 次瀏覽 ? 2022-04-10 05:28
如何通過(guò)Python實(shí)現自動(dòng)填寫(xiě)調查問(wèn)卷】3.5獲取公網(wǎng)代理IP)
一、前言
這個(gè)文章以前是用來(lái)訓練新人的。大家覺(jué)得好理解,就分享給大家學(xué)習。如果你學(xué)過(guò)一些python,想用它做點(diǎn)什么,但沒(méi)有方向,不妨嘗試完成以下案例。
二、環(huán)境準備
安裝requests lxml beautifulsoup4的三個(gè)庫(以下代碼均在python3.5環(huán)境下測試)
pip install requests lxml beautifulsoup4
三、幾個(gè)小爬蟲(chóng)案例
3.1 獲取機器的公網(wǎng)IP地址
以在公網(wǎng)查詢(xún)IP為借口,使用python的requests庫自動(dòng)獲取IP地址。
import requests
r = requests.get("http://2017.ip138.com/ic.asp")
r.encoding = r.apparent_encoding #使用requests的字符編碼智能分析,避免中文亂碼
print(r.text)
# 你還可以使用正則匹配re模塊提取出IP
import re
print(re.findall("d{1,3}.d{1,3}.d{1,3}.d{1,3}",r.text))
3.2 用百度搜索界面寫(xiě)url采集器
在這種情況下,我們將使用 requests 結合 BeautifulSoup 庫來(lái)完成任務(wù)。我們需要在程序中設置User-Agent頭來(lái)繞過(guò)百度搜索引擎的反爬機制(可以盡量不添加User-Agent頭,看能不能獲取數據)。注意百度搜索結構的url鏈接規則,比如第一頁(yè)url鏈接參數pn=0,第二頁(yè)url鏈接參數pn=10……。等等。在這里,我們使用 css 選擇器路徑提取數據。
import requests
from bs4 import BeautifulSoup
# 設置User-Agent頭,繞過(guò)百度搜索引擎的反爬蟲(chóng)機制
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'}
# 注意觀(guān)察百度搜索結構的URL鏈接規律,例如第一頁(yè)pn=0,第二頁(yè)pn=10.... 依次類(lèi)推,下面的for循環(huán)搜索前10頁(yè)結果
for i in range(0,100,10):
bd_search = "https://www.baidu.com/s%3Fwd%3 ... ot%3B % str(i)
r = requests.get(bd_search,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
# 下面的select使用了css選擇器路徑提取數據
url_list = soup.select(".t > a")
for url in url_list:
real_url = url["href"]
r = requests.get(real_url)
print(r.url)
寫(xiě)完程序后,我們使用關(guān)鍵詞inurl:/dede/login.php批量提取織夢(mèng)cms的后臺地址,效果如下:
3.3 自動(dòng)下載搜狗壁紙
本例中,我們將通過(guò)爬蟲(chóng)自動(dòng)下載并搜索壁紙,并將程序中圖片存放的路徑更改為您要存放圖片的目錄路徑。還有一點(diǎn)是我們在程序中使用了json庫,因為在觀(guān)察過(guò)程中發(fā)現搜狗壁紙的地址是用json格式存儲的,所以我們使用json來(lái)解析這組數據。
import requests
import json
#下載圖片
url = "http://pic.sogou.com/pics/chan ... ot%3B
r = requests.get(url)
data = json.loads(r.text)
for i in data["all_items"]:
img_url = i["pic_url"]
# 下面這行里面的路徑改成你自己想要存放圖片的目錄路徑即可
with open("/home/evilk0/Desktop/img/%s" % img_url[-10:]+".jpg","wb") as f:
r2 = requests.get(img_url)
f.write(r2.content)
print("下載完畢:",img_url)
3.4 自動(dòng)填寫(xiě)問(wèn)卷
目標官網(wǎng):
客觀(guān)問(wèn)卷:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
r = requests.post(url = url,headers=header,data=data)
print(r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
當我們使用同一個(gè)IP提交多份問(wèn)卷時(shí),會(huì )觸發(fā)目標的反爬機制,服務(wù)器上會(huì )出現一個(gè)驗證碼。
我們可以使用X-Forwarded-For來(lái)偽造我們的IP,修改后的代碼如下:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
"X-Forwarded-For" : "%s"
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
header["X-Forwarded-For"] = (str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+str(random.randint(1,255))
r = requests.post(url = url,headers=header,data=data)
print(header["X-Forwarded-For"],r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
header["X-Forwarded-For"] = "%s"
效果圖:
關(guān)于這個(gè)文章,因為之前寫(xiě)過(guò),就不贅述了。有興趣的可以直接閱讀:【如何通過(guò)Python自動(dòng)填寫(xiě)問(wèn)卷】
3.5 獲取公網(wǎng)代理IP,判斷是否可用及延遲時(shí)間
在這個(gè)例子中,我們要爬取 [Western Proxies] 上的代理 IP,并驗證這些代理的生存能力和延遲。(可以將爬取的代理IP加入到proxychain中,然后進(jìn)行平時(shí)的滲透任務(wù)。)這里我直接調用linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2 {print}' - ,如果你想在Windows中運行這個(gè)程序,你需要修改os.popen中的命令,也就是倒數第三行,改成Windows可以執行的。
from bs4 import BeautifulSoup
import requests
import os
url = "http://www.xicidaili.com/nn/1"
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'}
r = requests.get(url=url,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
server_address = soup.select(".odd > td:nth-of-type(4)")
ip_list = soup.select(".odd > td:nth-of-type(2)")
ports = soup.select(".odd > td:nth-of-type(3)")
for server,ip in zip(server_address,ip_list):
if len(server.contents) != 1:
print(server.a.string.ljust(8),ip.string.ljust(20), end='')
else:
print("未知".ljust(8), ip.string.ljust(20), end='')
delay_time = os.popen("ping -c 1 " + ip.string + " | awk 'NR==2{print}' -")
delay_time = delay_time.read().split("time=")[-1].strip("
")
print("time = " + delay_time)
四、結束語(yǔ)
當然,你也可以用 python 做很多有趣的事情。 查看全部
自動(dòng)采集編寫(xiě)(
如何通過(guò)Python實(shí)現自動(dòng)填寫(xiě)調查問(wèn)卷】3.5獲取公網(wǎng)代理IP)

一、前言
這個(gè)文章以前是用來(lái)訓練新人的。大家覺(jué)得好理解,就分享給大家學(xué)習。如果你學(xué)過(guò)一些python,想用它做點(diǎn)什么,但沒(méi)有方向,不妨嘗試完成以下案例。
二、環(huán)境準備

安裝requests lxml beautifulsoup4的三個(gè)庫(以下代碼均在python3.5環(huán)境下測試)
pip install requests lxml beautifulsoup4

三、幾個(gè)小爬蟲(chóng)案例
3.1 獲取機器的公網(wǎng)IP地址
以在公網(wǎng)查詢(xún)IP為借口,使用python的requests庫自動(dòng)獲取IP地址。
import requests
r = requests.get("http://2017.ip138.com/ic.asp")
r.encoding = r.apparent_encoding #使用requests的字符編碼智能分析,避免中文亂碼
print(r.text)
# 你還可以使用正則匹配re模塊提取出IP
import re
print(re.findall("d{1,3}.d{1,3}.d{1,3}.d{1,3}",r.text))

3.2 用百度搜索界面寫(xiě)url采集器
在這種情況下,我們將使用 requests 結合 BeautifulSoup 庫來(lái)完成任務(wù)。我們需要在程序中設置User-Agent頭來(lái)繞過(guò)百度搜索引擎的反爬機制(可以盡量不添加User-Agent頭,看能不能獲取數據)。注意百度搜索結構的url鏈接規則,比如第一頁(yè)url鏈接參數pn=0,第二頁(yè)url鏈接參數pn=10……。等等。在這里,我們使用 css 選擇器路徑提取數據。
import requests
from bs4 import BeautifulSoup
# 設置User-Agent頭,繞過(guò)百度搜索引擎的反爬蟲(chóng)機制
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'}
# 注意觀(guān)察百度搜索結構的URL鏈接規律,例如第一頁(yè)pn=0,第二頁(yè)pn=10.... 依次類(lèi)推,下面的for循環(huán)搜索前10頁(yè)結果
for i in range(0,100,10):
bd_search = "https://www.baidu.com/s%3Fwd%3 ... ot%3B % str(i)
r = requests.get(bd_search,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
# 下面的select使用了css選擇器路徑提取數據
url_list = soup.select(".t > a")
for url in url_list:
real_url = url["href"]
r = requests.get(real_url)
print(r.url)
寫(xiě)完程序后,我們使用關(guān)鍵詞inurl:/dede/login.php批量提取織夢(mèng)cms的后臺地址,效果如下:

3.3 自動(dòng)下載搜狗壁紙
本例中,我們將通過(guò)爬蟲(chóng)自動(dòng)下載并搜索壁紙,并將程序中圖片存放的路徑更改為您要存放圖片的目錄路徑。還有一點(diǎn)是我們在程序中使用了json庫,因為在觀(guān)察過(guò)程中發(fā)現搜狗壁紙的地址是用json格式存儲的,所以我們使用json來(lái)解析這組數據。
import requests
import json
#下載圖片
url = "http://pic.sogou.com/pics/chan ... ot%3B
r = requests.get(url)
data = json.loads(r.text)
for i in data["all_items"]:
img_url = i["pic_url"]
# 下面這行里面的路徑改成你自己想要存放圖片的目錄路徑即可
with open("/home/evilk0/Desktop/img/%s" % img_url[-10:]+".jpg","wb") as f:
r2 = requests.get(img_url)
f.write(r2.content)
print("下載完畢:",img_url)

3.4 自動(dòng)填寫(xiě)問(wèn)卷
目標官網(wǎng):
客觀(guān)問(wèn)卷:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
r = requests.post(url = url,headers=header,data=data)
print(r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
當我們使用同一個(gè)IP提交多份問(wèn)卷時(shí),會(huì )觸發(fā)目標的反爬機制,服務(wù)器上會(huì )出現一個(gè)驗證碼。


我們可以使用X-Forwarded-For來(lái)偽造我們的IP,修改后的代碼如下:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
"X-Forwarded-For" : "%s"
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
header["X-Forwarded-For"] = (str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+str(random.randint(1,255))
r = requests.post(url = url,headers=header,data=data)
print(header["X-Forwarded-For"],r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
header["X-Forwarded-For"] = "%s"
效果圖:



關(guān)于這個(gè)文章,因為之前寫(xiě)過(guò),就不贅述了。有興趣的可以直接閱讀:【如何通過(guò)Python自動(dòng)填寫(xiě)問(wèn)卷】
3.5 獲取公網(wǎng)代理IP,判斷是否可用及延遲時(shí)間
在這個(gè)例子中,我們要爬取 [Western Proxies] 上的代理 IP,并驗證這些代理的生存能力和延遲。(可以將爬取的代理IP加入到proxychain中,然后進(jìn)行平時(shí)的滲透任務(wù)。)這里我直接調用linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2 {print}' - ,如果你想在Windows中運行這個(gè)程序,你需要修改os.popen中的命令,也就是倒數第三行,改成Windows可以執行的。
from bs4 import BeautifulSoup
import requests
import os
url = "http://www.xicidaili.com/nn/1"
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'}
r = requests.get(url=url,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
server_address = soup.select(".odd > td:nth-of-type(4)")
ip_list = soup.select(".odd > td:nth-of-type(2)")
ports = soup.select(".odd > td:nth-of-type(3)")
for server,ip in zip(server_address,ip_list):
if len(server.contents) != 1:
print(server.a.string.ljust(8),ip.string.ljust(20), end='')
else:
print("未知".ljust(8), ip.string.ljust(20), end='')
delay_time = os.popen("ping -c 1 " + ip.string + " | awk 'NR==2{print}' -")
delay_time = delay_time.read().split("time=")[-1].strip("
")
print("time = " + delay_time)


四、結束語(yǔ)
當然,你也可以用 python 做很多有趣的事情。
自動(dòng)采集編寫(xiě)(管理員賬號推薦使用微信公眾號、小程序的原生代碼開(kāi)發(fā))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2022-04-08 05:03
自動(dòng)采集編寫(xiě)/上線(xiàn)微信公眾號、小程序的原生代碼,并即時(shí)發(fā)布,方便快捷;包含常見(jiàn)的采集網(wǎng)址,并且提供一定的自動(dòng)轉換功能,可以將上述網(wǎng)址轉換為小程序地址;提供nodejs版本,并且支持windows和linux主機部署;可以批量管理多個(gè)微信公眾號、小程序同步進(jìn)行采集,或統一管理。一、微信公眾號、小程序原生代碼開(kāi)發(fā)微信公眾號原生代碼開(kāi)發(fā)如何進(jìn)行原生代碼采集呢?只需開(kāi)發(fā)一個(gè)php后臺,解析源碼,然后就可以開(kāi)始簡(jiǎn)單的自動(dòng)化爬蟲(chóng)爬取操作了。
步驟1:打開(kāi)瀏覽器瀏覽器地址:,進(jìn)入登錄頁(yè)面,如圖步驟2:點(diǎn)擊登錄并用賬號密碼登錄步驟3:進(jìn)入登錄后臺,如圖采集模塊暫不開(kāi)放,暫時(shí)暫時(shí)解決,稍后我們會(huì )同步解決采集過(guò)程中可能出現的問(wèn)題、步驟4:登錄成功后,進(jìn)入php后臺,獲取上面所提供的文件路徑,并配置相應的管理員賬號和密碼。管理員賬號推薦使用微信,進(jìn)入管理員php后臺,找到源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。
使用java采集數據項目的話(huà),你需要配置jsp的開(kāi)發(fā)環(huán)境,這里開(kāi)發(fā)環(huán)境自己搭建不太方便,可以聯(lián)系在線(xiàn)引導地址:phpdemo小程序原生代碼開(kāi)發(fā)也一樣,同樣以微信采集為例,登錄并開(kāi)始php后臺和小程序的源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。安裝java的java環(huán)境推薦使用微信,進(jìn)入管理員php后臺,配置相應的用戶(hù),密碼和項目路徑,具體配置方法百度搜索即可:php|java實(shí)現網(wǎng)站自動(dòng)化爬蟲(chóng)采集-酷前端小編一枚~步驟5:然后會(huì )得到對應小程序的源碼分析后,你需要獲取小程序的網(wǎng)址及打開(kāi)方式,具體方法百度搜索即可,大同小異的。
上述步驟有些需要手動(dòng)配置,小編沒(méi)有手動(dòng)配置,僅找到配置這塊的源碼,會(huì )后臺找到相應路徑和信息進(jìn)行簡(jiǎn)單配置:#小程序自動(dòng)化采集器-php&_phpshowtotime=1&time=20140329&https=false&wx=1#\\for\\index\\html\\fallback('#\\index\\');//獲取源碼路徑//創(chuàng )建網(wǎng)址分析器""".java-jstring:"""index.php"""so//訪(fǎng)問(wèn)網(wǎng)址的配置文件//訪(fǎng)問(wèn)授權服務(wù)器返回你要用的服務(wù)器地址"""php中文小程序源碼分析器-jstring格式化格式化這里我將使用自己編寫(xiě)的https加密環(huán)境,前面的小說(shuō)家采集器,和小說(shuō)家號都存放在這里。
簡(jiǎn)單配置,即可使用。首先通過(guò)微信,進(jìn)入到你的小程序,然后輸入采集內容采集。完成操作后,手動(dòng)執行代碼即可。---end---二、微信公眾號采集編寫(xiě)這里,我們只需要獲取微信公眾號的采集端口即可?,F在我們使用上面我們講。 查看全部
自動(dòng)采集編寫(xiě)(管理員賬號推薦使用微信公眾號、小程序的原生代碼開(kāi)發(fā))
自動(dòng)采集編寫(xiě)/上線(xiàn)微信公眾號、小程序的原生代碼,并即時(shí)發(fā)布,方便快捷;包含常見(jiàn)的采集網(wǎng)址,并且提供一定的自動(dòng)轉換功能,可以將上述網(wǎng)址轉換為小程序地址;提供nodejs版本,并且支持windows和linux主機部署;可以批量管理多個(gè)微信公眾號、小程序同步進(jìn)行采集,或統一管理。一、微信公眾號、小程序原生代碼開(kāi)發(fā)微信公眾號原生代碼開(kāi)發(fā)如何進(jìn)行原生代碼采集呢?只需開(kāi)發(fā)一個(gè)php后臺,解析源碼,然后就可以開(kāi)始簡(jiǎn)單的自動(dòng)化爬蟲(chóng)爬取操作了。
步驟1:打開(kāi)瀏覽器瀏覽器地址:,進(jìn)入登錄頁(yè)面,如圖步驟2:點(diǎn)擊登錄并用賬號密碼登錄步驟3:進(jìn)入登錄后臺,如圖采集模塊暫不開(kāi)放,暫時(shí)暫時(shí)解決,稍后我們會(huì )同步解決采集過(guò)程中可能出現的問(wèn)題、步驟4:登錄成功后,進(jìn)入php后臺,獲取上面所提供的文件路徑,并配置相應的管理員賬號和密碼。管理員賬號推薦使用微信,進(jìn)入管理員php后臺,找到源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。
使用java采集數據項目的話(huà),你需要配置jsp的開(kāi)發(fā)環(huán)境,這里開(kāi)發(fā)環(huán)境自己搭建不太方便,可以聯(lián)系在線(xiàn)引導地址:phpdemo小程序原生代碼開(kāi)發(fā)也一樣,同樣以微信采集為例,登錄并開(kāi)始php后臺和小程序的源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。安裝java的java環(huán)境推薦使用微信,進(jìn)入管理員php后臺,配置相應的用戶(hù),密碼和項目路徑,具體配置方法百度搜索即可:php|java實(shí)現網(wǎng)站自動(dòng)化爬蟲(chóng)采集-酷前端小編一枚~步驟5:然后會(huì )得到對應小程序的源碼分析后,你需要獲取小程序的網(wǎng)址及打開(kāi)方式,具體方法百度搜索即可,大同小異的。
上述步驟有些需要手動(dòng)配置,小編沒(méi)有手動(dòng)配置,僅找到配置這塊的源碼,會(huì )后臺找到相應路徑和信息進(jìn)行簡(jiǎn)單配置:#小程序自動(dòng)化采集器-php&_phpshowtotime=1&time=20140329&https=false&wx=1#\\for\\index\\html\\fallback('#\\index\\');//獲取源碼路徑//創(chuàng )建網(wǎng)址分析器""".java-jstring:"""index.php"""so//訪(fǎng)問(wèn)網(wǎng)址的配置文件//訪(fǎng)問(wèn)授權服務(wù)器返回你要用的服務(wù)器地址"""php中文小程序源碼分析器-jstring格式化格式化這里我將使用自己編寫(xiě)的https加密環(huán)境,前面的小說(shuō)家采集器,和小說(shuō)家號都存放在這里。
簡(jiǎn)單配置,即可使用。首先通過(guò)微信,進(jìn)入到你的小程序,然后輸入采集內容采集。完成操作后,手動(dòng)執行代碼即可。---end---二、微信公眾號采集編寫(xiě)這里,我們只需要獲取微信公眾號的采集端口即可?,F在我們使用上面我們講。
自動(dòng)采集編寫(xiě)(服務(wù)器必需支持偽靜態(tài)服務(wù)器源碼演示網(wǎng)站pc采集一次安裝受益終身 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2022-04-08 03:13
)
本源代碼經(jīng)樓主修改,詳細安裝方法已經(jīng)寫(xiě)好,可以完美安裝運行。
此源代碼已啟用偽靜態(tài)規則服務(wù)器必須支持偽靜態(tài)
服務(wù)器目前只支持php+apache
如果你是php+Nginx,請自行修改偽靜態(tài)規則
或者改變服務(wù)器運行環(huán)境。否則,它不可用。
本源代碼中沒(méi)有APP軟件。標題寫(xiě)的APP支持其他小說(shuō)APP平臺的轉碼閱讀。
小說(shuō)站的人都知道,運營(yíng)一個(gè)APP的成本太高了。制作一個(gè)APP的最低成本是10000元。但將你的網(wǎng)站鏈接到其他成熟的小說(shuō)站是最方便、最便宜的方式。本源碼支持其他APP軟件轉碼。
附帶演示 采集 規則。但是有些已經(jīng)過(guò)時(shí)了
采集請自己寫(xiě)規則。我們的軟件不提供采集規則
-------------------------------------------------- -----------------------------------------
本源代碼演示 網(wǎng)站 pc
配合CNZZ的統計插件,可以輕松實(shí)現下載的詳細統計和采集的詳細統計。(7)這個(gè)程序的自動(dòng)采集不是市面上常見(jiàn)的,如冠冠、采集夏等,而是在原采集的基礎上二次開(kāi)發(fā)DEDE的@>功能 采集的采集模塊可以有效保證章節內容的完整性,避免章節重復、章節內容無(wú)內容、章節亂碼等;采集可以達到24小時(shí)25萬(wàn)到30萬(wàn)章。(8)安裝比較簡(jiǎn)單,如果安裝后打開(kāi)的網(wǎng)址一直是手機版,
支持微信公眾號綁定:
網(wǎng)頁(yè)版截圖:
查看全部
自動(dòng)采集編寫(xiě)(服務(wù)器必需支持偽靜態(tài)服務(wù)器源碼演示網(wǎng)站pc采集一次安裝受益終身
)
本源代碼經(jīng)樓主修改,詳細安裝方法已經(jīng)寫(xiě)好,可以完美安裝運行。
此源代碼已啟用偽靜態(tài)規則服務(wù)器必須支持偽靜態(tài)
服務(wù)器目前只支持php+apache
如果你是php+Nginx,請自行修改偽靜態(tài)規則
或者改變服務(wù)器運行環(huán)境。否則,它不可用。
本源代碼中沒(méi)有APP軟件。標題寫(xiě)的APP支持其他小說(shuō)APP平臺的轉碼閱讀。
小說(shuō)站的人都知道,運營(yíng)一個(gè)APP的成本太高了。制作一個(gè)APP的最低成本是10000元。但將你的網(wǎng)站鏈接到其他成熟的小說(shuō)站是最方便、最便宜的方式。本源碼支持其他APP軟件轉碼。
附帶演示 采集 規則。但是有些已經(jīng)過(guò)時(shí)了
采集請自己寫(xiě)規則。我們的軟件不提供采集規則
-------------------------------------------------- -----------------------------------------
本源代碼演示 網(wǎng)站 pc
配合CNZZ的統計插件,可以輕松實(shí)現下載的詳細統計和采集的詳細統計。(7)這個(gè)程序的自動(dòng)采集不是市面上常見(jiàn)的,如冠冠、采集夏等,而是在原采集的基礎上二次開(kāi)發(fā)DEDE的@>功能 采集的采集模塊可以有效保證章節內容的完整性,避免章節重復、章節內容無(wú)內容、章節亂碼等;采集可以達到24小時(shí)25萬(wàn)到30萬(wàn)章。(8)安裝比較簡(jiǎn)單,如果安裝后打開(kāi)的網(wǎng)址一直是手機版,
支持微信公眾號綁定:
網(wǎng)頁(yè)版截圖:




自動(dòng)采集編寫(xiě)( 6個(gè)K8s日志系統建設中的典型問(wèn)題,你遇到過(guò)幾個(gè)?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 170 次瀏覽 ? 2022-04-04 03:04
6個(gè)K8s日志系統建設中的典型問(wèn)題,你遇到過(guò)幾個(gè)?)
作者 | 元一阿里云存儲服務(wù)技術(shù)專(zhuān)家
簡(jiǎn)介:上一篇文章主要介紹了Kubernetes日志輸出的一些注意事項。日志輸出的最終目的是做統一的采集和分析。在Kubernetes中,記錄采集的方式與普通虛擬機有很大不同,相對實(shí)現難度和部署成本也略高,但如果使用得當,自動(dòng)化程度比傳統方式高,運維成本更低。本文是日志系列文章的第四篇。
第一篇:《K8s日志系統建設中的6個(gè)典型問(wèn)題,你遇到過(guò)幾個(gè)?》
第二篇:《一篇文章理解K8s日志系統的設計與實(shí)踐》
第三篇:《解決K8s中日志輸出問(wèn)題的9個(gè)技巧》
Kubernetes 日志采集 難點(diǎn)
在 Kubernetes 中,log采集 比傳統的虛擬機和物理機要復雜得多。最根本的原因是Kubernetes屏蔽了底層異常,提供了更細粒度的資源調度,向上提供了一個(gè)穩定動(dòng)態(tài)的環(huán)境。因此,日志采集面臨著(zhù)更豐富、更動(dòng)態(tài)的環(huán)境,需要考慮的點(diǎn)也更多。
例如:
Kubernetes 傳統方式
日志類(lèi)型
文件、標準輸出、主機文件、日志
檔案、日記
日志源
業(yè)務(wù)容器、系統組件、主機
商務(wù),主持人
采集如何
Agent (Sidecar, DaemonSet), Direct Write (DockerEngine, Business)
代理,直寫(xiě)
獨立應用程序的數量
10-100
1-10
應用動(dòng)態(tài)
高的
低的
節點(diǎn)動(dòng)態(tài)
高的
低的
采集部署方式
手動(dòng),Yaml
手動(dòng), 定制
采集模式:主動(dòng)或被動(dòng)
日志采集方法有兩種:被動(dòng)采集和主動(dòng)推送。在K8s中,被動(dòng)采集一般分為Sidecar和DaemonSet兩種方式。主動(dòng)推送包括 DockerEngine 推送和業(yè)務(wù)直推。寫(xiě)兩種方式。
總結一下:
各種采集方法的詳細對比如下:
DockerEngine 業(yè)務(wù)直寫(xiě) DaemonSet 方法 Sidecar 方法
采集日志類(lèi)型
標準輸出
業(yè)務(wù)日志
標準輸出 + 部分文件
文檔
部署和維護
低原生支持
低,只維護配置文件
一般需要維護DaemonSet
更高,每個(gè)需要采集日志的POD都需要部署一個(gè)sidecar容器
日志分類(lèi)存儲
達不到
業(yè)務(wù)獨立配置
一般可以通過(guò)容器/路徑等方式進(jìn)行映射。
每個(gè) POD 都可以單獨配置以實(shí)現高靈活性
多租戶(hù)隔離
虛弱的
弱,日志直寫(xiě)會(huì )和業(yè)務(wù)邏輯競爭資源
一般只通過(guò)配置之間的隔離
強,通過(guò)容器隔離,資源可單獨分配
支持集群大小
無(wú)限本地存儲,如果使用syslog和fluentd,會(huì )有單點(diǎn)限制
無(wú)限
取決于配置的數量
無(wú)限
資源占用
低,碼頭工人
引擎提供
總體最低,節省 采集 開(kāi)銷(xiāo)
較低,每個(gè)節點(diǎn)運行一個(gè)容器
更高,每個(gè) POD 運行一個(gè)容器
查詢(xún)方便
低,只能grep原創(chuàng )日志
高,可根據業(yè)務(wù)特點(diǎn)定制
高,可進(jìn)行自定義查詢(xún)和統計
高,可根據業(yè)務(wù)特點(diǎn)定制
可定制性
低的
高,可自由擴展
低的
高,每個(gè) POD 單獨配置
耦合
高,強綁定DockerEngine,修改需要重啟DockerEngine
高,采集模塊修改/升級需要重新發(fā)布業(yè)務(wù)
低,代理可以獨立升級
一般Sidecar服務(wù)對應的默認采集Agent升級也會(huì )重啟(有一些擴展包可以支持Sidecar熱升級)
適用場(chǎng)景
測試、POC等非生產(chǎn)場(chǎng)景
對性能要求極高的場(chǎng)景
日志分類(lèi)清晰、功能單一的集群
大型混合 PAAS 集群
日志輸出:標準輸出或文件
與虛擬機/物理機不同,K8s 容器提供標準輸出和文件。在容器中,標準輸出直接將日志輸出到stdout或stderr,而DockerEngine接管stdout和stderr文件描述符,收到日志后根據DockerEngine配置的LogDriver規則進(jìn)行處理;日志打印到文件的方式與虛擬機/物理機基本相似,只是日志可以使用不同的存儲方式,比如默認存儲、EmptyDir、HostVolume、NFS等。
雖然 Docker 官方推薦使用 Stdout 打印日志,但大家需要注意:這個(gè)推薦是基于容器僅作為簡(jiǎn)單應用使用的場(chǎng)景。在實(shí)際業(yè)務(wù)場(chǎng)景中,我們還是建議大家盡量使用文件方式。主要原因有以下幾點(diǎn):
因此,我們建議在線(xiàn)應用使用文件輸出日志,而Stdout僅用于功能單一或部分K8s系統/運維組件的應用。
CICD 集成:日志記錄操作員
Kubernetes提供了標準化的業(yè)務(wù)部署方式,可以通過(guò)yaml(K8s API)聲明路由規則、暴露服務(wù)、掛載存儲、運行業(yè)務(wù)、定義伸縮規則等,因此Kubernetes很容易與CICD系統集成。日志采集也是運維監控過(guò)程的重要組成部分。必須實(shí)時(shí)采集業(yè)務(wù)上線(xiàn)后的所有日志。
原來(lái)的方法是在發(fā)布后手動(dòng)部署log采集的邏輯。這種方式需要人工干預,違背了CICD自動(dòng)化的目的;為了實(shí)現自動(dòng)化,有人開(kāi)始根據日志打包API/SDK采集發(fā)布后通過(guò)CICD的webhook調用自動(dòng)部署的服務(wù),但這種方式開(kāi)發(fā)成本高。
在 Kubernetes 中,集成日志最標準的方式是在 Kubernetes 系統中注冊一個(gè)新資源,并以 Operator(CRD)的形式對其進(jìn)行管理和維護。這樣CICD系統就不需要額外開(kāi)發(fā),部署到Kubernetes系統時(shí)只需要附加日志相關(guān)的配置即可。
Kubernetes 日志采集 方案
早在 Kubernetes 出現之前,我們就開(kāi)始為容器環(huán)境開(kāi)發(fā) log采集 解決方案。隨著(zhù)K8s的逐漸穩定,我們開(kāi)始將很多業(yè)務(wù)遷移到K8s平臺上,所以我們也在之前的基礎上開(kāi)發(fā)了一套。K8s 上的 log采集 方案。主要功能有:
安裝日志采集組件
目前,這個(gè)采集解決方案已經(jīng)對外開(kāi)放。我們提供 Helm 安裝包,收錄 Logtail 的 DaemonSet、AliyunlogConfig 的 CRD 聲明和 CRD Controller。安裝后,可以直接使用 DaemonSet 采集 和 CRD 配置。安裝方法如下:
當阿里云Kubernetes集群?jiǎn)?dòng)時(shí),您可以選擇安裝它,這樣在創(chuàng )建集群時(shí)會(huì )自動(dòng)安裝上述組件。如果打開(kāi)的時(shí)候沒(méi)有安裝,可以手動(dòng)安裝;如果是自建Kubernetes,無(wú)論是在阿里云上自建還是在其他云還是離線(xiàn),也可以使用這個(gè)采集方案,具體安裝方法參考自建Kubernetes安裝。
上述組件安裝完成后,Logtail和對應的Controller就會(huì )在集群中運行,但是這些組件默認沒(méi)有采集任何日志,需要將日志采集規則配置為采集@ > 指定各種日志的Pod。
采集規則配置:環(huán)境變量或CRD
除了在日志服務(wù)控制臺上手動(dòng)配置外,Kubernetes 還支持另外兩種配置方式:環(huán)境變量和 CRD。
該方法部署簡(jiǎn)單,學(xué)習成本低,易于使用;但是可以支持的配置規則很少,很多高級配置(如解析方式、過(guò)濾方式、黑白名單等)都不支持,而且這種聲明方式也不支持修改/刪除,每個(gè)修改實(shí)際上創(chuàng )建了一個(gè)新的 采集 配置。歷史采集配置需要手動(dòng)清理,否則會(huì )造成資源浪費。
比如下面的例子是部署一個(gè)容器的stdout采集,其中定義需要stdout和stderr采集,排除環(huán)境變量中收錄COLLEXT_STDOUT_FLAG: false的容器。
基于CRD的配置方式以Kubernetes標準擴展資源的方式進(jìn)行管理,支持配置的完整語(yǔ)義的增刪改查,支持各種高級配置。這是我們強烈推薦的 采集 配置方法。
采集推薦的規則配置方式
在實(shí)際應用場(chǎng)景中,一般使用 DaemonSet 或者 DaemonSet 和 Sidecar 的混合。DaemonSet 的優(yōu)點(diǎn)是資源利用率高,但存在一個(gè)問(wèn)題,DaemonSet 的所有 Logtail 共享全局配置,而單個(gè) Logtail 的配置支持有上限。因此,它無(wú)法支持具有大量應用程序的集群。
以上是我們給出的推薦配置方式。核心思想是:
練習 1 - 中小型集群
大多數 Kubernetes 集群都是中小型的。中小企業(yè)沒(méi)有明確的定義。一般應用數量小于500,節點(diǎn)規模小于1000。沒(méi)有功能清晰的Kubernetes平臺運維。這個(gè)場(chǎng)景的應用數量不是特別多,DaemonSet可以支持所有的采集配置:
練習 2 - 大型集群
對于一些用作PaaS平臺的大型/超大型集群,一般業(yè)務(wù)在1000以上,節點(diǎn)規模也在1000以上,并且有專(zhuān)門(mén)的Kubernetes平臺運維人員。該場(chǎng)景對應用數量沒(méi)有限制,DaemonSet無(wú)法支持,所以必須使用Sidecar方式??傮w規劃如下:
有一個(gè)阿里團隊需要你!
云原生應用平臺誠邀Kubernetes/容器/Serverless/應用交付技術(shù)領(lǐng)域的專(zhuān)家(P7-P8)加入。
簡(jiǎn)歷投遞:xining.zj AT。
“阿里巴巴云原生專(zhuān)注于微服務(wù)、Serverless、容器、Service Mesh等技術(shù)領(lǐng)域,關(guān)注流行的云原生技術(shù)趨勢,大規模落地云原生實(shí)踐,是懂云的技術(shù)圈——本地開(kāi)發(fā)人員最好?!? 查看全部
自動(dòng)采集編寫(xiě)(
6個(gè)K8s日志系統建設中的典型問(wèn)題,你遇到過(guò)幾個(gè)?)

作者 | 元一阿里云存儲服務(wù)技術(shù)專(zhuān)家
簡(jiǎn)介:上一篇文章主要介紹了Kubernetes日志輸出的一些注意事項。日志輸出的最終目的是做統一的采集和分析。在Kubernetes中,記錄采集的方式與普通虛擬機有很大不同,相對實(shí)現難度和部署成本也略高,但如果使用得當,自動(dòng)化程度比傳統方式高,運維成本更低。本文是日志系列文章的第四篇。
第一篇:《K8s日志系統建設中的6個(gè)典型問(wèn)題,你遇到過(guò)幾個(gè)?》
第二篇:《一篇文章理解K8s日志系統的設計與實(shí)踐》
第三篇:《解決K8s中日志輸出問(wèn)題的9個(gè)技巧》
Kubernetes 日志采集 難點(diǎn)
在 Kubernetes 中,log采集 比傳統的虛擬機和物理機要復雜得多。最根本的原因是Kubernetes屏蔽了底層異常,提供了更細粒度的資源調度,向上提供了一個(gè)穩定動(dòng)態(tài)的環(huán)境。因此,日志采集面臨著(zhù)更豐富、更動(dòng)態(tài)的環(huán)境,需要考慮的點(diǎn)也更多。
例如:
Kubernetes 傳統方式
日志類(lèi)型
文件、標準輸出、主機文件、日志
檔案、日記
日志源
業(yè)務(wù)容器、系統組件、主機
商務(wù),主持人
采集如何
Agent (Sidecar, DaemonSet), Direct Write (DockerEngine, Business)
代理,直寫(xiě)
獨立應用程序的數量
10-100
1-10
應用動(dòng)態(tài)
高的
低的
節點(diǎn)動(dòng)態(tài)
高的
低的
采集部署方式
手動(dòng),Yaml
手動(dòng), 定制
采集模式:主動(dòng)或被動(dòng)
日志采集方法有兩種:被動(dòng)采集和主動(dòng)推送。在K8s中,被動(dòng)采集一般分為Sidecar和DaemonSet兩種方式。主動(dòng)推送包括 DockerEngine 推送和業(yè)務(wù)直推。寫(xiě)兩種方式。

總結一下:
各種采集方法的詳細對比如下:
DockerEngine 業(yè)務(wù)直寫(xiě) DaemonSet 方法 Sidecar 方法
采集日志類(lèi)型
標準輸出
業(yè)務(wù)日志
標準輸出 + 部分文件
文檔
部署和維護
低原生支持
低,只維護配置文件
一般需要維護DaemonSet
更高,每個(gè)需要采集日志的POD都需要部署一個(gè)sidecar容器
日志分類(lèi)存儲
達不到
業(yè)務(wù)獨立配置
一般可以通過(guò)容器/路徑等方式進(jìn)行映射。
每個(gè) POD 都可以單獨配置以實(shí)現高靈活性
多租戶(hù)隔離
虛弱的
弱,日志直寫(xiě)會(huì )和業(yè)務(wù)邏輯競爭資源
一般只通過(guò)配置之間的隔離
強,通過(guò)容器隔離,資源可單獨分配
支持集群大小
無(wú)限本地存儲,如果使用syslog和fluentd,會(huì )有單點(diǎn)限制
無(wú)限
取決于配置的數量
無(wú)限
資源占用
低,碼頭工人
引擎提供
總體最低,節省 采集 開(kāi)銷(xiāo)
較低,每個(gè)節點(diǎn)運行一個(gè)容器
更高,每個(gè) POD 運行一個(gè)容器
查詢(xún)方便
低,只能grep原創(chuàng )日志
高,可根據業(yè)務(wù)特點(diǎn)定制
高,可進(jìn)行自定義查詢(xún)和統計
高,可根據業(yè)務(wù)特點(diǎn)定制
可定制性
低的
高,可自由擴展
低的
高,每個(gè) POD 單獨配置
耦合
高,強綁定DockerEngine,修改需要重啟DockerEngine
高,采集模塊修改/升級需要重新發(fā)布業(yè)務(wù)
低,代理可以獨立升級
一般Sidecar服務(wù)對應的默認采集Agent升級也會(huì )重啟(有一些擴展包可以支持Sidecar熱升級)
適用場(chǎng)景
測試、POC等非生產(chǎn)場(chǎng)景
對性能要求極高的場(chǎng)景
日志分類(lèi)清晰、功能單一的集群
大型混合 PAAS 集群
日志輸出:標準輸出或文件
與虛擬機/物理機不同,K8s 容器提供標準輸出和文件。在容器中,標準輸出直接將日志輸出到stdout或stderr,而DockerEngine接管stdout和stderr文件描述符,收到日志后根據DockerEngine配置的LogDriver規則進(jìn)行處理;日志打印到文件的方式與虛擬機/物理機基本相似,只是日志可以使用不同的存儲方式,比如默認存儲、EmptyDir、HostVolume、NFS等。
雖然 Docker 官方推薦使用 Stdout 打印日志,但大家需要注意:這個(gè)推薦是基于容器僅作為簡(jiǎn)單應用使用的場(chǎng)景。在實(shí)際業(yè)務(wù)場(chǎng)景中,我們還是建議大家盡量使用文件方式。主要原因有以下幾點(diǎn):
因此,我們建議在線(xiàn)應用使用文件輸出日志,而Stdout僅用于功能單一或部分K8s系統/運維組件的應用。
CICD 集成:日志記錄操作員

Kubernetes提供了標準化的業(yè)務(wù)部署方式,可以通過(guò)yaml(K8s API)聲明路由規則、暴露服務(wù)、掛載存儲、運行業(yè)務(wù)、定義伸縮規則等,因此Kubernetes很容易與CICD系統集成。日志采集也是運維監控過(guò)程的重要組成部分。必須實(shí)時(shí)采集業(yè)務(wù)上線(xiàn)后的所有日志。
原來(lái)的方法是在發(fā)布后手動(dòng)部署log采集的邏輯。這種方式需要人工干預,違背了CICD自動(dòng)化的目的;為了實(shí)現自動(dòng)化,有人開(kāi)始根據日志打包API/SDK采集發(fā)布后通過(guò)CICD的webhook調用自動(dòng)部署的服務(wù),但這種方式開(kāi)發(fā)成本高。
在 Kubernetes 中,集成日志最標準的方式是在 Kubernetes 系統中注冊一個(gè)新資源,并以 Operator(CRD)的形式對其進(jìn)行管理和維護。這樣CICD系統就不需要額外開(kāi)發(fā),部署到Kubernetes系統時(shí)只需要附加日志相關(guān)的配置即可。
Kubernetes 日志采集 方案

早在 Kubernetes 出現之前,我們就開(kāi)始為容器環(huán)境開(kāi)發(fā) log采集 解決方案。隨著(zhù)K8s的逐漸穩定,我們開(kāi)始將很多業(yè)務(wù)遷移到K8s平臺上,所以我們也在之前的基礎上開(kāi)發(fā)了一套。K8s 上的 log采集 方案。主要功能有:
安裝日志采集組件
目前,這個(gè)采集解決方案已經(jīng)對外開(kāi)放。我們提供 Helm 安裝包,收錄 Logtail 的 DaemonSet、AliyunlogConfig 的 CRD 聲明和 CRD Controller。安裝后,可以直接使用 DaemonSet 采集 和 CRD 配置。安裝方法如下:
當阿里云Kubernetes集群?jiǎn)?dòng)時(shí),您可以選擇安裝它,這樣在創(chuàng )建集群時(shí)會(huì )自動(dòng)安裝上述組件。如果打開(kāi)的時(shí)候沒(méi)有安裝,可以手動(dòng)安裝;如果是自建Kubernetes,無(wú)論是在阿里云上自建還是在其他云還是離線(xiàn),也可以使用這個(gè)采集方案,具體安裝方法參考自建Kubernetes安裝。
上述組件安裝完成后,Logtail和對應的Controller就會(huì )在集群中運行,但是這些組件默認沒(méi)有采集任何日志,需要將日志采集規則配置為采集@ > 指定各種日志的Pod。
采集規則配置:環(huán)境變量或CRD
除了在日志服務(wù)控制臺上手動(dòng)配置外,Kubernetes 還支持另外兩種配置方式:環(huán)境變量和 CRD。
該方法部署簡(jiǎn)單,學(xué)習成本低,易于使用;但是可以支持的配置規則很少,很多高級配置(如解析方式、過(guò)濾方式、黑白名單等)都不支持,而且這種聲明方式也不支持修改/刪除,每個(gè)修改實(shí)際上創(chuàng )建了一個(gè)新的 采集 配置。歷史采集配置需要手動(dòng)清理,否則會(huì )造成資源浪費。

比如下面的例子是部署一個(gè)容器的stdout采集,其中定義需要stdout和stderr采集,排除環(huán)境變量中收錄COLLEXT_STDOUT_FLAG: false的容器。
基于CRD的配置方式以Kubernetes標準擴展資源的方式進(jìn)行管理,支持配置的完整語(yǔ)義的增刪改查,支持各種高級配置。這是我們強烈推薦的 采集 配置方法。

采集推薦的規則配置方式

在實(shí)際應用場(chǎng)景中,一般使用 DaemonSet 或者 DaemonSet 和 Sidecar 的混合。DaemonSet 的優(yōu)點(diǎn)是資源利用率高,但存在一個(gè)問(wèn)題,DaemonSet 的所有 Logtail 共享全局配置,而單個(gè) Logtail 的配置支持有上限。因此,它無(wú)法支持具有大量應用程序的集群。
以上是我們給出的推薦配置方式。核心思想是:
練習 1 - 中小型集群

大多數 Kubernetes 集群都是中小型的。中小企業(yè)沒(méi)有明確的定義。一般應用數量小于500,節點(diǎn)規模小于1000。沒(méi)有功能清晰的Kubernetes平臺運維。這個(gè)場(chǎng)景的應用數量不是特別多,DaemonSet可以支持所有的采集配置:
練習 2 - 大型集群

對于一些用作PaaS平臺的大型/超大型集群,一般業(yè)務(wù)在1000以上,節點(diǎn)規模也在1000以上,并且有專(zhuān)門(mén)的Kubernetes平臺運維人員。該場(chǎng)景對應用數量沒(méi)有限制,DaemonSet無(wú)法支持,所以必須使用Sidecar方式??傮w規劃如下:
有一個(gè)阿里團隊需要你!
云原生應用平臺誠邀Kubernetes/容器/Serverless/應用交付技術(shù)領(lǐng)域的專(zhuān)家(P7-P8)加入。
簡(jiǎn)歷投遞:xining.zj AT。

“阿里巴巴云原生專(zhuān)注于微服務(wù)、Serverless、容器、Service Mesh等技術(shù)領(lǐng)域,關(guān)注流行的云原生技術(shù)趨勢,大規模落地云原生實(shí)踐,是懂云的技術(shù)圈——本地開(kāi)發(fā)人員最好?!?
自動(dòng)采集編寫(xiě)(提下一個(gè)牛逼的技巧:獨創(chuàng )屬性欄文字翻譯機制)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 156 次瀏覽 ? 2022-04-04 03:04
一、前言
前面說(shuō)過(guò),Qt的屬性機制太強大了,這次的動(dòng)態(tài)屬性功能就是要讓它爆炸。很難想象widget->setProperty("value", value) 只需要一行代碼就可以完成;沒(méi)錯,就是這么簡(jiǎn)單,調用弱屬性機制,可以直接控制控件中的所有屬性,設計這個(gè)機制的人絕對是天才,直接跪了。至于具體的底層是如何實(shí)現的,這個(gè)可以忽略,也沒(méi)有太多精力去研究Qt的源碼。源代碼非常大。研究源碼最快的方法是直接搜索和定位對應的文件。除了提供文本框輸入值來(lái)動(dòng)態(tài)改變控件屬性,這個(gè)設計器還提供了滑塊,
這里不得不提下一個(gè)牛逼的技巧:QLabel有三種設置文字的方式,掌握Qt的屬性系統,從一個(gè)案例推斷別人,可以做出很多效果。
ui->label->setStyleSheet("qproperty-text:hello;");
ui->label->setProperty("text", "hello");
ui->label->setText("hello");
體驗地址:???????
????????
二、實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認內置控件超過(guò)120個(gè)。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得你得到。在右側的中文屬性欄中,更改對應的屬性立即應用到對應的選中控件,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性欄文本翻譯映射機制非常高效,可以很方便的擴展其他語(yǔ)言的屬性欄。自動(dòng)提取所有控件的屬性并顯示在右側屬性欄上,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件。當前畫(huà)布的所有控制配置信息都可以導出為一個(gè)xml文件??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件。通過(guò)拉動(dòng)滑塊、選中模擬數據復選框并輸入文本框,可以通過(guò)三種方式生成數據并應用所有控件。該控件支持八個(gè)方向的拉動(dòng)和調整大小,適應任意分辨率,并可微調鍵盤(pán)的上下左右位置。開(kāi)放了串口采集、網(wǎng)絡(luò )采集、數據庫采集三種方式設置數據。代碼非常簡(jiǎn)潔,注釋也很詳細??梢宰鳛榕渲玫脑?,自行擴展更多功能。用純 Qt 編寫(xiě),它支持任何 Qt 版本 + 任何編譯器 + 任何系統。三、渲染
四、核心代碼
void frmMain::initForm()
{
//初始化中英屬性對照表
QtPropertyName::initMap();
//設置沒(méi)有關(guān)閉按鈕
ui->dockWidgetControl->setFixedWidth(200);
ui->dockWidgetData->setFixedWidth(200);
ui->dockWidgetProperty->setFixedWidth(220);
ui->dockWidgetControl->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetProperty->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetData->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
this->tabifyDockWidget(ui->dockWidgetControl, ui->dockWidgetData);
ui->dockWidgetControl->raise();
//綁定數據源窗體的數值改變信號
connect(ui->dockWidgetContentsData, SIGNAL(valueChanged(int)), this, SLOT(valueChanged(int)));
//允許拖曳接收
this->setAcceptDrops(true);
bgPix = QPixmap(":/image/bg.png");
//居中顯示窗體
int frmX = this->width();
int frmY = this->height();
QDesktopWidget w;
int deskWidth = w.availableGeometry().width();
int deskHeight = w.availableGeometry().height();
QPoint movePoint(deskWidth / 2 - frmX / 2, deskHeight / 2 - frmY / 2);
this->move(movePoint);
//初始化隨機數種子
QTime t = QTime::currentTime();
qsrand(t.msec() + t.second() * 1000);
//定時(shí)器模擬隨機值賦值給控件
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(setValue()));
timer->setInterval(2000);
}
void frmMain::setValue()
{
int value = qrand() % 100;
valueChanged(value);
}
void frmMain::valueChanged(int value)
{
QList widgets = ui->centralwidget->findChildren();
foreach (QWidget *widget, widgets) {
widget->setProperty("value", value);
}
}
五、控件介紹 150多個(gè)精美控件,涵蓋各種儀表板、進(jìn)度條、進(jìn)度球、指南針、圖形、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)都可以獨立成單獨的控件,零耦合,每個(gè)控件都有頭文件和實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,代碼量少。qwt 的控制類(lèi)是互鎖和高度耦合的。如果要使用其中一個(gè)控件,則必須收錄所有代碼。全部純Qt編寫(xiě),QWidget+QPainter繪圖,支持Qt4.6到Qt<任意Qt版本 @5.12,支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置的一樣使用在控件中。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。
<p>一些控件提供了多種樣式可供選擇,還有多種指示器樣式可供選擇。所有控件都適應表格拉伸變化。集成自定義控件屬性設計器,支持拖放設計,所見(jiàn)即所得,支持xml格式導入導出。自帶activex控件demo,所有控件都可以直接在ie瀏覽器中運行。整合fontawesome圖形字體+阿里巴巴iconfont采集的數百種圖形字體,享受圖形字體帶來(lái)的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll左右等),可以直接集成到qtcreator中進(jìn)行拖拽設計。已經(jīng)有qml版本,以后會(huì )考慮pyqt版本,如果用戶(hù)需求大的話(huà)。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前已經(jīng)提供了26個(gè)版本的dll,包括qt 查看全部
自動(dòng)采集編寫(xiě)(提下一個(gè)牛逼的技巧:獨創(chuàng )屬性欄文字翻譯機制)
一、前言
前面說(shuō)過(guò),Qt的屬性機制太強大了,這次的動(dòng)態(tài)屬性功能就是要讓它爆炸。很難想象widget->setProperty("value", value) 只需要一行代碼就可以完成;沒(méi)錯,就是這么簡(jiǎn)單,調用弱屬性機制,可以直接控制控件中的所有屬性,設計這個(gè)機制的人絕對是天才,直接跪了。至于具體的底層是如何實(shí)現的,這個(gè)可以忽略,也沒(méi)有太多精力去研究Qt的源碼。源代碼非常大。研究源碼最快的方法是直接搜索和定位對應的文件。除了提供文本框輸入值來(lái)動(dòng)態(tài)改變控件屬性,這個(gè)設計器還提供了滑塊,
這里不得不提下一個(gè)牛逼的技巧:QLabel有三種設置文字的方式,掌握Qt的屬性系統,從一個(gè)案例推斷別人,可以做出很多效果。
ui->label->setStyleSheet("qproperty-text:hello;");
ui->label->setProperty("text", "hello");
ui->label->setText("hello");
體驗地址:???????
????????
二、實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認內置控件超過(guò)120個(gè)。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得你得到。在右側的中文屬性欄中,更改對應的屬性立即應用到對應的選中控件,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性欄文本翻譯映射機制非常高效,可以很方便的擴展其他語(yǔ)言的屬性欄。自動(dòng)提取所有控件的屬性并顯示在右側屬性欄上,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件。當前畫(huà)布的所有控制配置信息都可以導出為一個(gè)xml文件??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件。通過(guò)拉動(dòng)滑塊、選中模擬數據復選框并輸入文本框,可以通過(guò)三種方式生成數據并應用所有控件。該控件支持八個(gè)方向的拉動(dòng)和調整大小,適應任意分辨率,并可微調鍵盤(pán)的上下左右位置。開(kāi)放了串口采集、網(wǎng)絡(luò )采集、數據庫采集三種方式設置數據。代碼非常簡(jiǎn)潔,注釋也很詳細??梢宰鳛榕渲玫脑?,自行擴展更多功能。用純 Qt 編寫(xiě),它支持任何 Qt 版本 + 任何編譯器 + 任何系統。三、渲染

四、核心代碼
void frmMain::initForm()
{
//初始化中英屬性對照表
QtPropertyName::initMap();
//設置沒(méi)有關(guān)閉按鈕
ui->dockWidgetControl->setFixedWidth(200);
ui->dockWidgetData->setFixedWidth(200);
ui->dockWidgetProperty->setFixedWidth(220);
ui->dockWidgetControl->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetProperty->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetData->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
this->tabifyDockWidget(ui->dockWidgetControl, ui->dockWidgetData);
ui->dockWidgetControl->raise();
//綁定數據源窗體的數值改變信號
connect(ui->dockWidgetContentsData, SIGNAL(valueChanged(int)), this, SLOT(valueChanged(int)));
//允許拖曳接收
this->setAcceptDrops(true);
bgPix = QPixmap(":/image/bg.png");
//居中顯示窗體
int frmX = this->width();
int frmY = this->height();
QDesktopWidget w;
int deskWidth = w.availableGeometry().width();
int deskHeight = w.availableGeometry().height();
QPoint movePoint(deskWidth / 2 - frmX / 2, deskHeight / 2 - frmY / 2);
this->move(movePoint);
//初始化隨機數種子
QTime t = QTime::currentTime();
qsrand(t.msec() + t.second() * 1000);
//定時(shí)器模擬隨機值賦值給控件
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(setValue()));
timer->setInterval(2000);
}
void frmMain::setValue()
{
int value = qrand() % 100;
valueChanged(value);
}
void frmMain::valueChanged(int value)
{
QList widgets = ui->centralwidget->findChildren();
foreach (QWidget *widget, widgets) {
widget->setProperty("value", value);
}
}
五、控件介紹 150多個(gè)精美控件,涵蓋各種儀表板、進(jìn)度條、進(jìn)度球、指南針、圖形、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)都可以獨立成單獨的控件,零耦合,每個(gè)控件都有頭文件和實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,代碼量少。qwt 的控制類(lèi)是互鎖和高度耦合的。如果要使用其中一個(gè)控件,則必須收錄所有代碼。全部純Qt編寫(xiě),QWidget+QPainter繪圖,支持Qt4.6到Qt<任意Qt版本 @5.12,支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置的一樣使用在控件中。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。
<p>一些控件提供了多種樣式可供選擇,還有多種指示器樣式可供選擇。所有控件都適應表格拉伸變化。集成自定義控件屬性設計器,支持拖放設計,所見(jiàn)即所得,支持xml格式導入導出。自帶activex控件demo,所有控件都可以直接在ie瀏覽器中運行。整合fontawesome圖形字體+阿里巴巴iconfont采集的數百種圖形字體,享受圖形字體帶來(lái)的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll左右等),可以直接集成到qtcreator中進(jìn)行拖拽設計。已經(jīng)有qml版本,以后會(huì )考慮pyqt版本,如果用戶(hù)需求大的話(huà)。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前已經(jīng)提供了26個(gè)版本的dll,包括qt
自動(dòng)采集編寫(xiě)(SQLE的Java應用零成本地接入了SQLE(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 163 次瀏覽 ? 2022-03-30 15:01
* 愛(ài)客盛開(kāi)源社區出品,原創(chuàng )內容未經(jīng)授權不得使用。如需轉載,請聯(lián)系編輯并注明出處。
一. SQLE 簡(jiǎn)介
SQLE是艾克森開(kāi)源社區發(fā)起的一個(gè)面向數據庫開(kāi)發(fā)和管理人員的項目。實(shí)現SQL“開(kāi)發(fā)”-“測試”-“上線(xiàn)”的全流程覆蓋,對資源和權限進(jìn)行精細化管理,兼顧簡(jiǎn)潔和高效。,一個(gè)易于維護和擴展的開(kāi)源項目,旨在為用戶(hù)提供一套安全、可靠、自控的SQL質(zhì)量控制解決方案。
在 1.2202.0 的 2 月版本中:
更多詳細信息可在以下位置找到: 。
二.Java 應用程序審計簡(jiǎn)介
考慮到很多用戶(hù)在實(shí)際生產(chǎn)中部署了大量基于Java的應用和服務(wù),有的涉及到極其重要且不間斷的核心業(yè)務(wù)。從 1.2202.0 版本開(kāi)始,SQLE 支持 Java 應用程序的 SQL 審計。并且在完成核心功能的基礎上,支持零成本接入Java應用。
SQLE的Java審計特性如下:
三.效果展示了預部署的環(huán)境,需要連接的Java應用,以及對應的數據庫,并添加為數據源。為了演示,這里的 Java 項目是;為 Java 應用程序創(chuàng )建審計任務(wù);
啟動(dòng)應用程序;
SQLE_COLLECT_ENABLE=true \SQLE_HOST=XX.XX.XX.XX:10000 \
SQLE_TASK_NAME=surveryking_test \
SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
java -jar surveyking-v0.3.0-beta.4.jar \
--server.port=1991 \
--spring.datasource.url=jdbc:mysql://XX.XX.XX.XX:3306/surveyking \
--spring.datasource.username=root \
--spring.datasource.password=xxxxxx \
& >>/opt/surveyking/std.log
查看SQLE審計任務(wù)詳情界面,可以看到當前應用已經(jīng)執行的SQL;
查看審計報告,用戶(hù)可以通過(guò)審計任務(wù)的審計報告了解應用的SQL是否符合預設的審計規則,從而及時(shí)做出調整。
在樣例Java應用首頁(yè)創(chuàng )建用戶(hù),然后可以觀(guān)察到審計任務(wù)對應的SQLE語(yǔ)句池中對應的INSERT語(yǔ)句。
同時(shí),用戶(hù)可以從語(yǔ)句池中的頁(yè)面快速感知應用程序中執行的SQL的語(yǔ)句分類(lèi)和統計。
結合上述示例步驟,Java 應用程序可以零成本訪(fǎng)問(wèn) SQLE。開(kāi)發(fā)者和DBA可以通過(guò)“審計報告”、“審計任務(wù)SQL語(yǔ)句池”等功能全面掌握應用中的SQL審計結果、執行狀態(tài)和統計信息,完成從“開(kāi)發(fā)”到“上線(xiàn)”的過(guò)程。SQL 質(zhì)量控制。
如果您想了解更多關(guān)于SQLE的更多功能和特性,請訪(fǎng)問(wèn)以下地址:
TypeAddressRepository 文檔發(fā)布信息 查看全部
自動(dòng)采集編寫(xiě)(SQLE的Java應用零成本地接入了SQLE(組圖))
* 愛(ài)客盛開(kāi)源社區出品,原創(chuàng )內容未經(jīng)授權不得使用。如需轉載,請聯(lián)系編輯并注明出處。
一. SQLE 簡(jiǎn)介
SQLE是艾克森開(kāi)源社區發(fā)起的一個(gè)面向數據庫開(kāi)發(fā)和管理人員的項目。實(shí)現SQL“開(kāi)發(fā)”-“測試”-“上線(xiàn)”的全流程覆蓋,對資源和權限進(jìn)行精細化管理,兼顧簡(jiǎn)潔和高效。,一個(gè)易于維護和擴展的開(kāi)源項目,旨在為用戶(hù)提供一套安全、可靠、自控的SQL質(zhì)量控制解決方案。
在 1.2202.0 的 2 月版本中:
更多詳細信息可在以下位置找到: 。
二.Java 應用程序審計簡(jiǎn)介
考慮到很多用戶(hù)在實(shí)際生產(chǎn)中部署了大量基于Java的應用和服務(wù),有的涉及到極其重要且不間斷的核心業(yè)務(wù)。從 1.2202.0 版本開(kāi)始,SQLE 支持 Java 應用程序的 SQL 審計。并且在完成核心功能的基礎上,支持零成本接入Java應用。
SQLE的Java審計特性如下:
三.效果展示了預部署的環(huán)境,需要連接的Java應用,以及對應的數據庫,并添加為數據源。為了演示,這里的 Java 項目是;為 Java 應用程序創(chuàng )建審計任務(wù);
啟動(dòng)應用程序;
SQLE_COLLECT_ENABLE=true \SQLE_HOST=XX.XX.XX.XX:10000 \
SQLE_TASK_NAME=surveryking_test \
SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
java -jar surveyking-v0.3.0-beta.4.jar \
--server.port=1991 \
--spring.datasource.url=jdbc:mysql://XX.XX.XX.XX:3306/surveyking \
--spring.datasource.username=root \
--spring.datasource.password=xxxxxx \
& >>/opt/surveyking/std.log
查看SQLE審計任務(wù)詳情界面,可以看到當前應用已經(jīng)執行的SQL;
查看審計報告,用戶(hù)可以通過(guò)審計任務(wù)的審計報告了解應用的SQL是否符合預設的審計規則,從而及時(shí)做出調整。
在樣例Java應用首頁(yè)創(chuàng )建用戶(hù),然后可以觀(guān)察到審計任務(wù)對應的SQLE語(yǔ)句池中對應的INSERT語(yǔ)句。
同時(shí),用戶(hù)可以從語(yǔ)句池中的頁(yè)面快速感知應用程序中執行的SQL的語(yǔ)句分類(lèi)和統計。
結合上述示例步驟,Java 應用程序可以零成本訪(fǎng)問(wèn) SQLE。開(kāi)發(fā)者和DBA可以通過(guò)“審計報告”、“審計任務(wù)SQL語(yǔ)句池”等功能全面掌握應用中的SQL審計結果、執行狀態(tài)和統計信息,完成從“開(kāi)發(fā)”到“上線(xiàn)”的過(guò)程。SQL 質(zhì)量控制。
如果您想了解更多關(guān)于SQLE的更多功能和特性,請訪(fǎng)問(wèn)以下地址:
TypeAddressRepository 文檔發(fā)布信息
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)autohotkey腳本的語(yǔ)法特性是什么?分兩步走)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2022-03-27 20:01
自動(dòng)采集編寫(xiě)autohotkey腳本的問(wèn)題,我覺(jué)得只要程序開(kāi)發(fā)者把autohotkey語(yǔ)言特性搞清楚了,那自動(dòng)機基本就入門(mén)了。分兩步走。一步是分析autohotkey腳本的語(yǔ)法特性,著(zhù)重研究如何簡(jiǎn)化過(guò)程。autohotkey內置了大量的編程技巧,閱讀autohotkey腳本可以幫助我們快速獲得大量工具方法,完成編程技巧。
這個(gè)其實(shí)很簡(jiǎn)單,看visualstudio的幫助文檔就可以了。另一步是訓練自己的編程思路,這部分需要大量的實(shí)踐才能在編程當中有所體會(huì )。這個(gè)就難了,剛開(kāi)始自己寫(xiě)一個(gè)自動(dòng)機的時(shí)候感覺(jué)很差,很多時(shí)候是寫(xiě)著(zhù)寫(xiě)著(zhù)就不想寫(xiě)了,做著(zhù)做著(zhù)又不想繼續寫(xiě)了。我也是受挫的最高記錄大概是寫(xiě)了兩天半的autohotkey腳本,在這些autohotkey腳本之中有很多單純靠體力的寫(xiě)法,有的是依靠編程語(yǔ)言特性搭建的輪子,還有的是自己造的輪子。
各種高級工具方法不說(shuō)了,非常多,有很多工具方法是其它編程語(yǔ)言調用系統提供的庫或者是其它autohotkey編譯器不能提供的。比如很多工具方法都能夠整合在hadoop里。一旦養成了思考編程邏輯的習慣,編程思路立刻就打開(kāi)了。其實(shí)新手一般面臨問(wèn)題都是沒(méi)有思路的,平時(shí)大家都這么自己養成習慣。另外一個(gè)非常重要的問(wèn)題就是看項目類(lèi)型。
不同的項目類(lèi)型訓練的深度是不一樣的。比如剛開(kāi)始訓練控制機器人的時(shí)候,訓練一個(gè)新的編程語(yǔ)言或許比讀一些經(jīng)典的控制語(yǔ)言教程更加有幫助。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)autohotkey腳本的語(yǔ)法特性是什么?分兩步走)
自動(dòng)采集編寫(xiě)autohotkey腳本的問(wèn)題,我覺(jué)得只要程序開(kāi)發(fā)者把autohotkey語(yǔ)言特性搞清楚了,那自動(dòng)機基本就入門(mén)了。分兩步走。一步是分析autohotkey腳本的語(yǔ)法特性,著(zhù)重研究如何簡(jiǎn)化過(guò)程。autohotkey內置了大量的編程技巧,閱讀autohotkey腳本可以幫助我們快速獲得大量工具方法,完成編程技巧。
這個(gè)其實(shí)很簡(jiǎn)單,看visualstudio的幫助文檔就可以了。另一步是訓練自己的編程思路,這部分需要大量的實(shí)踐才能在編程當中有所體會(huì )。這個(gè)就難了,剛開(kāi)始自己寫(xiě)一個(gè)自動(dòng)機的時(shí)候感覺(jué)很差,很多時(shí)候是寫(xiě)著(zhù)寫(xiě)著(zhù)就不想寫(xiě)了,做著(zhù)做著(zhù)又不想繼續寫(xiě)了。我也是受挫的最高記錄大概是寫(xiě)了兩天半的autohotkey腳本,在這些autohotkey腳本之中有很多單純靠體力的寫(xiě)法,有的是依靠編程語(yǔ)言特性搭建的輪子,還有的是自己造的輪子。
各種高級工具方法不說(shuō)了,非常多,有很多工具方法是其它編程語(yǔ)言調用系統提供的庫或者是其它autohotkey編譯器不能提供的。比如很多工具方法都能夠整合在hadoop里。一旦養成了思考編程邏輯的習慣,編程思路立刻就打開(kāi)了。其實(shí)新手一般面臨問(wèn)題都是沒(méi)有思路的,平時(shí)大家都這么自己養成習慣。另外一個(gè)非常重要的問(wèn)題就是看項目類(lèi)型。
不同的項目類(lèi)型訓練的深度是不一樣的。比如剛開(kāi)始訓練控制機器人的時(shí)候,訓練一個(gè)新的編程語(yǔ)言或許比讀一些經(jīng)典的控制語(yǔ)言教程更加有幫助。
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 140 次瀏覽 ? 2022-03-27 08:03
自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè),直接通過(guò)爬蟲(chóng)抓取論壇連載小說(shuō)就可以了。首先登錄kindle然后設置。登錄kindle后,選擇連載列表上方紅色框標注的按鈕,點(diǎn)擊后頁(yè)面會(huì )打開(kāi),點(diǎn)擊“查看文檔”,在跳轉的網(wǎng)站就可以進(jìn)行采集了。首先找到論壇版塊然后進(jìn)入,采集評論現在該文章不僅僅有評論,還有精選的小說(shuō)模板,也是非常的全的。
一般登錄后都會(huì )推薦論壇模板,你可以采集出來(lái),到時(shí)候進(jìn)行爬取。pptv和愛(ài)奇藝是主要的評論來(lái)源。你可以登錄應用商店,搜索“百度文庫”等等評論資源。希望能幫到你。
--首先你需要按我步驟設置,根據步驟,第一步你需要先登錄網(wǎng)站kindle商店連接:。第二步進(jìn)入到它的論壇文庫頁(yè)面。第三步,進(jìn)入kindle的論壇,打開(kāi)小說(shuō)類(lèi)目,然后打開(kāi)文檔。第四步,直接找到你想要下載的小說(shuō),點(diǎn)擊,找到那個(gè)下載框,如下圖所示:在下載框的上方有標注的一欄,點(diǎn)擊那個(gè)下載,直接按照步驟走,在下載的界面會(huì )彈出來(lái)一個(gè)頁(yè)面,點(diǎn)擊下載即可,不用管那個(gè)下載是不是有點(diǎn)中的問(wèn)題。第五步,下載成功,最后,點(diǎn)擊左上角,退出該頁(yè)面,就在我的電腦里看見(jiàn)了你下載的小說(shuō)了。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè))
自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè),直接通過(guò)爬蟲(chóng)抓取論壇連載小說(shuō)就可以了。首先登錄kindle然后設置。登錄kindle后,選擇連載列表上方紅色框標注的按鈕,點(diǎn)擊后頁(yè)面會(huì )打開(kāi),點(diǎn)擊“查看文檔”,在跳轉的網(wǎng)站就可以進(jìn)行采集了。首先找到論壇版塊然后進(jìn)入,采集評論現在該文章不僅僅有評論,還有精選的小說(shuō)模板,也是非常的全的。
一般登錄后都會(huì )推薦論壇模板,你可以采集出來(lái),到時(shí)候進(jìn)行爬取。pptv和愛(ài)奇藝是主要的評論來(lái)源。你可以登錄應用商店,搜索“百度文庫”等等評論資源。希望能幫到你。
--首先你需要按我步驟設置,根據步驟,第一步你需要先登錄網(wǎng)站kindle商店連接:。第二步進(jìn)入到它的論壇文庫頁(yè)面。第三步,進(jìn)入kindle的論壇,打開(kāi)小說(shuō)類(lèi)目,然后打開(kāi)文檔。第四步,直接找到你想要下載的小說(shuō),點(diǎn)擊,找到那個(gè)下載框,如下圖所示:在下載框的上方有標注的一欄,點(diǎn)擊那個(gè)下載,直接按照步驟走,在下載的界面會(huì )彈出來(lái)一個(gè)頁(yè)面,點(diǎn)擊下載即可,不用管那個(gè)下載是不是有點(diǎn)中的問(wèn)題。第五步,下載成功,最后,點(diǎn)擊左上角,退出該頁(yè)面,就在我的電腦里看見(jiàn)了你下載的小說(shuō)了。
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的數據
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2022-05-04 22:01
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的代碼里面的數據,然后用headers去請求一個(gè)json文件然后對爬蟲(chóng)發(fā)送請求,看返回的數據,和數據庫對應。就是這么簡(jiǎn)單。
謝邀!任何一個(gè)成熟的中間件都可以做到你說(shuō)的那樣。你自己設計或開(kāi)發(fā)一個(gè)也可以。
采集的話(huà)。就是簡(jiǎn)單的事情。
大家講的都有道理,我講一下我的理解吧,不一定完全正確,歡迎批評指正:如果是博客的話(huà),可以找到博客所屬的網(wǎng)站,根據網(wǎng)站的規范和域名,自己設計采集程序。然后找到對應的網(wǎng)站,利用js這種技術(shù)把你想采的目標頁(yè)面渲染出來(lái)。另外為啥要采abc?a,b,c指的是頁(yè)面里面的內容,abc可以看做整個(gè)網(wǎng)站的目錄。c下面是d。
這樣采了以后,你直接把對應的abc這樣的目錄文件放到相應的頁(yè)面中。每次爬都用的是之前設定好的頁(yè)面文件。
采集指的是爬蟲(chóng),采站或者采團隊成員的站。目前是pc爬蟲(chóng)為主,因為有瀏覽器分類(lèi),但一般采用pc采集。另外采集的模式是利用scrapy/gray/flask/bot等框架,通過(guò)python或shell等技術(shù)解析采集結果。方案根據你爬的站數量需求會(huì )有一些不同。如果爬得多,爬得差可以建立一個(gè)scrapy-botfrom這樣的組,用python寫(xiě),然后在你定位的站點(diǎn)中爬爬試試。
你得去找一個(gè)可以爬過(guò)程的工具,不斷的重復一個(gè)過(guò)程 查看全部
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的數據
自動(dòng)采集編寫(xiě)兩個(gè)爬蟲(chóng)爬去它應該有的代碼里面的數據,然后用headers去請求一個(gè)json文件然后對爬蟲(chóng)發(fā)送請求,看返回的數據,和數據庫對應。就是這么簡(jiǎn)單。
謝邀!任何一個(gè)成熟的中間件都可以做到你說(shuō)的那樣。你自己設計或開(kāi)發(fā)一個(gè)也可以。
采集的話(huà)。就是簡(jiǎn)單的事情。
大家講的都有道理,我講一下我的理解吧,不一定完全正確,歡迎批評指正:如果是博客的話(huà),可以找到博客所屬的網(wǎng)站,根據網(wǎng)站的規范和域名,自己設計采集程序。然后找到對應的網(wǎng)站,利用js這種技術(shù)把你想采的目標頁(yè)面渲染出來(lái)。另外為啥要采abc?a,b,c指的是頁(yè)面里面的內容,abc可以看做整個(gè)網(wǎng)站的目錄。c下面是d。
這樣采了以后,你直接把對應的abc這樣的目錄文件放到相應的頁(yè)面中。每次爬都用的是之前設定好的頁(yè)面文件。
采集指的是爬蟲(chóng),采站或者采團隊成員的站。目前是pc爬蟲(chóng)為主,因為有瀏覽器分類(lèi),但一般采用pc采集。另外采集的模式是利用scrapy/gray/flask/bot等框架,通過(guò)python或shell等技術(shù)解析采集結果。方案根據你爬的站數量需求會(huì )有一些不同。如果爬得多,爬得差可以建立一個(gè)scrapy-botfrom這樣的組,用python寫(xiě),然后在你定位的站點(diǎn)中爬爬試試。
你得去找一個(gè)可以爬過(guò)程的工具,不斷的重復一個(gè)過(guò)程
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data(圖)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 142 次瀏覽 ? 2022-05-02 18:00
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data。通過(guò)正則表達式得到的是request_url等php類(lèi)型變量。發(fā)送數據的方式是網(wǎng)頁(yè)上的形如“數據請求”時(shí)的net_url。爬蟲(chóng)代碼每個(gè)網(wǎng)頁(yè)都會(huì )由很多post請求構成。爬蟲(chóng)控制器中相應的爬蟲(chóng)對象對這些請求做處理并返回網(wǎng)頁(yè)的post請求的url。
filter掉然后發(fā)請求
看@克銳在高程里面講的:xpath存xmlpost發(fā)postheadref=“page({}).html”+url;返回值也要注意,一般正常返回是:{page}/page/xml;index:url;}還有注意get和post的不同:get,應該是發(fā)表達式,httpsession會(huì )保存這個(gè)表達式,后面服務(wù)器接受了sessionid,就把網(wǎng)頁(yè)搞下來(lái);post,不應該發(fā)表達式,因為session會(huì )根據表達式把網(wǎng)頁(yè)搞下來(lái),一般不會(huì )把sessionid保存在session內。
另外如果服務(wù)器響應:{url}/{page}/xml;index:url;請不要驗證真假,因為正常情況下這個(gè)url/page/xml;index肯定是。
header中的user-agent不知道你們用的是哪里的:disallow:[block0]headeruser-agent中的user-agent是springmvc中的agent-marker-style頭部的bean。在header中輸入user-agent的值springmvc會(huì )驗證bean中的參數,如果有這樣的值就返回給springmvc。
例如:@autowiredpublic@interfaceagent-marker-style{intgetvalue()throwsillegalargumentexception,interruptedexception{}}vs-marker-style通過(guò)@autowired注入的@interface的方法是單行注入,在這里這里就是只有單行注入:。 查看全部
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data(圖)
自動(dòng)采集編寫(xiě)爬蟲(chóng)每次請求發(fā)送的都是data。通過(guò)正則表達式得到的是request_url等php類(lèi)型變量。發(fā)送數據的方式是網(wǎng)頁(yè)上的形如“數據請求”時(shí)的net_url。爬蟲(chóng)代碼每個(gè)網(wǎng)頁(yè)都會(huì )由很多post請求構成。爬蟲(chóng)控制器中相應的爬蟲(chóng)對象對這些請求做處理并返回網(wǎng)頁(yè)的post請求的url。
filter掉然后發(fā)請求
看@克銳在高程里面講的:xpath存xmlpost發(fā)postheadref=“page({}).html”+url;返回值也要注意,一般正常返回是:{page}/page/xml;index:url;}還有注意get和post的不同:get,應該是發(fā)表達式,httpsession會(huì )保存這個(gè)表達式,后面服務(wù)器接受了sessionid,就把網(wǎng)頁(yè)搞下來(lái);post,不應該發(fā)表達式,因為session會(huì )根據表達式把網(wǎng)頁(yè)搞下來(lái),一般不會(huì )把sessionid保存在session內。
另外如果服務(wù)器響應:{url}/{page}/xml;index:url;請不要驗證真假,因為正常情況下這個(gè)url/page/xml;index肯定是。
header中的user-agent不知道你們用的是哪里的:disallow:[block0]headeruser-agent中的user-agent是springmvc中的agent-marker-style頭部的bean。在header中輸入user-agent的值springmvc會(huì )驗證bean中的參數,如果有這樣的值就返回給springmvc。
例如:@autowiredpublic@interfaceagent-marker-style{intgetvalue()throwsillegalargumentexception,interruptedexception{}}vs-marker-style通過(guò)@autowired注入的@interface的方法是單行注入,在這里這里就是只有單行注入:。
||ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 125 次瀏覽 ? 2022-04-30 09:00
摘要:以“5·12”汶川地震、“4·20”蘆山地震和“6·18”寧南特大山洪泥石流等地質(zhì)災害為例,在 ArcGIS環(huán)境下采用 ArcMap 軟件與 Python 腳本開(kāi)發(fā)相結合的方式,利用多時(shí)期無(wú)人機影像進(jìn)行災害樣本的采集,批量處理多種災害樣本,從而建立對應的無(wú)人機影像災害樣本庫。關(guān)鍵詞ArcGIS;無(wú)人機;地質(zhì)災害;樣本庫1 引言20 世紀 90 年代以來(lái),受人類(lèi)活動(dòng)和全球化的影響,地質(zhì)災害越發(fā)嚴重,地質(zhì)災害發(fā)生的規模、數量和分布范圍呈上升趨勢。2008 年“5·12”汶川特大地震后,由于地質(zhì)結構被破壞,加之惡劣天氣的影響,滑坡和泥石流等次生災害在很長(cháng)一段時(shí)間內影響著(zhù)震區,這些地質(zhì)災害不僅直接或者間接地危害人民群眾生命、財產(chǎn)安全,還會(huì )給社會(huì )和經(jīng)濟建設造成巨大的損失。利用遙感技術(shù)獲取災區影像已成為災后獲取災害信息的重要手段,無(wú)人機遙感技術(shù)時(shí)效性強、使用成本低、起降方式靈活多樣、影像分辨率高等優(yōu)勢,使其在地質(zhì)災害應急救援工作中具有廣闊的應用前景和發(fā)展前途。近幾年,相關(guān)應急救災部門(mén)已經(jīng)具備在災后第一時(shí)間獲取地質(zhì)災害現場(chǎng)的無(wú)人機影像的能力。是一門(mén)解釋型語(yǔ)言,因其不需要編譯和鏈接的時(shí)間,所以能夠節省開(kāi)發(fā)時(shí)間,解釋器可以交互式使用,同時(shí)能夠很方便地測試語(yǔ)言中的各種功能,便于編寫(xiě)發(fā)布用的程序,具有開(kāi)源、模塊豐富、面向對象、面向過(guò)程等特性,能夠與 ArcGIS 軟件很好地結合使用[3]。從 ArcGIS9.0 開(kāi)始,我們就可以使用 Python, 并把它作為首選腳本語(yǔ)言[4],實(shí)現空間數據的自動(dòng)化批量處理,從而起到簡(jiǎn)化流程,提高工作的自動(dòng)化程度的作用[2]。本文介紹一種在 ArcGIS環(huán)境下,結合 Python 腳本開(kāi)發(fā)的方式,利用歷史系列無(wú)人機影像快速批量建立地質(zhì)災害樣本庫的方法,該樣本庫可為后續災害識別提供基礎的訓練數據支持,一定程度上改善了樣本數據采集僅停留在人工解譯層面的現狀。
2 研究區與實(shí)驗數據
根據現有數據情況確定的研究區包括:2008 年汶川地震受災的汶川縣、北川縣、安縣、綿竹縣及都江堰市;2010 年寧南泥石流受災的涼山州寧南縣;2013年蘆山地震受災的蘆山縣、寶興縣、天全縣以及雨城區。研究區內涉及滑坡、泥石流、房屋倒塌、斷路斷橋、洪澇等災害,且災害大多分布于山區,影像數據為災后高分辨率無(wú)人機遙感影像,影像覆蓋面積總計644.59 平方千米。研究區范圍和數據覆蓋情況見(jiàn)圖 1。
3 災害影像樣本采集
3.1 基于 Python 的災害樣本采集方法的建立
Python 為腳本開(kāi)發(fā)語(yǔ)言,因為 Python 簡(jiǎn)單易操作,功能齊全,通過(guò) Python 調用 ArcGIS 的一些功能的開(kāi)發(fā)方式在復雜的數據處理等方面有很大的優(yōu)勢[1]。本文利用 ArcGIS 提供的 Python 站點(diǎn)包 ArcPy,實(shí)現了系列無(wú)人機影像災害點(diǎn)樣本數據的自動(dòng)批量裁剪。具體實(shí)現方法是:基于 Python 編寫(xiě)好的腳本文本在A(yíng)rcGIS 中創(chuàng )建自定義 Arctoolbox 工具,首先配置工作空間,如圖 2 所示:工作空間下有 images 文件夾,用于存放災害的原始影像,支持系列無(wú)人機影像;points 文件夾用于存放災害點(diǎn)矢量數據,該矢量數據為災害點(diǎn)的位置數據,字段信息需包含災害類(lèi)型、樣本大小等相關(guān)用于腳本語(yǔ)言讀取的字段;samples 文件夾用于存放生成的災害樣本數據;tool 文件夾存放ArcGIStoolbox 工具箱,并將此目錄關(guān)聯(lián)到 ArcGIS中。
工具的關(guān)聯(lián)和參數設置如圖 3 所示。在 ArcGIS toolbox 工具箱下添加一個(gè)新的 Toolbox ( New Toolbox),在 Toolbox 中可添加腳本工具,Add 一個(gè)新的 Script,這個(gè)新增加的 Script 工具可以和 Python文件關(guān)聯(lián),在 Script File 中選擇影像樣本裁剪所需的 py 文件,創(chuàng )建用于樣本裁剪的 clip raster 工具。
3.2 采集災害樣本
基于收集到的無(wú)人機影像,進(jìn)一步通過(guò)目視解譯的方法,完善專(zhuān)題資料上沒(méi)有的災害點(diǎn)信息。用與ArcGIS 建立災害點(diǎn)數據,并將具有災害點(diǎn)的影像圖存放在工作空間的 images 文件夾下,點(diǎn)擊 clip raster工具,在出現的界面下路徑文件選擇建立好的工作空間 Clip 即可對影像進(jìn)行自動(dòng)裁剪如圖 4 所示,批量處理得到各類(lèi)災害樣本,并制作地質(zhì)災害范圍圖層。
基于 Python 的災害樣本采集方法的建立,與其他的樣本采集方法相比更為方便。根據實(shí)地和受災范圍的大小來(lái)對每種災害類(lèi)型的樣本大小統一進(jìn)行設置,自動(dòng)采集好災害樣本后,在 samples 里查看每種類(lèi)型的災害樣本大小采集的是否合適、樣本的可辨度是否高,如果不合理,可以重新設置樣本大小來(lái)重新采集,直到每種災害類(lèi)型的樣本都清晰可見(jiàn),并且可辨度高。樣本具體制作流程如圖 5 所示。
4 樣本數據庫
4.1 樣本數據庫的建設
數據庫的建設是管理信息資源最有效地手段,對于某一目的的應用環(huán)境,構建最優(yōu)的數據庫模式。建立數據庫一方面不僅能有效地存儲數據,另一方面還能滿(mǎn)足用戶(hù)信息要求和處理要求,使用戶(hù)更顯而易見(jiàn)地了解到樣本的各方面的數據信息。本次樣本數據庫的建設,按照成果要求和相關(guān)規范,制定了災害點(diǎn)屬性信息采集標準及相應的規范格式,并確定災害相關(guān)信息的編碼規范;最后按照成果要求進(jìn)行入庫,入庫成果包括災害樣本影像數據、地面照片、災害點(diǎn)矢量數據、災害范圍矢量數據和屬性信息數據表,形成災害樣本數據庫,如圖 6 所示。
4.2 樣本數據庫表格的設計
遙感解譯樣本數據主要包括災害樣本影像數據、實(shí)地照片、災害點(diǎn)矢量數據、災害范圍矢量數據和災害屬性信息數據表。樣本數據要求影像紋理清晰、地物特征明顯;影像紋理和光譜信息豐富、色調均勻、反差適中。建立災害樣本數據的工作量是非常龐大的,它需要合理組織樣本數據庫。為了能快速方便地查詢(xún)獲取樣本數據及其基本信息,系統應當按照不同地質(zhì)災害類(lèi)型建庫,把同種地災類(lèi)多時(shí)相、多來(lái)源、不同分辨率等的樣本數據存放在一張表中,而把其他地類(lèi)樣本放在另一張表中。將所采集的樣本數據輸入到數據庫中,建立每種類(lèi)別的多時(shí)相、多分辨率、多來(lái)源的樣本影像數據庫。建立遙感解譯樣本數據庫必須考慮行政區位、日期、影像來(lái)源、紋理、形狀與地形等特征,這不僅僅是簡(jiǎn)單地將所有樣本影像堆積,而是必須按照樣本影像的類(lèi)別進(jìn)行分類(lèi)存放,同時(shí)存儲這些影像的元數據及其描述信息。災害屬性信息數據表中包含災害名稱(chēng)、影像源、日期、行政區位、經(jīng)度、緯度、誘發(fā)因素、險情級別、圖幅號、樣本大小、光譜特征、形狀特征、紋理特征、地形類(lèi)型。遙感解譯樣本數據庫基本結構示例如圖 7所示。
4.3 樣本數據庫示例
災害樣本數據整理,是以實(shí)地照片及其屬性信息為基礎,獲取災害樣本影像及相關(guān)屬性信息,從而建立災害樣本數據庫。樣本數據庫示例如圖 8 所示。
4.4 樣本數據庫的檢查與更新
遙感解譯影像樣本數據庫也需要進(jìn)行后期檢查,結合影像庫進(jìn)行各項專(zhuān)業(yè)信息提取,并對其獲取的專(zhuān)業(yè)信息成果進(jìn)行檢查,同時(shí)還能夠利用 GPS 輔助外業(yè)檢查,運用之前提取的成果檢查樣本庫,及時(shí)更新以保持數據的正確性與有效性。遙感解譯影像樣本數據庫是某個(gè)時(shí)期該地區的遙感樣本影像,對于不同年份應依照收集的資料情況建立不同年度的樣本影像庫,以保證樣本影像庫的時(shí)效性。
5 結束語(yǔ)
在具體工作實(shí)踐中常常需要根據特定的專(zhuān)業(yè)業(yè)務(wù)需要定制適合解決問(wèn)題的地理處理工具,Python與 ArcGIS 的結合,使得問(wèn)題變得簡(jiǎn)單,操作也變得簡(jiǎn)單,處理問(wèn)題也變得比較方便容易一些,所以Python 在 ArcGIS 地理處理框架中占據非常重要的位置。ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設,在裁剪樣本的過(guò)程中提高了速度,并且可以批量處理多種災害樣本,節約了時(shí)間的同時(shí)也大大減少了人力;數據庫的成功建設,不僅有助于我們清晰地了解災害信息,而且可為后一步的災害識別工作提供基礎的訓練數據支持。
參考文獻:
[1] 丘恩. Python 核心編程(第 2 版)[M]. 北京:人民郵電出版社,2008.
[2] 焦洋,鄧鑫,李勝才. 基于 Python 的 ArcGIS 空間數據格式批處理轉換工具開(kāi)發(fā)[J]. 現代測繪,2012,35(3):54-55.
[3] 馬衛春,楊友長(cháng). 基于 Python 的 ArcGIS Server 地圖瓦片定時(shí)自動(dòng)更新方法[J]. 地理空間信息,2013, 11(2):147-149.
[4] 田學(xué)志. 基于 Python 的 ArcGIS 地理處理應用研究[J].計算機光盤(pán)軟件與應用,2013,(7).
最后,小編提醒,由于微信修改了推送規則,沒(méi)有經(jīng)常留言或點(diǎn)“在看”的,會(huì )慢慢的收不到推送!如果你還想每天看到我們的推送,請將ArcGis愛(ài)學(xué)習加為星標或每次看完后點(diǎn)擊一下頁(yè)面下端的“贊”“在看”,拜托了!▼往期精彩回顧 ▼
2、
3、
4、 查看全部
||ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設
摘要:以“5·12”汶川地震、“4·20”蘆山地震和“6·18”寧南特大山洪泥石流等地質(zhì)災害為例,在 ArcGIS環(huán)境下采用 ArcMap 軟件與 Python 腳本開(kāi)發(fā)相結合的方式,利用多時(shí)期無(wú)人機影像進(jìn)行災害樣本的采集,批量處理多種災害樣本,從而建立對應的無(wú)人機影像災害樣本庫。關(guān)鍵詞ArcGIS;無(wú)人機;地質(zhì)災害;樣本庫1 引言20 世紀 90 年代以來(lái),受人類(lèi)活動(dòng)和全球化的影響,地質(zhì)災害越發(fā)嚴重,地質(zhì)災害發(fā)生的規模、數量和分布范圍呈上升趨勢。2008 年“5·12”汶川特大地震后,由于地質(zhì)結構被破壞,加之惡劣天氣的影響,滑坡和泥石流等次生災害在很長(cháng)一段時(shí)間內影響著(zhù)震區,這些地質(zhì)災害不僅直接或者間接地危害人民群眾生命、財產(chǎn)安全,還會(huì )給社會(huì )和經(jīng)濟建設造成巨大的損失。利用遙感技術(shù)獲取災區影像已成為災后獲取災害信息的重要手段,無(wú)人機遙感技術(shù)時(shí)效性強、使用成本低、起降方式靈活多樣、影像分辨率高等優(yōu)勢,使其在地質(zhì)災害應急救援工作中具有廣闊的應用前景和發(fā)展前途。近幾年,相關(guān)應急救災部門(mén)已經(jīng)具備在災后第一時(shí)間獲取地質(zhì)災害現場(chǎng)的無(wú)人機影像的能力。是一門(mén)解釋型語(yǔ)言,因其不需要編譯和鏈接的時(shí)間,所以能夠節省開(kāi)發(fā)時(shí)間,解釋器可以交互式使用,同時(shí)能夠很方便地測試語(yǔ)言中的各種功能,便于編寫(xiě)發(fā)布用的程序,具有開(kāi)源、模塊豐富、面向對象、面向過(guò)程等特性,能夠與 ArcGIS 軟件很好地結合使用[3]。從 ArcGIS9.0 開(kāi)始,我們就可以使用 Python, 并把它作為首選腳本語(yǔ)言[4],實(shí)現空間數據的自動(dòng)化批量處理,從而起到簡(jiǎn)化流程,提高工作的自動(dòng)化程度的作用[2]。本文介紹一種在 ArcGIS環(huán)境下,結合 Python 腳本開(kāi)發(fā)的方式,利用歷史系列無(wú)人機影像快速批量建立地質(zhì)災害樣本庫的方法,該樣本庫可為后續災害識別提供基礎的訓練數據支持,一定程度上改善了樣本數據采集僅停留在人工解譯層面的現狀。
2 研究區與實(shí)驗數據
根據現有數據情況確定的研究區包括:2008 年汶川地震受災的汶川縣、北川縣、安縣、綿竹縣及都江堰市;2010 年寧南泥石流受災的涼山州寧南縣;2013年蘆山地震受災的蘆山縣、寶興縣、天全縣以及雨城區。研究區內涉及滑坡、泥石流、房屋倒塌、斷路斷橋、洪澇等災害,且災害大多分布于山區,影像數據為災后高分辨率無(wú)人機遙感影像,影像覆蓋面積總計644.59 平方千米。研究區范圍和數據覆蓋情況見(jiàn)圖 1。
3 災害影像樣本采集
3.1 基于 Python 的災害樣本采集方法的建立
Python 為腳本開(kāi)發(fā)語(yǔ)言,因為 Python 簡(jiǎn)單易操作,功能齊全,通過(guò) Python 調用 ArcGIS 的一些功能的開(kāi)發(fā)方式在復雜的數據處理等方面有很大的優(yōu)勢[1]。本文利用 ArcGIS 提供的 Python 站點(diǎn)包 ArcPy,實(shí)現了系列無(wú)人機影像災害點(diǎn)樣本數據的自動(dòng)批量裁剪。具體實(shí)現方法是:基于 Python 編寫(xiě)好的腳本文本在A(yíng)rcGIS 中創(chuàng )建自定義 Arctoolbox 工具,首先配置工作空間,如圖 2 所示:工作空間下有 images 文件夾,用于存放災害的原始影像,支持系列無(wú)人機影像;points 文件夾用于存放災害點(diǎn)矢量數據,該矢量數據為災害點(diǎn)的位置數據,字段信息需包含災害類(lèi)型、樣本大小等相關(guān)用于腳本語(yǔ)言讀取的字段;samples 文件夾用于存放生成的災害樣本數據;tool 文件夾存放ArcGIStoolbox 工具箱,并將此目錄關(guān)聯(lián)到 ArcGIS中。
工具的關(guān)聯(lián)和參數設置如圖 3 所示。在 ArcGIS toolbox 工具箱下添加一個(gè)新的 Toolbox ( New Toolbox),在 Toolbox 中可添加腳本工具,Add 一個(gè)新的 Script,這個(gè)新增加的 Script 工具可以和 Python文件關(guān)聯(lián),在 Script File 中選擇影像樣本裁剪所需的 py 文件,創(chuàng )建用于樣本裁剪的 clip raster 工具。
3.2 采集災害樣本
基于收集到的無(wú)人機影像,進(jìn)一步通過(guò)目視解譯的方法,完善專(zhuān)題資料上沒(méi)有的災害點(diǎn)信息。用與ArcGIS 建立災害點(diǎn)數據,并將具有災害點(diǎn)的影像圖存放在工作空間的 images 文件夾下,點(diǎn)擊 clip raster工具,在出現的界面下路徑文件選擇建立好的工作空間 Clip 即可對影像進(jìn)行自動(dòng)裁剪如圖 4 所示,批量處理得到各類(lèi)災害樣本,并制作地質(zhì)災害范圍圖層。
基于 Python 的災害樣本采集方法的建立,與其他的樣本采集方法相比更為方便。根據實(shí)地和受災范圍的大小來(lái)對每種災害類(lèi)型的樣本大小統一進(jìn)行設置,自動(dòng)采集好災害樣本后,在 samples 里查看每種類(lèi)型的災害樣本大小采集的是否合適、樣本的可辨度是否高,如果不合理,可以重新設置樣本大小來(lái)重新采集,直到每種災害類(lèi)型的樣本都清晰可見(jiàn),并且可辨度高。樣本具體制作流程如圖 5 所示。
4 樣本數據庫
4.1 樣本數據庫的建設
數據庫的建設是管理信息資源最有效地手段,對于某一目的的應用環(huán)境,構建最優(yōu)的數據庫模式。建立數據庫一方面不僅能有效地存儲數據,另一方面還能滿(mǎn)足用戶(hù)信息要求和處理要求,使用戶(hù)更顯而易見(jiàn)地了解到樣本的各方面的數據信息。本次樣本數據庫的建設,按照成果要求和相關(guān)規范,制定了災害點(diǎn)屬性信息采集標準及相應的規范格式,并確定災害相關(guān)信息的編碼規范;最后按照成果要求進(jìn)行入庫,入庫成果包括災害樣本影像數據、地面照片、災害點(diǎn)矢量數據、災害范圍矢量數據和屬性信息數據表,形成災害樣本數據庫,如圖 6 所示。
4.2 樣本數據庫表格的設計
遙感解譯樣本數據主要包括災害樣本影像數據、實(shí)地照片、災害點(diǎn)矢量數據、災害范圍矢量數據和災害屬性信息數據表。樣本數據要求影像紋理清晰、地物特征明顯;影像紋理和光譜信息豐富、色調均勻、反差適中。建立災害樣本數據的工作量是非常龐大的,它需要合理組織樣本數據庫。為了能快速方便地查詢(xún)獲取樣本數據及其基本信息,系統應當按照不同地質(zhì)災害類(lèi)型建庫,把同種地災類(lèi)多時(shí)相、多來(lái)源、不同分辨率等的樣本數據存放在一張表中,而把其他地類(lèi)樣本放在另一張表中。將所采集的樣本數據輸入到數據庫中,建立每種類(lèi)別的多時(shí)相、多分辨率、多來(lái)源的樣本影像數據庫。建立遙感解譯樣本數據庫必須考慮行政區位、日期、影像來(lái)源、紋理、形狀與地形等特征,這不僅僅是簡(jiǎn)單地將所有樣本影像堆積,而是必須按照樣本影像的類(lèi)別進(jìn)行分類(lèi)存放,同時(shí)存儲這些影像的元數據及其描述信息。災害屬性信息數據表中包含災害名稱(chēng)、影像源、日期、行政區位、經(jīng)度、緯度、誘發(fā)因素、險情級別、圖幅號、樣本大小、光譜特征、形狀特征、紋理特征、地形類(lèi)型。遙感解譯樣本數據庫基本結構示例如圖 7所示。
4.3 樣本數據庫示例
災害樣本數據整理,是以實(shí)地照片及其屬性信息為基礎,獲取災害樣本影像及相關(guān)屬性信息,從而建立災害樣本數據庫。樣本數據庫示例如圖 8 所示。
4.4 樣本數據庫的檢查與更新
遙感解譯影像樣本數據庫也需要進(jìn)行后期檢查,結合影像庫進(jìn)行各項專(zhuān)業(yè)信息提取,并對其獲取的專(zhuān)業(yè)信息成果進(jìn)行檢查,同時(shí)還能夠利用 GPS 輔助外業(yè)檢查,運用之前提取的成果檢查樣本庫,及時(shí)更新以保持數據的正確性與有效性。遙感解譯影像樣本數據庫是某個(gè)時(shí)期該地區的遙感樣本影像,對于不同年份應依照收集的資料情況建立不同年度的樣本影像庫,以保證樣本影像庫的時(shí)效性。
5 結束語(yǔ)
在具體工作實(shí)踐中常常需要根據特定的專(zhuān)業(yè)業(yè)務(wù)需要定制適合解決問(wèn)題的地理處理工具,Python與 ArcGIS 的結合,使得問(wèn)題變得簡(jiǎn)單,操作也變得簡(jiǎn)單,處理問(wèn)題也變得比較方便容易一些,所以Python 在 ArcGIS 地理處理框架中占據非常重要的位置。ArcGIS 環(huán)境下的系列無(wú)人機影像災害樣本庫建設,在裁剪樣本的過(guò)程中提高了速度,并且可以批量處理多種災害樣本,節約了時(shí)間的同時(shí)也大大減少了人力;數據庫的成功建設,不僅有助于我們清晰地了解災害信息,而且可為后一步的災害識別工作提供基礎的訓練數據支持。
參考文獻:
[1] 丘恩. Python 核心編程(第 2 版)[M]. 北京:人民郵電出版社,2008.
[2] 焦洋,鄧鑫,李勝才. 基于 Python 的 ArcGIS 空間數據格式批處理轉換工具開(kāi)發(fā)[J]. 現代測繪,2012,35(3):54-55.
[3] 馬衛春,楊友長(cháng). 基于 Python 的 ArcGIS Server 地圖瓦片定時(shí)自動(dòng)更新方法[J]. 地理空間信息,2013, 11(2):147-149.
[4] 田學(xué)志. 基于 Python 的 ArcGIS 地理處理應用研究[J].計算機光盤(pán)軟件與應用,2013,(7).
最后,小編提醒,由于微信修改了推送規則,沒(méi)有經(jīng)常留言或點(diǎn)“在看”的,會(huì )慢慢的收不到推送!如果你還想每天看到我們的推送,請將ArcGis愛(ài)學(xué)習加為星標或每次看完后點(diǎn)擊一下頁(yè)面下端的“贊”“在看”,拜托了!▼往期精彩回顧 ▼
2、
3、
4、
自動(dòng)采集編寫(xiě)(Scrapy框架Scrapy架構圖)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2022-04-18 14:20
Scrapy 框架 Scrapy 架構圖(綠線(xiàn)為數據流向):
Scrapy 的工作原理
代碼寫(xiě)好了,程序開(kāi)始運行了……
發(fā)動(dòng)機:嗨!蜘蛛,你在對付哪個(gè)網(wǎng)站?
蜘蛛:老板要我處理。
引擎:給我第一個(gè)需要處理的 URL。
Spider:在這里,第一個(gè) URL 是。
發(fā)動(dòng)機:嗨!調度員,我有一個(gè)請求,請求您幫我排序并加入隊列。
調度程序:好的,正在處理您等一下。
發(fā)動(dòng)機:嗨!調度員,給我你處理的請求。
調度器:給你,這是我處理的請求
發(fā)動(dòng)機:嗨!下載者,請幫我按照老板下載中間件的設置下載這個(gè)請求
下載者:好的!給你,這是下載的東西。(如果失?。簊orry,這個(gè)請求下載失敗。然后引擎告訴調度器這個(gè)請求下載失敗,你記錄一下,我們稍后下載)
發(fā)動(dòng)機:嗨!蜘蛛,這是一個(gè)下載的東西,已經(jīng)按照老大的下載中間件進(jìn)行了處理,你可以自己處理(注意!這里的響應默認由def parse()函數處理)
蜘蛛:(處理數據后需要跟進(jìn)的URL),嗨!Engine,我這里有兩個(gè)結果,這是我需要跟進(jìn)的URL,這是我得到的Item數據。
發(fā)動(dòng)機:嗨!我這里有一件物品,請幫我處理!調度器!這個(gè)是需要你跟進(jìn)的網(wǎng)址幫我處理的。然后從第四步開(kāi)始循環(huán),直到得到boss需要的所有信息。
Pipes ``調度器:好的,現在就做!
注意!只有當調度器中沒(méi)有請求時(shí),整個(gè)程序才會(huì )停止,(即對于下載失敗的URL,Scrapy也會(huì )重新下載。)
制作一個(gè)Scrapy爬蟲(chóng)一共需要4步: Scrapy安裝介紹
Scrapy框架官網(wǎng):
Scrapy中文維護網(wǎng)站:
Windows安裝方式Ubuntu需要9.10以上的安裝方式
安裝完成后,只要在命令終端輸入scrapy,就會(huì )出現類(lèi)似如下的結果,說(shuō)明已經(jīng)安裝成功
具體Scrapy安裝過(guò)程參考:每個(gè)平臺都有安裝方法
入門(mén)案例學(xué)習目標一. 新項目(scrapy startproject)
scrapy startproject mySpider
下面簡(jiǎn)單介紹一下各個(gè)主文件的作用:
scrapy.cfg :項目的配置文件
mySpider/ :項目的 Python 模塊,將從中引用代碼
mySpider/items.py :項目的目標文件
mySpider/pipelines.py :項目的管道文件
mySpider/settings.py :項目的設置文件
mySpider/spiders/ : 蜘蛛代碼存放的目錄
信息。
打開(kāi) mySpider 目錄下的 items.py
Item 定義了一個(gè)結構化的數據字段來(lái)保存爬取的數據,有點(diǎn)像 Python 中的 dict,但提供了一些額外的保護來(lái)減少錯誤。
可以通過(guò)創(chuàng )建一個(gè)scrapy.Item類(lèi)并定義一個(gè)scrapy.Field類(lèi)型的類(lèi)屬性來(lái)定義一個(gè)Item(可以理解為一種類(lèi)似于ORM的映射關(guān)系)。
接下來(lái),創(chuàng )建一個(gè) ItcastItem 類(lèi),并構建項目模型。
import scrapy
class ItcastItem(scrapy.Item):
name = scrapy.Field()
level = scrapy.Field()
info = scrapy.Field()
三、制作蜘蛛 (spiders/itcastSpider.py)
爬蟲(chóng)功能分為兩步:
1. 爬取數據
scrapy genspider itcast "itcast.cn" ?
import scrapy
class ItcastSpider(scrapy.Spider):
name = "itcast"
allowed_domains = ["itcast.cn"]
start_urls = (
'http://www.itcast.cn/',
)
def parse(self, response):
pass
其實(shí)我們也可以自己創(chuàng )建itcast.py,寫(xiě)上面的代碼,不過(guò)使用命令可以省去寫(xiě)固定代碼的麻煩
要創(chuàng )建 Spider,您必須繼承 scrapy.Spider 類(lèi)并定義三個(gè)強制屬性和一個(gè)方法。
將start_urls的值改為第一個(gè)要爬取的url
start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)
修改 parse() 方法
def parse(self, response):
filename = "teacher.html"
open(filename, 'w').write(response.body)
然后運行看看,在mySpider目錄下執行:
scrapy crawl itcast
是的,它是itcast??瓷厦娲a,是ItcastSpider類(lèi)的name屬性,是唯一使用scrapy genspider命令的爬蟲(chóng)名稱(chēng)。
運行后,如果打印日志顯示[scrapy] INFO: Spider closed (finished),則表示執行完成。之后,當前文件夾中出現了一個(gè)teacher.html文件,里面收錄了我們剛要抓取的網(wǎng)頁(yè)的所有源碼信息。
# 注意,Python2.x默認編碼環(huán)境是ASCII,當和取回的數據編碼格式不一致時(shí),可能會(huì )造成亂碼;
# 我們可以指定保存內容的編碼格式,一般情況下,我們可以在代碼最上方添加:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")<br /><br /># 這三行代碼是Python2.x里解決中文編碼的萬(wàn)能鑰匙,經(jīng)過(guò)這么多年的吐槽后Python3學(xué)乖了,默認編碼是Unicode了...(祝大家早日擁抱Python3)
2. 獲取數據
xxx
xxxxx
xxxxxxxx
是不是一目了然?只需轉到 XPath 并開(kāi)始提取數據。
from mySpider.items import ItcastItem
from mySpider.items import ItcastItem
def parse(self, response): #open("teacher.html","wb").write(response.body).close() # 存放老師信息的集合 items = [] for each in response.xpath("//div[@class='li_txt']"): # 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象 item = ItcastItem() #extract()方法返回的都是unicode字符串 name = each.xpath("h3/text()").extract() title = each.xpath("h4/text()").extract() info = each.xpath("p/text()").extract() #xpath返回的是包含一個(gè)元素的列表 item['name'] = name[0] item['title'] = title[0] item['info'] = info[0] items.append(item) # 直接返回最后數據 return items
保存數據有四種最簡(jiǎn)單的方法scrapy保存信息,-o輸出指定格式的文件,命令如下:
# json格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.json
# json lines格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.jsonl
# csv 逗號表達式,可用Excel打開(kāi)
scrapy crawl itcast -o teachers.csv
# xml格式
scrapy crawl itcast -o teachers.xml
想想如果把代碼改成下面的形式,結果是完全一樣的??紤]產(chǎn)量在這里的作用:
from mySpider.items import ItcastItem
def parse(self, response):
#open("teacher.html","wb").write(response.body).close()
# 存放老師信息的集合
#items = []
for each in response.xpath("//div[@class='li_txt']"):
# 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象
item = ItcastItem()
#extract()方法返回的都是unicode字符串
name = each.xpath("h3/text()").extract()
title = each.xpath("h4/text()").extract()
info = each.xpath("p/text()").extract()
#xpath返回的是包含一個(gè)元素的列表
item['name'] = name[0]
item['title'] = title[0]
item['info'] = info[0]
#items.append(item)
#將獲取的數據交給pipelines
yield item
# 返回數據,不經(jīng)過(guò)pipeline
#return items
廢殼
Scrapy 終端是一個(gè)交互式終端。我們可以在不啟動(dòng)蜘蛛的情況下嘗試調試代碼。它還可以用于測試 XPath 或 CSS 表達式,了解它們是如何工作的,并促進(jìn)從我們抓取的網(wǎng)頁(yè)中提取數據。
如果安裝了 IPython,Scrapy 終端將使用 IPython(代替標準 Python 終端)。IPython 終端比其他終端更強大,提供智能自動(dòng)完成、突出顯示和其他功能。(推薦安裝IPython)
啟動(dòng) Scrapy Shell
進(jìn)入項目根目錄,執行以下命令啟動(dòng)shell:
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"
Scrapy Shell 會(huì )根據下載的頁(yè)面自動(dòng)創(chuàng )建一些方便的對象,例如 Response 對象,Selector 對象(用于 HTML 和 XML 內容)。
Selectors 選擇器 Scrapy Selectors 內置 XPath 和 CSS 選擇器表達式機制
Selector有四種基本方法,最常用的是xpath:
XPath 表達式及其對應含義的示例:
/html/head/title: 選擇文檔中 標簽內的 元素
/html/head/title/text(): 選擇上面提到的 元素的文字
//td: 選擇所有的 元素
//div[@class="mine"]: 選擇所有具有 class="mine" 屬性的 div 元素
試試選擇器
我們以騰訊招聘的網(wǎng)站為例:
<p># 啟動(dòng)
scrapy shell "http://hr.tencent.com/position ... ot%3B
# 返回 xpath選擇器對象列表
response.xpath('//title')
[ 查看全部
自動(dòng)采集編寫(xiě)(Scrapy框架Scrapy架構圖)
Scrapy 框架 Scrapy 架構圖(綠線(xiàn)為數據流向):

Scrapy 的工作原理
代碼寫(xiě)好了,程序開(kāi)始運行了……
發(fā)動(dòng)機:嗨!蜘蛛,你在對付哪個(gè)網(wǎng)站?
蜘蛛:老板要我處理。
引擎:給我第一個(gè)需要處理的 URL。
Spider:在這里,第一個(gè) URL 是。
發(fā)動(dòng)機:嗨!調度員,我有一個(gè)請求,請求您幫我排序并加入隊列。
調度程序:好的,正在處理您等一下。
發(fā)動(dòng)機:嗨!調度員,給我你處理的請求。
調度器:給你,這是我處理的請求
發(fā)動(dòng)機:嗨!下載者,請幫我按照老板下載中間件的設置下載這個(gè)請求
下載者:好的!給你,這是下載的東西。(如果失?。簊orry,這個(gè)請求下載失敗。然后引擎告訴調度器這個(gè)請求下載失敗,你記錄一下,我們稍后下載)
發(fā)動(dòng)機:嗨!蜘蛛,這是一個(gè)下載的東西,已經(jīng)按照老大的下載中間件進(jìn)行了處理,你可以自己處理(注意!這里的響應默認由def parse()函數處理)
蜘蛛:(處理數據后需要跟進(jìn)的URL),嗨!Engine,我這里有兩個(gè)結果,這是我需要跟進(jìn)的URL,這是我得到的Item數據。
發(fā)動(dòng)機:嗨!我這里有一件物品,請幫我處理!調度器!這個(gè)是需要你跟進(jìn)的網(wǎng)址幫我處理的。然后從第四步開(kāi)始循環(huán),直到得到boss需要的所有信息。
Pipes ``調度器:好的,現在就做!
注意!只有當調度器中沒(méi)有請求時(shí),整個(gè)程序才會(huì )停止,(即對于下載失敗的URL,Scrapy也會(huì )重新下載。)
制作一個(gè)Scrapy爬蟲(chóng)一共需要4步: Scrapy安裝介紹
Scrapy框架官網(wǎng):
Scrapy中文維護網(wǎng)站:
Windows安裝方式Ubuntu需要9.10以上的安裝方式
安裝完成后,只要在命令終端輸入scrapy,就會(huì )出現類(lèi)似如下的結果,說(shuō)明已經(jīng)安裝成功

具體Scrapy安裝過(guò)程參考:每個(gè)平臺都有安裝方法
入門(mén)案例學(xué)習目標一. 新項目(scrapy startproject)
scrapy startproject mySpider

下面簡(jiǎn)單介紹一下各個(gè)主文件的作用:
scrapy.cfg :項目的配置文件
mySpider/ :項目的 Python 模塊,將從中引用代碼
mySpider/items.py :項目的目標文件
mySpider/pipelines.py :項目的管道文件
mySpider/settings.py :項目的設置文件
mySpider/spiders/ : 蜘蛛代碼存放的目錄
信息。
打開(kāi) mySpider 目錄下的 items.py
Item 定義了一個(gè)結構化的數據字段來(lái)保存爬取的數據,有點(diǎn)像 Python 中的 dict,但提供了一些額外的保護來(lái)減少錯誤。
可以通過(guò)創(chuàng )建一個(gè)scrapy.Item類(lèi)并定義一個(gè)scrapy.Field類(lèi)型的類(lèi)屬性來(lái)定義一個(gè)Item(可以理解為一種類(lèi)似于ORM的映射關(guān)系)。
接下來(lái),創(chuàng )建一個(gè) ItcastItem 類(lèi),并構建項目模型。
import scrapy
class ItcastItem(scrapy.Item):
name = scrapy.Field()
level = scrapy.Field()
info = scrapy.Field()
三、制作蜘蛛 (spiders/itcastSpider.py)
爬蟲(chóng)功能分為兩步:
1. 爬取數據
scrapy genspider itcast "itcast.cn" ?
import scrapy
class ItcastSpider(scrapy.Spider):
name = "itcast"
allowed_domains = ["itcast.cn"]
start_urls = (
'http://www.itcast.cn/',
)
def parse(self, response):
pass
其實(shí)我們也可以自己創(chuàng )建itcast.py,寫(xiě)上面的代碼,不過(guò)使用命令可以省去寫(xiě)固定代碼的麻煩
要創(chuàng )建 Spider,您必須繼承 scrapy.Spider 類(lèi)并定義三個(gè)強制屬性和一個(gè)方法。
將start_urls的值改為第一個(gè)要爬取的url
start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)
修改 parse() 方法
def parse(self, response):
filename = "teacher.html"
open(filename, 'w').write(response.body)
然后運行看看,在mySpider目錄下執行:
scrapy crawl itcast
是的,它是itcast??瓷厦娲a,是ItcastSpider類(lèi)的name屬性,是唯一使用scrapy genspider命令的爬蟲(chóng)名稱(chēng)。
運行后,如果打印日志顯示[scrapy] INFO: Spider closed (finished),則表示執行完成。之后,當前文件夾中出現了一個(gè)teacher.html文件,里面收錄了我們剛要抓取的網(wǎng)頁(yè)的所有源碼信息。
# 注意,Python2.x默認編碼環(huán)境是ASCII,當和取回的數據編碼格式不一致時(shí),可能會(huì )造成亂碼;
# 我們可以指定保存內容的編碼格式,一般情況下,我們可以在代碼最上方添加:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")<br /><br /># 這三行代碼是Python2.x里解決中文編碼的萬(wàn)能鑰匙,經(jīng)過(guò)這么多年的吐槽后Python3學(xué)乖了,默認編碼是Unicode了...(祝大家早日擁抱Python3)
2. 獲取數據

xxx
xxxxx
xxxxxxxx
是不是一目了然?只需轉到 XPath 并開(kāi)始提取數據。
from mySpider.items import ItcastItem
from mySpider.items import ItcastItem
def parse(self, response): #open("teacher.html","wb").write(response.body).close() # 存放老師信息的集合 items = [] for each in response.xpath("//div[@class='li_txt']"): # 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象 item = ItcastItem() #extract()方法返回的都是unicode字符串 name = each.xpath("h3/text()").extract() title = each.xpath("h4/text()").extract() info = each.xpath("p/text()").extract() #xpath返回的是包含一個(gè)元素的列表 item['name'] = name[0] item['title'] = title[0] item['info'] = info[0] items.append(item) # 直接返回最后數據 return items
保存數據有四種最簡(jiǎn)單的方法scrapy保存信息,-o輸出指定格式的文件,命令如下:
# json格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.json
# json lines格式,默認為Unicode編碼
scrapy crawl itcast -o teachers.jsonl
# csv 逗號表達式,可用Excel打開(kāi)
scrapy crawl itcast -o teachers.csv
# xml格式
scrapy crawl itcast -o teachers.xml
想想如果把代碼改成下面的形式,結果是完全一樣的??紤]產(chǎn)量在這里的作用:
from mySpider.items import ItcastItem
def parse(self, response):
#open("teacher.html","wb").write(response.body).close()
# 存放老師信息的集合
#items = []
for each in response.xpath("//div[@class='li_txt']"):
# 將我們得到的數據封裝到一個(gè) `ItcastItem` 對象
item = ItcastItem()
#extract()方法返回的都是unicode字符串
name = each.xpath("h3/text()").extract()
title = each.xpath("h4/text()").extract()
info = each.xpath("p/text()").extract()
#xpath返回的是包含一個(gè)元素的列表
item['name'] = name[0]
item['title'] = title[0]
item['info'] = info[0]
#items.append(item)
#將獲取的數據交給pipelines
yield item
# 返回數據,不經(jīng)過(guò)pipeline
#return items
廢殼
Scrapy 終端是一個(gè)交互式終端。我們可以在不啟動(dòng)蜘蛛的情況下嘗試調試代碼。它還可以用于測試 XPath 或 CSS 表達式,了解它們是如何工作的,并促進(jìn)從我們抓取的網(wǎng)頁(yè)中提取數據。
如果安裝了 IPython,Scrapy 終端將使用 IPython(代替標準 Python 終端)。IPython 終端比其他終端更強大,提供智能自動(dòng)完成、突出顯示和其他功能。(推薦安裝IPython)
啟動(dòng) Scrapy Shell
進(jìn)入項目根目錄,執行以下命令啟動(dòng)shell:
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"

Scrapy Shell 會(huì )根據下載的頁(yè)面自動(dòng)創(chuàng )建一些方便的對象,例如 Response 對象,Selector 對象(用于 HTML 和 XML 內容)。
Selectors 選擇器 Scrapy Selectors 內置 XPath 和 CSS 選擇器表達式機制
Selector有四種基本方法,最常用的是xpath:
XPath 表達式及其對應含義的示例:
/html/head/title: 選擇文檔中 標簽內的 元素
/html/head/title/text(): 選擇上面提到的 元素的文字
//td: 選擇所有的 元素
//div[@class="mine"]: 選擇所有具有 class="mine" 屬性的 div 元素
試試選擇器
我們以騰訊招聘的網(wǎng)站為例:
<p># 啟動(dòng)
scrapy shell "http://hr.tencent.com/position ... ot%3B
# 返回 xpath選擇器對象列表
response.xpath('//title')
[
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 156 次瀏覽 ? 2022-04-18 14:17
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一無(wú)所知,不妨看看這個(gè)。幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。
三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址
2、使用百度的搜索界面,Python編寫(xiě)url采集工具
需要使用requests庫和BeautifulSoup庫,遵守百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭繞過(guò)百度搜索引擎的反爬機制。
Python 源代碼:
用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:
3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以用json庫解析這組數據,把爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。
渲染:
4、Python 自動(dòng)填充調查
和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。
如圖:
那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:
效果:
5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。
爬取的數據如圖:
演示:
結論 查看全部
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一無(wú)所知,不妨看看這個(gè)。幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。

三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址

2、使用百度的搜索界面,Python編寫(xiě)url采集工具
需要使用requests庫和BeautifulSoup庫,遵守百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭繞過(guò)百度搜索引擎的反爬機制。

Python 源代碼:

用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:

3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以用json庫解析這組數據,把爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。

渲染:

4、Python 自動(dòng)填充調查

和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。

如圖:

那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:

效果:



5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。

爬取的數據如圖:

演示:

結論
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 102 次瀏覽 ? 2022-04-17 18:03
自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章。原理:python的網(wǎng)絡(luò )請求采用get方法即可實(shí)現,模擬瀏覽器登錄公眾號后臺,即可自動(dòng)爬取我們需要的文章。主要實(shí)現內容:搜索,看圖,和你聊天。方法:在實(shí)現自動(dòng)采集之前,先用瀏覽器登錄公眾號后臺,采集公眾號相關(guān)用戶(hù)信息。打開(kāi)瀏覽器,在地址欄,輸入相關(guān)搜索關(guān)鍵詞,按照對應提示操作。
只要網(wǎng)頁(yè)登錄成功,點(diǎn)擊關(guān)鍵詞和公眾號名稱(chēng),就會(huì )自動(dòng)搜索并爬取。實(shí)踐一次:python爬蟲(chóng)系列之1——搜索關(guān)鍵詞教程地址:用python爬取一個(gè)微信公眾號文章需要requests模塊,進(jìn)行網(wǎng)絡(luò )請求,模擬瀏覽器后臺登錄,獲取相關(guān)信息。根據圖例的步驟,就能自動(dòng)獲取大量數據信息,實(shí)踐本次實(shí)踐教程所需要的信息。
【準備工作】網(wǎng)頁(yè)登錄問(wèn)題:難點(diǎn)在于如何把爬取的數據實(shí)時(shí)保存到本地,傳到服務(wù)器。第一步:開(kāi)發(fā)板登錄因為之前就有登錄不成功的經(jīng)歷,作為初次接觸爬蟲(chóng)的同學(xué),一定要熟悉網(wǎng)頁(yè)登錄的實(shí)際操作方法。登錄首先登錄開(kāi)發(fā)板,推薦使用梯子或者國內的某些chrome瀏覽器,如360的firefox和chrome擴展支持,實(shí)現登錄。
登錄成功后,python爬蟲(chóng)系列之一——爬取微信公眾號文章,教程上方的url就出現了。pipinstall開(kāi)發(fā)板瀏覽器,安裝相關(guān)的開(kāi)發(fā)板軟件。urllib2是python網(wǎng)絡(luò )通信最常用的庫。第二步:數據預處理本次實(shí)踐準備爬取的是公眾號文章推送列表。因為第一步的網(wǎng)頁(yè)登錄成功后,要打開(kāi)登錄頁(yè)面。所以一直處于登錄狀態(tài),用不到訪(fǎng)問(wèn)ip和端口這些操作。
用戶(hù)管理:爬取到的數據,保存到本地,需要一個(gè)用戶(hù)名和密碼,用戶(hù)名和密碼是唯一的。拿公眾號文章列表項目來(lái)說(shuō),用戶(hù)名和密碼就是文章列表項目標識符了。源代碼引用:globalokhttp;import"weixin.urlopen";import"http.https";import"requests";import"xml.parser";import"sql";import"servlet";import"tomcat";import"urllib";import"flask";import"requests";import"xml.parser";import"xml";import"xmltest";import"tomcat";import"lxml";import"python";import"c";import"urllib.parse";import"multiprocessing";import"lxml";import"python";import"chef";import"cookielib";import"sqlite";import"mysql";import"time";import"mongo";import"redis";import"crypto";import"thrift";import"pymongo";import"node";import"core";imp。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章)
自動(dòng)采集編寫(xiě)python爬蟲(chóng),爬取名詞寶寶的微信公眾號文章。原理:python的網(wǎng)絡(luò )請求采用get方法即可實(shí)現,模擬瀏覽器登錄公眾號后臺,即可自動(dòng)爬取我們需要的文章。主要實(shí)現內容:搜索,看圖,和你聊天。方法:在實(shí)現自動(dòng)采集之前,先用瀏覽器登錄公眾號后臺,采集公眾號相關(guān)用戶(hù)信息。打開(kāi)瀏覽器,在地址欄,輸入相關(guān)搜索關(guān)鍵詞,按照對應提示操作。
只要網(wǎng)頁(yè)登錄成功,點(diǎn)擊關(guān)鍵詞和公眾號名稱(chēng),就會(huì )自動(dòng)搜索并爬取。實(shí)踐一次:python爬蟲(chóng)系列之1——搜索關(guān)鍵詞教程地址:用python爬取一個(gè)微信公眾號文章需要requests模塊,進(jìn)行網(wǎng)絡(luò )請求,模擬瀏覽器后臺登錄,獲取相關(guān)信息。根據圖例的步驟,就能自動(dòng)獲取大量數據信息,實(shí)踐本次實(shí)踐教程所需要的信息。
【準備工作】網(wǎng)頁(yè)登錄問(wèn)題:難點(diǎn)在于如何把爬取的數據實(shí)時(shí)保存到本地,傳到服務(wù)器。第一步:開(kāi)發(fā)板登錄因為之前就有登錄不成功的經(jīng)歷,作為初次接觸爬蟲(chóng)的同學(xué),一定要熟悉網(wǎng)頁(yè)登錄的實(shí)際操作方法。登錄首先登錄開(kāi)發(fā)板,推薦使用梯子或者國內的某些chrome瀏覽器,如360的firefox和chrome擴展支持,實(shí)現登錄。
登錄成功后,python爬蟲(chóng)系列之一——爬取微信公眾號文章,教程上方的url就出現了。pipinstall開(kāi)發(fā)板瀏覽器,安裝相關(guān)的開(kāi)發(fā)板軟件。urllib2是python網(wǎng)絡(luò )通信最常用的庫。第二步:數據預處理本次實(shí)踐準備爬取的是公眾號文章推送列表。因為第一步的網(wǎng)頁(yè)登錄成功后,要打開(kāi)登錄頁(yè)面。所以一直處于登錄狀態(tài),用不到訪(fǎng)問(wèn)ip和端口這些操作。
用戶(hù)管理:爬取到的數據,保存到本地,需要一個(gè)用戶(hù)名和密碼,用戶(hù)名和密碼是唯一的。拿公眾號文章列表項目來(lái)說(shuō),用戶(hù)名和密碼就是文章列表項目標識符了。源代碼引用:globalokhttp;import"weixin.urlopen";import"http.https";import"requests";import"xml.parser";import"sql";import"servlet";import"tomcat";import"urllib";import"flask";import"requests";import"xml.parser";import"xml";import"xmltest";import"tomcat";import"lxml";import"python";import"c";import"urllib.parse";import"multiprocessing";import"lxml";import"python";import"chef";import"cookielib";import"sqlite";import"mysql";import"time";import"mongo";import"redis";import"crypto";import"thrift";import"pymongo";import"node";import"core";imp。
自動(dòng)采集編寫(xiě)(用GS瀏覽器的采數據方式介紹不同的窗口類(lèi)型 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 174 次瀏覽 ? 2022-04-17 10:27
)
用GS瀏覽器或者M(jìn)S點(diǎn)數機完成采集規則后,就可以打開(kāi)DS點(diǎn)數機進(jìn)行數據采集,而吉索克爬蟲(chóng)軟件非常靈活,提供多種使用方式供大家選擇。下面介紹幾種不同的數據采集方法。他們使用的爬蟲(chóng)窗口類(lèi)型不同,控制方式也略有不同。爬蟲(chóng)窗口的描述請參考“DS 計數器的窗口類(lèi)型”。
方法一:保存規則,爬取數據
完成采集規則并保存后,點(diǎn)擊右上角“爬取數據”按鈕,會(huì )自動(dòng)彈出爬蟲(chóng)窗口。直接采集示例網(wǎng)頁(yè),使用測試窗口,菜單項很少。用于驗證爬取規則的正確性。
1.1、用MS找幾個(gè)單位制定規則并保存。
1.2,然后點(diǎn)擊MS工具欄右上角的“爬取數據”按鈕,會(huì )彈出DS爬蟲(chóng)窗口采集示例頁(yè)面信息。
方法二:?jiǎn)未嗡阉?采集 DS 計數器
單獨運行 DS 計數器,可以在左側看到規則列表,每個(gè)規則都有“單次搜索”和“采集搜索”按鈕。單查與吉搜的使用說(shuō)明及區別請參考《吉索專(zhuān)有名詞:?jiǎn)尾榕c吉搜》。簡(jiǎn)單總結一下,Single Search 只運行一個(gè)爬蟲(chóng)窗口,而 Jisou 可以運行多個(gè)爬蟲(chóng)窗口。
2.1、打開(kāi)DS計數器(GS瀏覽器版爬蟲(chóng)點(diǎn)擊右上角“DS計數器”運行;火狐版爬蟲(chóng)點(diǎn)擊工具中“DS數據”運行菜單)。
2.2、搜索主題名,可以使用*模糊匹配(前、后、中都可以收錄*)。
2.3、右擊主題名稱(chēng),在彈出的菜單中選擇“Statistical Leads”。您可以看到有多少潛在客戶(hù)正在等待被抓取,而這些潛在客戶(hù)就是 URL。
2.4、點(diǎn)擊單搜索,輸入線(xiàn)索數量(激活所有線(xiàn)索;如果要采集其他結構相同的網(wǎng)頁(yè),選擇添加,然后復制多個(gè)網(wǎng)址進(jìn)去,可以批量采集 >.更多操作見(jiàn)《如何管理規則線(xiàn)索》
方法三:使用爬蟲(chóng)組并發(fā)采集數據
爬蟲(chóng)組功能支持在一臺電腦上同時(shí)運行多個(gè)爬蟲(chóng)。它集成了crontab爬蟲(chóng)調度器、DS計數器主菜單功能、數據庫存儲三大功能塊。無(wú)需指定采集多少潛在客戶(hù),爬蟲(chóng)組會(huì )自動(dòng)采集所有等待采集的潛在客戶(hù),讓您高效采集數據,監控規則運行。有關(guān)用法,請參閱“如何運行 Crawler Swarm”
方法四:編寫(xiě)crontab并發(fā)爬蟲(chóng)采集數據
crontab程序(終極功能)和爬蟲(chóng)組一樣,可以設置多個(gè)爬蟲(chóng)窗口并發(fā)采集數據,但是需要自己編寫(xiě)程序。兩者的區別在于crontab程序可以指定爬蟲(chóng)窗口只有哪個(gè)主題任務(wù)采集,這樣可以大大提高穩定性和效率,而爬蟲(chóng)組可以自由地將主題任務(wù)分配給爬蟲(chóng)窗口,而效率稍慢。詳情請閱讀文章《如何通過(guò)crontab程序實(shí)現周期性增量采集數據》。
如有疑問(wèn),您可以或
查看全部
自動(dòng)采集編寫(xiě)(用GS瀏覽器的采數據方式介紹不同的窗口類(lèi)型
)
用GS瀏覽器或者M(jìn)S點(diǎn)數機完成采集規則后,就可以打開(kāi)DS點(diǎn)數機進(jìn)行數據采集,而吉索克爬蟲(chóng)軟件非常靈活,提供多種使用方式供大家選擇。下面介紹幾種不同的數據采集方法。他們使用的爬蟲(chóng)窗口類(lèi)型不同,控制方式也略有不同。爬蟲(chóng)窗口的描述請參考“DS 計數器的窗口類(lèi)型”。
方法一:保存規則,爬取數據
完成采集規則并保存后,點(diǎn)擊右上角“爬取數據”按鈕,會(huì )自動(dòng)彈出爬蟲(chóng)窗口。直接采集示例網(wǎng)頁(yè),使用測試窗口,菜單項很少。用于驗證爬取規則的正確性。
1.1、用MS找幾個(gè)單位制定規則并保存。
1.2,然后點(diǎn)擊MS工具欄右上角的“爬取數據”按鈕,會(huì )彈出DS爬蟲(chóng)窗口采集示例頁(yè)面信息。

方法二:?jiǎn)未嗡阉?采集 DS 計數器
單獨運行 DS 計數器,可以在左側看到規則列表,每個(gè)規則都有“單次搜索”和“采集搜索”按鈕。單查與吉搜的使用說(shuō)明及區別請參考《吉索專(zhuān)有名詞:?jiǎn)尾榕c吉搜》。簡(jiǎn)單總結一下,Single Search 只運行一個(gè)爬蟲(chóng)窗口,而 Jisou 可以運行多個(gè)爬蟲(chóng)窗口。
2.1、打開(kāi)DS計數器(GS瀏覽器版爬蟲(chóng)點(diǎn)擊右上角“DS計數器”運行;火狐版爬蟲(chóng)點(diǎn)擊工具中“DS數據”運行菜單)。
2.2、搜索主題名,可以使用*模糊匹配(前、后、中都可以收錄*)。
2.3、右擊主題名稱(chēng),在彈出的菜單中選擇“Statistical Leads”。您可以看到有多少潛在客戶(hù)正在等待被抓取,而這些潛在客戶(hù)就是 URL。
2.4、點(diǎn)擊單搜索,輸入線(xiàn)索數量(激活所有線(xiàn)索;如果要采集其他結構相同的網(wǎng)頁(yè),選擇添加,然后復制多個(gè)網(wǎng)址進(jìn)去,可以批量采集 >.更多操作見(jiàn)《如何管理規則線(xiàn)索》


方法三:使用爬蟲(chóng)組并發(fā)采集數據
爬蟲(chóng)組功能支持在一臺電腦上同時(shí)運行多個(gè)爬蟲(chóng)。它集成了crontab爬蟲(chóng)調度器、DS計數器主菜單功能、數據庫存儲三大功能塊。無(wú)需指定采集多少潛在客戶(hù),爬蟲(chóng)組會(huì )自動(dòng)采集所有等待采集的潛在客戶(hù),讓您高效采集數據,監控規則運行。有關(guān)用法,請參閱“如何運行 Crawler Swarm”

方法四:編寫(xiě)crontab并發(fā)爬蟲(chóng)采集數據
crontab程序(終極功能)和爬蟲(chóng)組一樣,可以設置多個(gè)爬蟲(chóng)窗口并發(fā)采集數據,但是需要自己編寫(xiě)程序。兩者的區別在于crontab程序可以指定爬蟲(chóng)窗口只有哪個(gè)主題任務(wù)采集,這樣可以大大提高穩定性和效率,而爬蟲(chóng)組可以自由地將主題任務(wù)分配給爬蟲(chóng)窗口,而效率稍慢。詳情請閱讀文章《如何通過(guò)crontab程序實(shí)現周期性增量采集數據》。
如有疑問(wèn),您可以或
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2022-04-16 15:16
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一竅不通,不妨看看這幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。
三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址
2、使用百度的搜索界面,Python編寫(xiě)url采集工具
你需要使用requests庫和BeautifulSoup庫來(lái)觀(guān)察百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭來(lái)繞過(guò)百度搜索引擎的反爬蟲(chóng)機制。
Python 源代碼:
用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:
3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以使用json庫解析這組數據,將爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。
渲染:
4、Python 自動(dòng)填充調查
和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。
如圖:
那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:
效果:
5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。
爬取的數據如圖:
演示:
結論 查看全部
自動(dòng)采集編寫(xiě)(如何利用Python打造搜狗壁紙自動(dòng)下載爬蟲(chóng)庫的反爬措施)
這些案例是為一些想進(jìn)入Python行業(yè)的朋友寫(xiě)的??吹酱蠹叶己軡M(mǎn)意,我又拿出來(lái)了。如果你已經(jīng)開(kāi)始學(xué)習python,對爬蟲(chóng)一竅不通,不妨看看這幾個(gè)案例!
二、環(huán)境準備
Python 3
requests 庫、lxml 庫、beautifulsoup4 庫
pip install XX XX XX 一起安裝。

三、Python爬蟲(chóng)小案例
1、獲取機器的公網(wǎng)IP地址
使用python的requests庫+公網(wǎng)查IP接口自動(dòng)獲取IP地址

2、使用百度的搜索界面,Python編寫(xiě)url采集工具
你需要使用requests庫和BeautifulSoup庫來(lái)觀(guān)察百度搜索結構的URL鏈接規則,通過(guò)在程序中設置User-Agent請求頭來(lái)繞過(guò)百度搜索引擎的反爬蟲(chóng)機制。

Python 源代碼:

用Python語(yǔ)言編寫(xiě)程序后,使用關(guān)鍵詞inurl:/dede/login.php批量提取某個(gè)網(wǎng)絡(luò )的后臺地址cms:

3、使用Python制作搜狗壁紙自動(dòng)下載爬蟲(chóng)
搜狗壁紙的地址是json格式的,所以使用json庫解析這組數據,將爬蟲(chóng)程序存放圖片的磁盤(pán)路徑改成要存放圖片的路徑。

渲染:

4、Python 自動(dòng)填充調查

和一般網(wǎng)頁(yè)一樣,多次提交數據都需要一個(gè)驗證碼,這就是反爬機制。

如圖:

那么如何繞過(guò)驗證碼的反爬措施呢?使用X-Forwarded-For偽造IP地址訪(fǎng)問(wèn),Python代碼如下:

效果:



5、獲取 West Thorn 代理上的 IP,以驗證這些代理被禁止的可能性和延遲時(shí)間
可以將Python爬取的代理IP添加到代理鏈中,然后就可以進(jìn)行一般的滲透任務(wù)了。這里,linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2{print}' - 被直接調用。要在Windows下運行這個(gè)程序,需要修改os.popen倒數第二行的命令,可以修改為Windows可執行。

爬取的數據如圖:

演示:

結論
自動(dòng)采集編寫(xiě)(觸發(fā)MCC#抓取surface筆記圖像采集卡channel!)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 208 次瀏覽 ? 2022-04-15 15:29
標簽:觸發(fā)MCC#抓取表面筆記圖像采集卡片通道
每周更新!
1.參數1.1CAM文件
CAM 文件是一個(gè)可讀的 ASCII 文件,文件擴展名為 .cam,收錄一系列參數,例如:AcquisitionMode、TrigMode 等。通過(guò) McSetParamStr 方法將 Camfile 加載到通道:
McSetParamStr(MyChannelMyChannel, MC_CamFile , "VCC VCC-870A_P15RA");
1.2 頻道
通道是相機、圖像采集卡和主機 PC 內存之間的 采集 路徑。頻道由三部分組成:
1. 負責圖像捕獲的相機。
2. 圖像采集卡負責采集 和圖像的傳輸。
3. 用于在主機 PC 中存儲圖像的內存緩沖區。
可以將通道設置為以下四種狀態(tài)之一:
名字
意義
孤兒
沒(méi)有與之關(guān)聯(lián)的爬蟲(chóng)。所以不可能立即得到圖像。但是通道是存在的,它的所有參數都可以自由設置或獲取。
空閑
當一個(gè)通道空閑時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 可能會(huì )自動(dòng)將采集器資源重新分配給另一個(gè)通道。
準備好了
當一個(gè)通道處于就緒狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
活躍
當一個(gè)通道處于活動(dòng)狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器并執行一系列圖像采集。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
代碼示例:
1.3 曲面
surface 是一個(gè)緩沖區,用戶(hù)應用程序可以在其中找到要分析的 采集圖像。內存緩沖區由稱(chēng)為表面的 MultiCam 對象表示。曲面可以由 Multicam 自動(dòng)創(chuàng )建或由用戶(hù)手動(dòng)創(chuàng )建。抓取器通過(guò) DMA 機制自動(dòng)將 采集 圖像傳輸到目標表面。一個(gè)通道可以有一個(gè)或多個(gè)表面(默認為 4)。根據表面的數量,定義了單緩沖和多緩沖。
表面狀態(tài)
意義
免費
自由曲面可以無(wú)條件地接收來(lái)自抓手的圖像數據。
填充
目前正在從采集卡接收圖像數據,或準備接收數據。集群中應該有一個(gè)處于 FILLING 狀態(tài)的 Surface。
填滿(mǎn)
已完成從抓取器接收圖像數據,準備處理。
處理
處理器正在處理處于 PROCESSING 狀態(tài)的 Surface。
保留
從標準狀態(tài)轉換機制中移除。
代碼示例:
一組表面稱(chēng)為一個(gè)簇,一個(gè)通道只能有一個(gè)簇。集群狀態(tài)為OFF、READY(正在獲取圖像但沒(méi)有表面在PROCESSING)、BUSY(有表面在PROCESSING中)、UNAVAILABLE(無(wú)法獲取圖像)
單緩沖
雙緩沖
三重緩沖
1.4多機位信號發(fā)送
信號是由與用戶(hù)應用程序交互的通道生成的事件。
幀觸發(fā)沖突
開(kāi)始曝光
此信號在幀曝光條件開(kāi)始時(shí)發(fā)出。
結束曝光
該信號在幀曝光條件結束時(shí)發(fā)出。
表面填充
當目標簇的Surface進(jìn)入Filled狀態(tài)時(shí)發(fā)出此信號。
表面處理
當目標簇的Surface進(jìn)入Processing狀態(tài)時(shí)發(fā)出此信號。
集群不可用
采集失敗 (**)
采集序列開(kāi)始
采集序列結束
頻道活動(dòng)結束
有三種訪(fǎng)問(wèn)它們的機制:
1. 是指用戶(hù)編寫(xiě)的函數,當預定義的信號出現時(shí)會(huì )自動(dòng)調用這些函數。 (回調)
2. 允許線(xiàn)程等待預定義信號發(fā)生的專(zhuān)用機制。
3. 一種用戶(hù)定義的機制,涉及標準的 Windows 等待函數。
使用回調的案例:
1. 默認情況下,所有信號都被禁用。 SignalEnable 參數用于設置。
2.注冊回調函數
3. 在回調函數中,使用 PMCSIGNALINFO 捕獲事件,其中收錄有關(guān)觸發(fā)事件的信息。
例子:
1.5觸發(fā)器
觸發(fā)事件由 TrigMode 和 NextTrigMode 參數設置。
1.5.1 初始觸發(fā)事件:
1.5.2觸發(fā)事件結束
采集階段可以用 EndTrigMode 結束:
1)當幀、頁(yè)或行計數器到期時(shí),采集 序列會(huì )自動(dòng)終止。 (自動(dòng))
2)當檢測到硬件側觸發(fā)線(xiàn)的有效轉換時(shí),采集序列終止(HARD)
或者通過(guò)BreakEffect參數直接終止通道的活動(dòng)狀態(tài):
1)切片/相位/序列結束后停止采集(FINISH)
2)中止
1.6采集模式1.7異常
通過(guò)異常代碼或 Windows 異常來(lái)管理異常。 ErrorHandling 參數設置錯誤管理行為,有 4 個(gè)可能的值。
2.演示
2.1 打開(kāi)驅動(dòng)
// Open MultiCam driver
MC.OpenDriver();
2.2 創(chuàng )建頻道
// Create a channel and associate it with the first connector on the first board
MC.Create("CHANNEL", out channel);
MC.SetParam(channel, "DriverIndex", 0);
2.3 相機參數設置
// Choose the CAM file
MC.SetParam(channel, "CamFile", "1000m_P50RG");
// Choose the camera expose duration
MC.SetParam(channel, "Expose_us", 20000);
// Choose the pixel color format
MC.SetParam(channel, "ColorFormat", "Y8");
2.4 觸發(fā)模式改變
//Set the acquisition mode to Snapshot
MC.SetParam(channel, "AcquisitionMode", "SNAPSHOT");
// Choose the way the first acquisition is triggered
MC.SetParam(channel, "TrigMode", "COMBINED");
// Choose the triggering mode for subsequent acquisitions
MC.SetParam(channel, "NextTrigMode", "COMBINED");
2.5 個(gè)事件觸發(fā)器
2.5.1 注冊回調函數
// Register the callback function
multiCamCallback = new MC.CALLBACK(MultiCamCallback);
MC.RegisterCallback(channel, multiCamCallback, channel);
2.5.2 信號開(kāi)啟
// Enable the signals corresponding to the callback functions
MC.SetParam(channel, MC.SignalEnable + MC.SIG_SURFACE_PROCESSING, "ON");
MC.SetParam(channel, MC.SignalEnable + MC.SIG_ACQUISITION_FAILURE, "ON");
2.5.3 判斷接收信號
如果接收到的是MC.SIG_SURFACE_PROCESSING,調用ProcessingCallback獲取圖片的數據,并將圖片數據轉換為位圖。如果收到 MC.SIG_ACQUISITION_FAILURE,調用 AcqFailureCallback 輸出“Acquisition Failure”。
private void MultiCamCallback(ref MC.SIGNALINFO signalInfo)
{
switch(signalInfo.Signal)
{
case MC.SIG_SURFACE_PROCESSING:
ProcessingCallback(signalInfo);
break;
case MC.SIG_ACQUISITION_FAILURE:
AcqFailureCallback(signalInfo);
break;
default:
throw new Euresys.MultiCamException("Unknown signal");
}
}
2.6通道狀態(tài)設置為READY
// Prepare the channel in order to minimize the acquisition sequence startup latency
MC.SetParam(channel, "ChannelState", "READY");
3. 編寫(xiě)測試程序
觸發(fā)方式使用默認的連續觸發(fā)。
在界面上顯示camfile的加載。
演示界面只有Go和stop和一個(gè)狀態(tài)欄。添加按鈕以打開(kāi)/關(guān)閉相機和啟動(dòng)/停止采集.
曝光開(kāi)始事件被觸發(fā),幀數開(kāi)始計數++;觸發(fā)surface_processing事件,圖像采集計數++;觸發(fā)采集失敗事件,丟幀計數++。
代碼肯定行不通。畢竟我是一個(gè)沒(méi)見(jiàn)過(guò)采集卡片的人,所以我只是在說(shuō)紙上談兵哈哈哈
標簽:觸發(fā)器、MC、C#、抓取、表面、筆記、圖像、采集卡片、通道 查看全部
自動(dòng)采集編寫(xiě)(觸發(fā)MCC#抓取surface筆記圖像采集卡channel!)
標簽:觸發(fā)MCC#抓取表面筆記圖像采集卡片通道
每周更新!
1.參數1.1CAM文件
CAM 文件是一個(gè)可讀的 ASCII 文件,文件擴展名為 .cam,收錄一系列參數,例如:AcquisitionMode、TrigMode 等。通過(guò) McSetParamStr 方法將 Camfile 加載到通道:
McSetParamStr(MyChannelMyChannel, MC_CamFile , "VCC VCC-870A_P15RA");
1.2 頻道
通道是相機、圖像采集卡和主機 PC 內存之間的 采集 路徑。頻道由三部分組成:
1. 負責圖像捕獲的相機。
2. 圖像采集卡負責采集 和圖像的傳輸。
3. 用于在主機 PC 中存儲圖像的內存緩沖區。

可以將通道設置為以下四種狀態(tài)之一:
名字
意義
孤兒
沒(méi)有與之關(guān)聯(lián)的爬蟲(chóng)。所以不可能立即得到圖像。但是通道是存在的,它的所有參數都可以自由設置或獲取。
空閑
當一個(gè)通道空閑時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 可能會(huì )自動(dòng)將采集器資源重新分配給另一個(gè)通道。
準備好了
當一個(gè)通道處于就緒狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器。因此,圖像 采集 可以立即完成。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
活躍
當一個(gè)通道處于活動(dòng)狀態(tài)時(shí),它有一個(gè)與之關(guān)聯(lián)的抓取器并執行一系列圖像采集。在這種狀態(tài)下,MultiCam 無(wú)法自動(dòng)將采集器資源重新分配給另一個(gè)通道。
代碼示例:

1.3 曲面
surface 是一個(gè)緩沖區,用戶(hù)應用程序可以在其中找到要分析的 采集圖像。內存緩沖區由稱(chēng)為表面的 MultiCam 對象表示。曲面可以由 Multicam 自動(dòng)創(chuàng )建或由用戶(hù)手動(dòng)創(chuàng )建。抓取器通過(guò) DMA 機制自動(dòng)將 采集 圖像傳輸到目標表面。一個(gè)通道可以有一個(gè)或多個(gè)表面(默認為 4)。根據表面的數量,定義了單緩沖和多緩沖。
表面狀態(tài)
意義
免費
自由曲面可以無(wú)條件地接收來(lái)自抓手的圖像數據。
填充
目前正在從采集卡接收圖像數據,或準備接收數據。集群中應該有一個(gè)處于 FILLING 狀態(tài)的 Surface。
填滿(mǎn)
已完成從抓取器接收圖像數據,準備處理。
處理
處理器正在處理處于 PROCESSING 狀態(tài)的 Surface。
保留
從標準狀態(tài)轉換機制中移除。
代碼示例:

一組表面稱(chēng)為一個(gè)簇,一個(gè)通道只能有一個(gè)簇。集群狀態(tài)為OFF、READY(正在獲取圖像但沒(méi)有表面在PROCESSING)、BUSY(有表面在PROCESSING中)、UNAVAILABLE(無(wú)法獲取圖像)

單緩沖

雙緩沖

三重緩沖
1.4多機位信號發(fā)送
信號是由與用戶(hù)應用程序交互的通道生成的事件。
幀觸發(fā)沖突
開(kāi)始曝光
此信號在幀曝光條件開(kāi)始時(shí)發(fā)出。
結束曝光
該信號在幀曝光條件結束時(shí)發(fā)出。
表面填充
當目標簇的Surface進(jìn)入Filled狀態(tài)時(shí)發(fā)出此信號。
表面處理
當目標簇的Surface進(jìn)入Processing狀態(tài)時(shí)發(fā)出此信號。
集群不可用
采集失敗 (**)
采集序列開(kāi)始
采集序列結束
頻道活動(dòng)結束
有三種訪(fǎng)問(wèn)它們的機制:
1. 是指用戶(hù)編寫(xiě)的函數,當預定義的信號出現時(shí)會(huì )自動(dòng)調用這些函數。 (回調)
2. 允許線(xiàn)程等待預定義信號發(fā)生的專(zhuān)用機制。
3. 一種用戶(hù)定義的機制,涉及標準的 Windows 等待函數。
使用回調的案例:
1. 默認情況下,所有信號都被禁用。 SignalEnable 參數用于設置。
2.注冊回調函數
3. 在回調函數中,使用 PMCSIGNALINFO 捕獲事件,其中收錄有關(guān)觸發(fā)事件的信息。
例子:


1.5觸發(fā)器
觸發(fā)事件由 TrigMode 和 NextTrigMode 參數設置。
1.5.1 初始觸發(fā)事件:
1.5.2觸發(fā)事件結束
采集階段可以用 EndTrigMode 結束:
1)當幀、頁(yè)或行計數器到期時(shí),采集 序列會(huì )自動(dòng)終止。 (自動(dòng))
2)當檢測到硬件側觸發(fā)線(xiàn)的有效轉換時(shí),采集序列終止(HARD)
或者通過(guò)BreakEffect參數直接終止通道的活動(dòng)狀態(tài):
1)切片/相位/序列結束后停止采集(FINISH)
2)中止
1.6采集模式1.7異常
通過(guò)異常代碼或 Windows 異常來(lái)管理異常。 ErrorHandling 參數設置錯誤管理行為,有 4 個(gè)可能的值。

2.演示

2.1 打開(kāi)驅動(dòng)
// Open MultiCam driver
MC.OpenDriver();
2.2 創(chuàng )建頻道
// Create a channel and associate it with the first connector on the first board
MC.Create("CHANNEL", out channel);
MC.SetParam(channel, "DriverIndex", 0);
2.3 相機參數設置
// Choose the CAM file
MC.SetParam(channel, "CamFile", "1000m_P50RG");
// Choose the camera expose duration
MC.SetParam(channel, "Expose_us", 20000);
// Choose the pixel color format
MC.SetParam(channel, "ColorFormat", "Y8");
2.4 觸發(fā)模式改變
//Set the acquisition mode to Snapshot
MC.SetParam(channel, "AcquisitionMode", "SNAPSHOT");
// Choose the way the first acquisition is triggered
MC.SetParam(channel, "TrigMode", "COMBINED");
// Choose the triggering mode for subsequent acquisitions
MC.SetParam(channel, "NextTrigMode", "COMBINED");
2.5 個(gè)事件觸發(fā)器
2.5.1 注冊回調函數
// Register the callback function
multiCamCallback = new MC.CALLBACK(MultiCamCallback);
MC.RegisterCallback(channel, multiCamCallback, channel);
2.5.2 信號開(kāi)啟
// Enable the signals corresponding to the callback functions
MC.SetParam(channel, MC.SignalEnable + MC.SIG_SURFACE_PROCESSING, "ON");
MC.SetParam(channel, MC.SignalEnable + MC.SIG_ACQUISITION_FAILURE, "ON");
2.5.3 判斷接收信號
如果接收到的是MC.SIG_SURFACE_PROCESSING,調用ProcessingCallback獲取圖片的數據,并將圖片數據轉換為位圖。如果收到 MC.SIG_ACQUISITION_FAILURE,調用 AcqFailureCallback 輸出“Acquisition Failure”。
private void MultiCamCallback(ref MC.SIGNALINFO signalInfo)
{
switch(signalInfo.Signal)
{
case MC.SIG_SURFACE_PROCESSING:
ProcessingCallback(signalInfo);
break;
case MC.SIG_ACQUISITION_FAILURE:
AcqFailureCallback(signalInfo);
break;
default:
throw new Euresys.MultiCamException("Unknown signal");
}
}
2.6通道狀態(tài)設置為READY
// Prepare the channel in order to minimize the acquisition sequence startup latency
MC.SetParam(channel, "ChannelState", "READY");
3. 編寫(xiě)測試程序
觸發(fā)方式使用默認的連續觸發(fā)。
在界面上顯示camfile的加載。
演示界面只有Go和stop和一個(gè)狀態(tài)欄。添加按鈕以打開(kāi)/關(guān)閉相機和啟動(dòng)/停止采集.
曝光開(kāi)始事件被觸發(fā),幀數開(kāi)始計數++;觸發(fā)surface_processing事件,圖像采集計數++;觸發(fā)采集失敗事件,丟幀計數++。


代碼肯定行不通。畢竟我是一個(gè)沒(méi)見(jiàn)過(guò)采集卡片的人,所以我只是在說(shuō)紙上談兵哈哈哈
標簽:觸發(fā)器、MC、C#、抓取、表面、筆記、圖像、采集卡片、通道
自動(dòng)采集編寫(xiě)(GoldData配制登錄和檢查會(huì )話(huà)的數據集有什么區別?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 150 次瀏覽 ? 2022-04-15 09:45
概括
本文將介紹GoldData的半自動(dòng)登錄功能對采集必填網(wǎng)站數據的使用。GoldData的半自動(dòng)登錄功能是指通過(guò)腳本進(jìn)行登錄。如果需要手動(dòng)輸入驗證碼或其他內容,可以通過(guò)收發(fā)郵件的方式進(jìn)行登錄。
下載示例
為了解釋方便,我們使用采集mydict的數據一詞來(lái)解釋需要登錄的采集網(wǎng)站數據。mydict示例程序可以從開(kāi)源下載< @網(wǎng)站 到 ( , 或 )。
下載后打開(kāi)命令行,運行以下命令啟動(dòng)示例程序。
java -jar mydict.war
啟動(dòng)后,打開(kāi)瀏覽器輸入 URL:8080/ 即可打開(kāi)登錄頁(yè)面。如下所示:
輸入用戶(hù)名和密碼(均為admin),即可打開(kāi)首頁(yè)單詞列表。
編寫(xiě)登錄和檢查會(huì )話(huà)腳本
點(diǎn)擊“采集Management”網(wǎng)站Management”,點(diǎn)擊“Add”按鈕,添加一個(gè)名為mydict的站點(diǎn)。如下:
接下來(lái)配置登錄和檢查會(huì )話(huà)腳本,點(diǎn)擊“設置半自動(dòng)登錄”,會(huì )打開(kāi)站點(diǎn)半自動(dòng)登錄配置頁(yè)面,如下圖:
登錄腳本如下:
//發(fā)送ajax請求驗證碼
var va=$ajax('http://localhost:8080/code/vcode?timestamp=1554001708730',{encoding:false});
var arg_={
label:site.name+"驗證碼",
type:1,
content:va.content
}
//waitForInput內置函數將發(fā)送郵件,并等待輸入
//(回復郵件,或者goldData平臺輸入),
//并把輸入內容當作驗證碼返回。
var code=waitForInput(arg_);
var data="username=admin&password=admin&vcode="+code
var m=new Map()
m.put('Cookie',va.cookie)
//發(fā)送ajax請求執行登錄
var content=$ajax('http://localhost:8080/doLogin',{method:'POST',headers:m,data:data})
//如果正確,將返回狀態(tài)1(登錄成功),和headers信息給GoldData,
//否則返回0(登錄失?。?!
if(content.headers){
m.putAll(content.headers)
}
var ret={status:1,headers:m}
if(content.status!=200){
ret.status=0
}
ret
檢查腳本如下:
var ret=true;
if(html.contains("我的單詞-登錄")){
ret=false
}
ret;
準備好后,我們回到網(wǎng)站管理頁(yè)面,點(diǎn)擊“開(kāi)始登錄”,會(huì )開(kāi)始執行“自動(dòng)登錄”,之后點(diǎn)擊“查詢(xún)”按鈕刷新頁(yè)面,可以看到“等待輸入”狀態(tài)。如下所示:
此時(shí),您設置的通知郵箱應該也會(huì )同時(shí)收到郵件。點(diǎn)擊打開(kāi)郵件,或者點(diǎn)擊頁(yè)面上的“輸入等待輸入”按鈕,會(huì )看到如下內容:
根據郵件內容,回復郵件“{{qcxe}}”,程序可以繼續執行。在golddata頁(yè)面輸入“qcxe”,效果是一樣的。程序將返回“waitForInput()”并返回輸入。
回復后,我們在golddata頁(yè)面點(diǎn)擊“查詢(xún)”刷新頁(yè)面,mydict的登錄狀態(tài)會(huì )變?yōu)椤暗卿洝?。如下所示?br />
接下來(lái),我們可以定義抓取規則。
定義抓取規則
在添加規則之前,我們還需要定義一個(gè)類(lèi)似于表結構的數據集。如下所示:
接下來(lái)點(diǎn)擊“采集管理“規則管理”,添加規則,打開(kāi)添加規則頁(yè)面,如下圖:
抓取規則腳本如下:
[
{
__sample: http://localhost:8080/word/index?pageNum=2
match0: http\:\/\/localhost\:8080\/word\/index(\?pageNum=\d+)?
fields0:
{
__model: true
__dataset: word
__node: "#content ul >li"
sn:
{
expr: ""
attr: ""
js: md5(item.name)
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
name:
{
expr: h5
attr: ""
js: ""
__label: ""
__showOnList: true
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
uk:
{
expr: li span.uk
attr: ""
js: source.replace("uk: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
us:
{
expr: li span.us
attr: ""
js: source.replace("us: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
fields1:
{
__node: .pagination a
href:
{
expr: a
attr: abs:href
js: ""
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
}
]
然后單擊測試,將進(jìn)行測試爬網(wǎng)。我們發(fā)現數據確實(shí)被抓到了,如下圖所示:
配置抓取器抓取
這個(gè)和之前一樣,設置爬蟲(chóng)爬取站點(diǎn)“mydict”。然后點(diǎn)擊開(kāi)始抓取。然后您將在數據管理中查看捕獲的數據。
綜上所述
GoldData半自動(dòng)登錄的本質(zhì)是提供一個(gè)框架,可以手動(dòng)干預異步獲取會(huì )話(huà)。既可以調用AI接口完成自動(dòng)登錄;當復雜的識別需要提供類(lèi)似于驗證碼的輸入時(shí),它也可以直接轉換cookie或token信息。通過(guò)電子郵件向 GoldData 平臺發(fā)送和接收(這樣無(wú)論 CAPTCHA 多么復雜),讓 GoldData 能夠繼續捕獲數據。 查看全部
自動(dòng)采集編寫(xiě)(GoldData配制登錄和檢查會(huì )話(huà)的數據集有什么區別?)
概括
本文將介紹GoldData的半自動(dòng)登錄功能對采集必填網(wǎng)站數據的使用。GoldData的半自動(dòng)登錄功能是指通過(guò)腳本進(jìn)行登錄。如果需要手動(dòng)輸入驗證碼或其他內容,可以通過(guò)收發(fā)郵件的方式進(jìn)行登錄。
下載示例
為了解釋方便,我們使用采集mydict的數據一詞來(lái)解釋需要登錄的采集網(wǎng)站數據。mydict示例程序可以從開(kāi)源下載< @網(wǎng)站 到 ( , 或 )。
下載后打開(kāi)命令行,運行以下命令啟動(dòng)示例程序。
java -jar mydict.war
啟動(dòng)后,打開(kāi)瀏覽器輸入 URL:8080/ 即可打開(kāi)登錄頁(yè)面。如下所示:

輸入用戶(hù)名和密碼(均為admin),即可打開(kāi)首頁(yè)單詞列表。
編寫(xiě)登錄和檢查會(huì )話(huà)腳本
點(diǎn)擊“采集Management”網(wǎng)站Management”,點(diǎn)擊“Add”按鈕,添加一個(gè)名為mydict的站點(diǎn)。如下:

接下來(lái)配置登錄和檢查會(huì )話(huà)腳本,點(diǎn)擊“設置半自動(dòng)登錄”,會(huì )打開(kāi)站點(diǎn)半自動(dòng)登錄配置頁(yè)面,如下圖:

登錄腳本如下:
//發(fā)送ajax請求驗證碼
var va=$ajax('http://localhost:8080/code/vcode?timestamp=1554001708730',{encoding:false});
var arg_={
label:site.name+"驗證碼",
type:1,
content:va.content
}
//waitForInput內置函數將發(fā)送郵件,并等待輸入
//(回復郵件,或者goldData平臺輸入),
//并把輸入內容當作驗證碼返回。
var code=waitForInput(arg_);
var data="username=admin&password=admin&vcode="+code
var m=new Map()
m.put('Cookie',va.cookie)
//發(fā)送ajax請求執行登錄
var content=$ajax('http://localhost:8080/doLogin',{method:'POST',headers:m,data:data})
//如果正確,將返回狀態(tài)1(登錄成功),和headers信息給GoldData,
//否則返回0(登錄失?。?!
if(content.headers){
m.putAll(content.headers)
}
var ret={status:1,headers:m}
if(content.status!=200){
ret.status=0
}
ret
檢查腳本如下:
var ret=true;
if(html.contains("我的單詞-登錄")){
ret=false
}
ret;
準備好后,我們回到網(wǎng)站管理頁(yè)面,點(diǎn)擊“開(kāi)始登錄”,會(huì )開(kāi)始執行“自動(dòng)登錄”,之后點(diǎn)擊“查詢(xún)”按鈕刷新頁(yè)面,可以看到“等待輸入”狀態(tài)。如下所示:

此時(shí),您設置的通知郵箱應該也會(huì )同時(shí)收到郵件。點(diǎn)擊打開(kāi)郵件,或者點(diǎn)擊頁(yè)面上的“輸入等待輸入”按鈕,會(huì )看到如下內容:


根據郵件內容,回復郵件“{{qcxe}}”,程序可以繼續執行。在golddata頁(yè)面輸入“qcxe”,效果是一樣的。程序將返回“waitForInput()”并返回輸入。
回復后,我們在golddata頁(yè)面點(diǎn)擊“查詢(xún)”刷新頁(yè)面,mydict的登錄狀態(tài)會(huì )變?yōu)椤暗卿洝?。如下所示?br />

接下來(lái),我們可以定義抓取規則。
定義抓取規則
在添加規則之前,我們還需要定義一個(gè)類(lèi)似于表結構的數據集。如下所示:

接下來(lái)點(diǎn)擊“采集管理“規則管理”,添加規則,打開(kāi)添加規則頁(yè)面,如下圖:

抓取規則腳本如下:
[
{
__sample: http://localhost:8080/word/index?pageNum=2
match0: http\:\/\/localhost\:8080\/word\/index(\?pageNum=\d+)?
fields0:
{
__model: true
__dataset: word
__node: "#content ul >li"
sn:
{
expr: ""
attr: ""
js: md5(item.name)
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
name:
{
expr: h5
attr: ""
js: ""
__label: ""
__showOnList: true
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
uk:
{
expr: li span.uk
attr: ""
js: source.replace("uk: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
us:
{
expr: li span.us
attr: ""
js: source.replace("us: ",'')
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
fields1:
{
__node: .pagination a
href:
{
expr: a
attr: abs:href
js: ""
__label: ""
__showOnList: false
__type: ""
down: "0"
accessPathJs: ""
uploadConf: s1
}
}
}
]
然后單擊測試,將進(jìn)行測試爬網(wǎng)。我們發(fā)現數據確實(shí)被抓到了,如下圖所示:

配置抓取器抓取
這個(gè)和之前一樣,設置爬蟲(chóng)爬取站點(diǎn)“mydict”。然后點(diǎn)擊開(kāi)始抓取。然后您將在數據管理中查看捕獲的數據。
綜上所述
GoldData半自動(dòng)登錄的本質(zhì)是提供一個(gè)框架,可以手動(dòng)干預異步獲取會(huì )話(huà)。既可以調用AI接口完成自動(dòng)登錄;當復雜的識別需要提供類(lèi)似于驗證碼的輸入時(shí),它也可以直接轉換cookie或token信息。通過(guò)電子郵件向 GoldData 平臺發(fā)送和接收(這樣無(wú)論 CAPTCHA 多么復雜),讓 GoldData 能夠繼續捕獲數據。
自動(dòng)采集編寫(xiě)(自動(dòng)化白盒測試系統及方法()測試技術(shù))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2022-04-14 14:14
本發(fā)明專(zhuān)利技術(shù)提供了一種web應用自動(dòng)化白盒測試系統及方法,包括web data采集模塊,自動(dòng)將測試者提交的數據信息保存在客戶(hù)端瀏覽器中作為web請求信息數據文件,并添加動(dòng)作信息生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試用例執行的邏輯順序,并自動(dòng)執行初始測試。修改數據文件,生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
下載所有詳細的技術(shù)數據
【技術(shù)實(shí)現步驟總結】
本專(zhuān)利技術(shù)屬于計算機軟件測試技術(shù),特別是Web應用軟件功能可靠性自動(dòng)測試的測試技術(shù)。技術(shù)背景 目前,在軟件測試領(lǐng)域,自動(dòng)化測試是一種新興的測試技術(shù)。自動(dòng)化測試方法主要有兩種: 1、捕獲/回放機制:直接使用商業(yè)測試軟件編寫(xiě)測試用例腳本。使用商業(yè)測試軟件自動(dòng)測試被測軟件。這類(lèi)測試軟件在測試web應用時(shí),共同點(diǎn)就是記錄web應用頁(yè)面操作,生成測試腳本。測試時(shí),客戶(hù)端模擬瀏覽器操作,實(shí)現自動(dòng)化測試。如圖1所示。這種測試方式的缺點(diǎn)是客戶(hù)端只能獲取http信息流,而無(wú)法獲取軟件的內部數據結構及相關(guān)信息,無(wú)法對軟件進(jìn)行完整有效的檢查和驗證,具有一定的局限性。例如,在驗證軟件運行時(shí)動(dòng)態(tài)生成的數據,而這些動(dòng)態(tài)生成的數據并沒(méi)有通過(guò)http信息流返回給客戶(hù)端時(shí),捕獲/回放機制的測試方法很難進(jìn)行有效的測試。2、自動(dòng)白盒測試:這類(lèi)自動(dòng)化測試工具自動(dòng)生成測試用例腳本,主要用于源代碼的分析和測試,不具備邏輯測試的功能。雖然這種類(lèi)型的自動(dòng)測試很方便,它可以發(fā)現人工測試很難發(fā)現的錯誤,但也有局限性:此類(lèi)工具一般價(jià)格昂貴,初期投資非常高,無(wú)法有效測試軟件的業(yè)務(wù)功能。而且,在現有技術(shù)中,無(wú)論是捕獲/回放機制還是自動(dòng)白盒測試,這些測試方法仍然存在一個(gè)缺點(diǎn),即只能單獨執行測試用例,不能有效地使用多個(gè)用例。到 --> 業(yè)務(wù)邏輯。耦合。當一個(gè)用例需要以其他用例的運行結果作為初始條件時(shí),目前的測試方法很難將結果自動(dòng)輸出到其他用例,需要人工實(shí)現,沒(méi)有辦法自動(dòng)耦合大量根據業(yè)務(wù)邏輯的用例。
技術(shù)實(shí)現思路
該專(zhuān)利技術(shù)的目的是克服現有技術(shù)的不足,提出一種實(shí)現Web應用程序自動(dòng)白盒測試的系統,適用于基于J2EE和struts技術(shù)B/S架構的Web應用程序。該專(zhuān)利技術(shù)的另一個(gè)目的是提出一種實(shí)現網(wǎng)絡(luò )應用程序自動(dòng)化白盒測試的方法。測試過(guò)程中,對測試用例進(jìn)行人工測試,測試過(guò)程中自動(dòng)記錄測試數據,并以固定格式保存。根據保存的數據自動(dòng)生成用例的測試腳本,測試腳本和測試數據可以實(shí)現測試用例的自動(dòng)白盒測試。當業(yè)務(wù)復雜時(shí),會(huì )有大量的測試用例。該專(zhuān)利技術(shù)提出的方法還可以自動(dòng)構建不同測試用例之間的業(yè)務(wù)邏輯關(guān)系,從而可以根據業(yè)務(wù)邏輯關(guān)系批量運行測試腳本。腳本自動(dòng)測試時(shí),測試腳本部署在服務(wù)器的表現層,腳本模擬服務(wù)器組件內部的軟件業(yè)務(wù)操作。測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第一個(gè)目的,采用的技術(shù)方案如下:Web應用自動(dòng)化白盒測試系統,包括以下組件:web data采集模塊,存儲數據測試人員在客戶(hù)端瀏覽器中提交的信息自動(dòng)保存為web請求信息數據文件,添加動(dòng)作信息,生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
上述技術(shù)方案中,Web數據采集模塊是通過(guò)在客戶(hù)端瀏覽器中安裝數據采集-->采集插件實(shí)現的,數據采集插件調用提供的API瀏覽器,以及瀏覽器提交的數據請求信息,以固定格式記錄保存。動(dòng)作信息是從struts的描述文件中獲取的,該文件記錄了web操作過(guò)程中的業(yè)務(wù)映射關(guān)系。腳本生成模塊根據初始測試數據文件生成初始測試腳本。如果測試用例需要檢查更多的驗證點(diǎn),則通過(guò)修改初始測試腳本得到測試腳本。如果測試用例不需要檢查更多的驗證點(diǎn),那么初始測試腳本就是測試腳本。集成測試模塊將測試腳本部署在服務(wù)器的表現層,對服務(wù)器的表現層進(jìn)行集成測試。測試時(shí),用例根據業(yè)務(wù)邏輯將生成的數據輸出到對應的數據文件中,以便相關(guān)用例可以使用該用例的操作。結果,測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第二個(gè)目的,采用的技術(shù)方案如下:一種Web應用自動(dòng)化白盒測試方法,包括以下步驟:(1)手動(dòng)測試測試用例;(2)網(wǎng)頁(yè)數據采集模塊自動(dòng)記錄并保存瀏覽器提交的數據信息;(3)修改步驟中保存的數據文件(<
<p>是基于軟件代碼的測試,可以對軟件運行時(shí)的細節進(jìn)行仔細檢查。在測試過(guò)程中,可以通過(guò)軟件內部的邏輯結構和相關(guān)信息來(lái)判斷實(shí)際狀態(tài)是否與預期狀態(tài)一致。當軟件出現bug時(shí),可以根據測試結果報告確定具體的功能或類(lèi)別。出現問(wèn)題?,F有技術(shù)中業(yè)務(wù)邏輯的自動(dòng)化測試方法多為黑盒測試。與黑盒測試相比,本專(zhuān)利技術(shù)可以更有效地檢查軟件運行的正確性,有效測試代碼內部結構,保證軟件質(zhì)量。2、本專(zhuān)利技術(shù)的數據和腳本易于使用且編寫(xiě)高效。傳統的白盒測試方法耗時(shí)長(cháng),對測試人員技術(shù)要求高,成本高。該專(zhuān)利技術(shù)提出自動(dòng)數據自動(dòng)化 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)化白盒測試系統及方法()測試技術(shù))
本發(fā)明專(zhuān)利技術(shù)提供了一種web應用自動(dòng)化白盒測試系統及方法,包括web data采集模塊,自動(dòng)將測試者提交的數據信息保存在客戶(hù)端瀏覽器中作為web請求信息數據文件,并添加動(dòng)作信息生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試用例執行的邏輯順序,并自動(dòng)執行初始測試。修改數據文件,生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
下載所有詳細的技術(shù)數據
【技術(shù)實(shí)現步驟總結】
本專(zhuān)利技術(shù)屬于計算機軟件測試技術(shù),特別是Web應用軟件功能可靠性自動(dòng)測試的測試技術(shù)。技術(shù)背景 目前,在軟件測試領(lǐng)域,自動(dòng)化測試是一種新興的測試技術(shù)。自動(dòng)化測試方法主要有兩種: 1、捕獲/回放機制:直接使用商業(yè)測試軟件編寫(xiě)測試用例腳本。使用商業(yè)測試軟件自動(dòng)測試被測軟件。這類(lèi)測試軟件在測試web應用時(shí),共同點(diǎn)就是記錄web應用頁(yè)面操作,生成測試腳本。測試時(shí),客戶(hù)端模擬瀏覽器操作,實(shí)現自動(dòng)化測試。如圖1所示。這種測試方式的缺點(diǎn)是客戶(hù)端只能獲取http信息流,而無(wú)法獲取軟件的內部數據結構及相關(guān)信息,無(wú)法對軟件進(jìn)行完整有效的檢查和驗證,具有一定的局限性。例如,在驗證軟件運行時(shí)動(dòng)態(tài)生成的數據,而這些動(dòng)態(tài)生成的數據并沒(méi)有通過(guò)http信息流返回給客戶(hù)端時(shí),捕獲/回放機制的測試方法很難進(jìn)行有效的測試。2、自動(dòng)白盒測試:這類(lèi)自動(dòng)化測試工具自動(dòng)生成測試用例腳本,主要用于源代碼的分析和測試,不具備邏輯測試的功能。雖然這種類(lèi)型的自動(dòng)測試很方便,它可以發(fā)現人工測試很難發(fā)現的錯誤,但也有局限性:此類(lèi)工具一般價(jià)格昂貴,初期投資非常高,無(wú)法有效測試軟件的業(yè)務(wù)功能。而且,在現有技術(shù)中,無(wú)論是捕獲/回放機制還是自動(dòng)白盒測試,這些測試方法仍然存在一個(gè)缺點(diǎn),即只能單獨執行測試用例,不能有效地使用多個(gè)用例。到 --> 業(yè)務(wù)邏輯。耦合。當一個(gè)用例需要以其他用例的運行結果作為初始條件時(shí),目前的測試方法很難將結果自動(dòng)輸出到其他用例,需要人工實(shí)現,沒(méi)有辦法自動(dòng)耦合大量根據業(yè)務(wù)邏輯的用例。
技術(shù)實(shí)現思路
該專(zhuān)利技術(shù)的目的是克服現有技術(shù)的不足,提出一種實(shí)現Web應用程序自動(dòng)白盒測試的系統,適用于基于J2EE和struts技術(shù)B/S架構的Web應用程序。該專(zhuān)利技術(shù)的另一個(gè)目的是提出一種實(shí)現網(wǎng)絡(luò )應用程序自動(dòng)化白盒測試的方法。測試過(guò)程中,對測試用例進(jìn)行人工測試,測試過(guò)程中自動(dòng)記錄測試數據,并以固定格式保存。根據保存的數據自動(dòng)生成用例的測試腳本,測試腳本和測試數據可以實(shí)現測試用例的自動(dòng)白盒測試。當業(yè)務(wù)復雜時(shí),會(huì )有大量的測試用例。該專(zhuān)利技術(shù)提出的方法還可以自動(dòng)構建不同測試用例之間的業(yè)務(wù)邏輯關(guān)系,從而可以根據業(yè)務(wù)邏輯關(guān)系批量運行測試腳本。腳本自動(dòng)測試時(shí),測試腳本部署在服務(wù)器的表現層,腳本模擬服務(wù)器組件內部的軟件業(yè)務(wù)操作。測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第一個(gè)目的,采用的技術(shù)方案如下:Web應用自動(dòng)化白盒測試系統,包括以下組件:web data采集模塊,存儲數據測試人員在客戶(hù)端瀏覽器中提交的信息自動(dòng)保存為web請求信息數據文件,添加動(dòng)作信息,生成初始測試數據文件;腳本生成模塊,根據初始測試數據文件生成測試腳本;數據生成模塊,通過(guò)編寫(xiě)業(yè)務(wù)描述文件來(lái)描述測試。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。用例執行的邏輯順序自動(dòng)修改初始測試數據文件生成測試數據文件;集成測試模塊按照業(yè)務(wù)描述文件的邏輯順序耦合多個(gè)測試用例。
上述技術(shù)方案中,Web數據采集模塊是通過(guò)在客戶(hù)端瀏覽器中安裝數據采集-->采集插件實(shí)現的,數據采集插件調用提供的API瀏覽器,以及瀏覽器提交的數據請求信息,以固定格式記錄保存。動(dòng)作信息是從struts的描述文件中獲取的,該文件記錄了web操作過(guò)程中的業(yè)務(wù)映射關(guān)系。腳本生成模塊根據初始測試數據文件生成初始測試腳本。如果測試用例需要檢查更多的驗證點(diǎn),則通過(guò)修改初始測試腳本得到測試腳本。如果測試用例不需要檢查更多的驗證點(diǎn),那么初始測試腳本就是測試腳本。集成測試模塊將測試腳本部署在服務(wù)器的表現層,對服務(wù)器的表現層進(jìn)行集成測試。測試時(shí),用例根據業(yè)務(wù)邏輯將生成的數據輸出到對應的數據文件中,以便相關(guān)用例可以使用該用例的操作。結果,測試結束后,輸出測試結果報告。為實(shí)現專(zhuān)利技術(shù)的第二個(gè)目的,采用的技術(shù)方案如下:一種Web應用自動(dòng)化白盒測試方法,包括以下步驟:(1)手動(dòng)測試測試用例;(2)網(wǎng)頁(yè)數據采集模塊自動(dòng)記錄并保存瀏覽器提交的數據信息;(3)修改步驟中保存的數據文件(<
<p>是基于軟件代碼的測試,可以對軟件運行時(shí)的細節進(jìn)行仔細檢查。在測試過(guò)程中,可以通過(guò)軟件內部的邏輯結構和相關(guān)信息來(lái)判斷實(shí)際狀態(tài)是否與預期狀態(tài)一致。當軟件出現bug時(shí),可以根據測試結果報告確定具體的功能或類(lèi)別。出現問(wèn)題?,F有技術(shù)中業(yè)務(wù)邏輯的自動(dòng)化測試方法多為黑盒測試。與黑盒測試相比,本專(zhuān)利技術(shù)可以更有效地檢查軟件運行的正確性,有效測試代碼內部結構,保證軟件質(zhì)量。2、本專(zhuān)利技術(shù)的數據和腳本易于使用且編寫(xiě)高效。傳統的白盒測試方法耗時(shí)長(cháng),對測試人員技術(shù)要求高,成本高。該專(zhuān)利技術(shù)提出自動(dòng)數據自動(dòng)化
自動(dòng)采集編寫(xiě)(看學(xué)習代碼編寫(xiě)爬蟲(chóng)的目的是什么?教程在這里)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 159 次瀏覽 ? 2022-04-12 02:30
這要看學(xué)習代碼寫(xiě)爬蟲(chóng)的目的是什么?磨練您的技能,獲得經(jīng)驗,或者只是想從網(wǎng)絡(luò )上抓取數據以供您自己使用或研究。
如果你想成為學(xué)生黨或者打算轉行IT技術(shù)的人,就必須學(xué)習編碼和編寫(xiě)爬蟲(chóng),以擁有更多的實(shí)踐經(jīng)驗和額外的技術(shù)技能,以便日后找到工作。因為未來(lái)互聯(lián)網(wǎng)的信息化程度會(huì )越來(lái)越高,爬蟲(chóng)可以更高效的獲取互聯(lián)網(wǎng)信息,爬蟲(chóng)的技術(shù)也在興起。
如果您在工作或學(xué)習中只需要采集互聯(lián)網(wǎng)數據應用,可以先試用市面上通用的采集器,減少獲取數據的資源投入,讓您專(zhuān)注于自己的自己的事。
自我推薦,采集網(wǎng)頁(yè)資料可以試試優(yōu)采云采集平臺,有免費版。以下是 采集 結果數據的示例:
優(yōu)采云采集是新一代網(wǎng)站文章采集及發(fā)布平臺,完全在線(xiàn)配置使用云端采集,功能強大,操作簡(jiǎn)單、快速、高效的配置。
優(yōu)采云不僅提供網(wǎng)頁(yè)文章采集、批量數據修改、定時(shí)采集、定時(shí)定量自動(dòng)發(fā)布等基礎功能,還集成了強大的SEO工具和創(chuàng )新實(shí)現了規則智能抽取引擎、書(shū)簽一鍵發(fā)布采集等功能,大大提高了采集配置和發(fā)布的效率。
采集簡(jiǎn)單,發(fā)布更輕松:支持一鍵發(fā)布到WorpPress、Empire、織夢(mèng)、ZBlog、Discuz、Destoon、Typecho、Emlog、Mipcms、Mito、Yiyoucms、Applecms、PHPcms等cms網(wǎng)站系統也可以發(fā)布到自定義Http接口。
有需要的同學(xué)可以看看下面的教程,很快就能上手。 查看全部
自動(dòng)采集編寫(xiě)(看學(xué)習代碼編寫(xiě)爬蟲(chóng)的目的是什么?教程在這里)
這要看學(xué)習代碼寫(xiě)爬蟲(chóng)的目的是什么?磨練您的技能,獲得經(jīng)驗,或者只是想從網(wǎng)絡(luò )上抓取數據以供您自己使用或研究。
如果你想成為學(xué)生黨或者打算轉行IT技術(shù)的人,就必須學(xué)習編碼和編寫(xiě)爬蟲(chóng),以擁有更多的實(shí)踐經(jīng)驗和額外的技術(shù)技能,以便日后找到工作。因為未來(lái)互聯(lián)網(wǎng)的信息化程度會(huì )越來(lái)越高,爬蟲(chóng)可以更高效的獲取互聯(lián)網(wǎng)信息,爬蟲(chóng)的技術(shù)也在興起。
如果您在工作或學(xué)習中只需要采集互聯(lián)網(wǎng)數據應用,可以先試用市面上通用的采集器,減少獲取數據的資源投入,讓您專(zhuān)注于自己的自己的事。
自我推薦,采集網(wǎng)頁(yè)資料可以試試優(yōu)采云采集平臺,有免費版。以下是 采集 結果數據的示例:

優(yōu)采云采集是新一代網(wǎng)站文章采集及發(fā)布平臺,完全在線(xiàn)配置使用云端采集,功能強大,操作簡(jiǎn)單、快速、高效的配置。
優(yōu)采云不僅提供網(wǎng)頁(yè)文章采集、批量數據修改、定時(shí)采集、定時(shí)定量自動(dòng)發(fā)布等基礎功能,還集成了強大的SEO工具和創(chuàng )新實(shí)現了規則智能抽取引擎、書(shū)簽一鍵發(fā)布采集等功能,大大提高了采集配置和發(fā)布的效率。
采集簡(jiǎn)單,發(fā)布更輕松:支持一鍵發(fā)布到WorpPress、Empire、織夢(mèng)、ZBlog、Discuz、Destoon、Typecho、Emlog、Mipcms、Mito、Yiyoucms、Applecms、PHPcms等cms網(wǎng)站系統也可以發(fā)布到自定義Http接口。
有需要的同學(xué)可以看看下面的教程,很快就能上手。
自動(dòng)采集編寫(xiě)( 如何通過(guò)Python實(shí)現自動(dòng)填寫(xiě)調查問(wèn)卷】3.5獲取公網(wǎng)代理IP)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 342 次瀏覽 ? 2022-04-10 05:28
如何通過(guò)Python實(shí)現自動(dòng)填寫(xiě)調查問(wèn)卷】3.5獲取公網(wǎng)代理IP)
一、前言
這個(gè)文章以前是用來(lái)訓練新人的。大家覺(jué)得好理解,就分享給大家學(xué)習。如果你學(xué)過(guò)一些python,想用它做點(diǎn)什么,但沒(méi)有方向,不妨嘗試完成以下案例。
二、環(huán)境準備
安裝requests lxml beautifulsoup4的三個(gè)庫(以下代碼均在python3.5環(huán)境下測試)
pip install requests lxml beautifulsoup4
三、幾個(gè)小爬蟲(chóng)案例
3.1 獲取機器的公網(wǎng)IP地址
以在公網(wǎng)查詢(xún)IP為借口,使用python的requests庫自動(dòng)獲取IP地址。
import requests
r = requests.get("http://2017.ip138.com/ic.asp")
r.encoding = r.apparent_encoding #使用requests的字符編碼智能分析,避免中文亂碼
print(r.text)
# 你還可以使用正則匹配re模塊提取出IP
import re
print(re.findall("d{1,3}.d{1,3}.d{1,3}.d{1,3}",r.text))
3.2 用百度搜索界面寫(xiě)url采集器
在這種情況下,我們將使用 requests 結合 BeautifulSoup 庫來(lái)完成任務(wù)。我們需要在程序中設置User-Agent頭來(lái)繞過(guò)百度搜索引擎的反爬機制(可以盡量不添加User-Agent頭,看能不能獲取數據)。注意百度搜索結構的url鏈接規則,比如第一頁(yè)url鏈接參數pn=0,第二頁(yè)url鏈接參數pn=10……。等等。在這里,我們使用 css 選擇器路徑提取數據。
import requests
from bs4 import BeautifulSoup
# 設置User-Agent頭,繞過(guò)百度搜索引擎的反爬蟲(chóng)機制
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'}
# 注意觀(guān)察百度搜索結構的URL鏈接規律,例如第一頁(yè)pn=0,第二頁(yè)pn=10.... 依次類(lèi)推,下面的for循環(huán)搜索前10頁(yè)結果
for i in range(0,100,10):
bd_search = "https://www.baidu.com/s%3Fwd%3 ... ot%3B % str(i)
r = requests.get(bd_search,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
# 下面的select使用了css選擇器路徑提取數據
url_list = soup.select(".t > a")
for url in url_list:
real_url = url["href"]
r = requests.get(real_url)
print(r.url)
寫(xiě)完程序后,我們使用關(guān)鍵詞inurl:/dede/login.php批量提取織夢(mèng)cms的后臺地址,效果如下:
3.3 自動(dòng)下載搜狗壁紙
本例中,我們將通過(guò)爬蟲(chóng)自動(dòng)下載并搜索壁紙,并將程序中圖片存放的路徑更改為您要存放圖片的目錄路徑。還有一點(diǎn)是我們在程序中使用了json庫,因為在觀(guān)察過(guò)程中發(fā)現搜狗壁紙的地址是用json格式存儲的,所以我們使用json來(lái)解析這組數據。
import requests
import json
#下載圖片
url = "http://pic.sogou.com/pics/chan ... ot%3B
r = requests.get(url)
data = json.loads(r.text)
for i in data["all_items"]:
img_url = i["pic_url"]
# 下面這行里面的路徑改成你自己想要存放圖片的目錄路徑即可
with open("/home/evilk0/Desktop/img/%s" % img_url[-10:]+".jpg","wb") as f:
r2 = requests.get(img_url)
f.write(r2.content)
print("下載完畢:",img_url)
3.4 自動(dòng)填寫(xiě)問(wèn)卷
目標官網(wǎng):
客觀(guān)問(wèn)卷:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
r = requests.post(url = url,headers=header,data=data)
print(r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
當我們使用同一個(gè)IP提交多份問(wèn)卷時(shí),會(huì )觸發(fā)目標的反爬機制,服務(wù)器上會(huì )出現一個(gè)驗證碼。
我們可以使用X-Forwarded-For來(lái)偽造我們的IP,修改后的代碼如下:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
"X-Forwarded-For" : "%s"
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
header["X-Forwarded-For"] = (str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+str(random.randint(1,255))
r = requests.post(url = url,headers=header,data=data)
print(header["X-Forwarded-For"],r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
header["X-Forwarded-For"] = "%s"
效果圖:
關(guān)于這個(gè)文章,因為之前寫(xiě)過(guò),就不贅述了。有興趣的可以直接閱讀:【如何通過(guò)Python自動(dòng)填寫(xiě)問(wèn)卷】
3.5 獲取公網(wǎng)代理IP,判斷是否可用及延遲時(shí)間
在這個(gè)例子中,我們要爬取 [Western Proxies] 上的代理 IP,并驗證這些代理的生存能力和延遲。(可以將爬取的代理IP加入到proxychain中,然后進(jìn)行平時(shí)的滲透任務(wù)。)這里我直接調用linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2 {print}' - ,如果你想在Windows中運行這個(gè)程序,你需要修改os.popen中的命令,也就是倒數第三行,改成Windows可以執行的。
from bs4 import BeautifulSoup
import requests
import os
url = "http://www.xicidaili.com/nn/1"
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'}
r = requests.get(url=url,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
server_address = soup.select(".odd > td:nth-of-type(4)")
ip_list = soup.select(".odd > td:nth-of-type(2)")
ports = soup.select(".odd > td:nth-of-type(3)")
for server,ip in zip(server_address,ip_list):
if len(server.contents) != 1:
print(server.a.string.ljust(8),ip.string.ljust(20), end='')
else:
print("未知".ljust(8), ip.string.ljust(20), end='')
delay_time = os.popen("ping -c 1 " + ip.string + " | awk 'NR==2{print}' -")
delay_time = delay_time.read().split("time=")[-1].strip("
")
print("time = " + delay_time)
四、結束語(yǔ)
當然,你也可以用 python 做很多有趣的事情。 查看全部
自動(dòng)采集編寫(xiě)(
如何通過(guò)Python實(shí)現自動(dòng)填寫(xiě)調查問(wèn)卷】3.5獲取公網(wǎng)代理IP)

一、前言
這個(gè)文章以前是用來(lái)訓練新人的。大家覺(jué)得好理解,就分享給大家學(xué)習。如果你學(xué)過(guò)一些python,想用它做點(diǎn)什么,但沒(méi)有方向,不妨嘗試完成以下案例。
二、環(huán)境準備

安裝requests lxml beautifulsoup4的三個(gè)庫(以下代碼均在python3.5環(huán)境下測試)
pip install requests lxml beautifulsoup4

三、幾個(gè)小爬蟲(chóng)案例
3.1 獲取機器的公網(wǎng)IP地址
以在公網(wǎng)查詢(xún)IP為借口,使用python的requests庫自動(dòng)獲取IP地址。
import requests
r = requests.get("http://2017.ip138.com/ic.asp")
r.encoding = r.apparent_encoding #使用requests的字符編碼智能分析,避免中文亂碼
print(r.text)
# 你還可以使用正則匹配re模塊提取出IP
import re
print(re.findall("d{1,3}.d{1,3}.d{1,3}.d{1,3}",r.text))

3.2 用百度搜索界面寫(xiě)url采集器
在這種情況下,我們將使用 requests 結合 BeautifulSoup 庫來(lái)完成任務(wù)。我們需要在程序中設置User-Agent頭來(lái)繞過(guò)百度搜索引擎的反爬機制(可以盡量不添加User-Agent頭,看能不能獲取數據)。注意百度搜索結構的url鏈接規則,比如第一頁(yè)url鏈接參數pn=0,第二頁(yè)url鏈接參數pn=10……。等等。在這里,我們使用 css 選擇器路徑提取數據。
import requests
from bs4 import BeautifulSoup
# 設置User-Agent頭,繞過(guò)百度搜索引擎的反爬蟲(chóng)機制
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'}
# 注意觀(guān)察百度搜索結構的URL鏈接規律,例如第一頁(yè)pn=0,第二頁(yè)pn=10.... 依次類(lèi)推,下面的for循環(huán)搜索前10頁(yè)結果
for i in range(0,100,10):
bd_search = "https://www.baidu.com/s%3Fwd%3 ... ot%3B % str(i)
r = requests.get(bd_search,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
# 下面的select使用了css選擇器路徑提取數據
url_list = soup.select(".t > a")
for url in url_list:
real_url = url["href"]
r = requests.get(real_url)
print(r.url)
寫(xiě)完程序后,我們使用關(guān)鍵詞inurl:/dede/login.php批量提取織夢(mèng)cms的后臺地址,效果如下:

3.3 自動(dòng)下載搜狗壁紙
本例中,我們將通過(guò)爬蟲(chóng)自動(dòng)下載并搜索壁紙,并將程序中圖片存放的路徑更改為您要存放圖片的目錄路徑。還有一點(diǎn)是我們在程序中使用了json庫,因為在觀(guān)察過(guò)程中發(fā)現搜狗壁紙的地址是用json格式存儲的,所以我們使用json來(lái)解析這組數據。
import requests
import json
#下載圖片
url = "http://pic.sogou.com/pics/chan ... ot%3B
r = requests.get(url)
data = json.loads(r.text)
for i in data["all_items"]:
img_url = i["pic_url"]
# 下面這行里面的路徑改成你自己想要存放圖片的目錄路徑即可
with open("/home/evilk0/Desktop/img/%s" % img_url[-10:]+".jpg","wb") as f:
r2 = requests.get(img_url)
f.write(r2.content)
print("下載完畢:",img_url)

3.4 自動(dòng)填寫(xiě)問(wèn)卷
目標官網(wǎng):
客觀(guān)問(wèn)卷:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
r = requests.post(url = url,headers=header,data=data)
print(r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
當我們使用同一個(gè)IP提交多份問(wèn)卷時(shí),會(huì )觸發(fā)目標的反爬機制,服務(wù)器上會(huì )出現一個(gè)驗證碼。


我們可以使用X-Forwarded-For來(lái)偽造我們的IP,修改后的代碼如下:
import requests
import random
url = "https://www.wjx.cn/joinnew/pro ... ot%3B
data = {
"submitdata" : "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
}
header = {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)",
"Cookie": ".ASPXANONYMOUS=iBuvxgz20wEkAAAAZGY4MDE1MjctNWU4Ni00MDUwLTgwYjQtMjFhMmZhMDE2MTA3h_bb3gNw4XRPsyh-qPh4XW1mfJ41; spiderregkey=baidu.com%c2%a7%e7%9b%b4%e8%be%be%c2%a71; UM_distinctid=1623e28d4df22d-08d0140291e4d5-102c1709-100200-1623e28d4e1141; _umdata=535523100CBE37C329C8A3EEEEE289B573446F594297CC3BB3C355F09187F5ADCC492EBB07A9CC65CD43AD3E795C914CD57017EE3799E92F0E2762C963EF0912; WjxUser=UserName=17750277425&Type=1; LastCheckUpdateDate=1; LastCheckDesign=1; DeleteQCookie=1; _cnzz_CV4478442=%E7%94%A8%E6%88%B7%E7%89%88%E6%9C%AC%7C%E5%85%8D%E8%B4%B9%E7%89%88%7C1521461468568; jac21581199=78751211; CNZZDATA4478442=cnzz_eid%3D878068609-1521456533-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1521461319; Hm_lvt_21be24c80829bd7a683b2c536fcf520b=1521461287,1521463471; Hm_lpvt_21be24c80829bd7a683b2c536fcf520b=1521463471",
"X-Forwarded-For" : "%s"
}
for i in range(0,500):
choice = (
random.randint(1, 2),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 4),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
random.randint(1, 3),
)
data["submitdata"] = data["submitdata"] % choice
header["X-Forwarded-For"] = (str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+(str(random.randint(1,255))+".")+str(random.randint(1,255))
r = requests.post(url = url,headers=header,data=data)
print(header["X-Forwarded-For"],r.text)
data["submitdata"] = "1$%s}2$%s}3$%s}4$%s}5$%s}6$%s}7$%s}8$%s}9$%s}10$%s"
header["X-Forwarded-For"] = "%s"
效果圖:



關(guān)于這個(gè)文章,因為之前寫(xiě)過(guò),就不贅述了。有興趣的可以直接閱讀:【如何通過(guò)Python自動(dòng)填寫(xiě)問(wèn)卷】
3.5 獲取公網(wǎng)代理IP,判斷是否可用及延遲時(shí)間
在這個(gè)例子中,我們要爬取 [Western Proxies] 上的代理 IP,并驗證這些代理的生存能力和延遲。(可以將爬取的代理IP加入到proxychain中,然后進(jìn)行平時(shí)的滲透任務(wù)。)這里我直接調用linux系統命令ping -c 1 " + ip.string + " | awk 'NR==2 {print}' - ,如果你想在Windows中運行這個(gè)程序,你需要修改os.popen中的命令,也就是倒數第三行,改成Windows可以執行的。
from bs4 import BeautifulSoup
import requests
import os
url = "http://www.xicidaili.com/nn/1"
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'}
r = requests.get(url=url,headers=headers)
soup = BeautifulSoup(r.text,"lxml")
server_address = soup.select(".odd > td:nth-of-type(4)")
ip_list = soup.select(".odd > td:nth-of-type(2)")
ports = soup.select(".odd > td:nth-of-type(3)")
for server,ip in zip(server_address,ip_list):
if len(server.contents) != 1:
print(server.a.string.ljust(8),ip.string.ljust(20), end='')
else:
print("未知".ljust(8), ip.string.ljust(20), end='')
delay_time = os.popen("ping -c 1 " + ip.string + " | awk 'NR==2{print}' -")
delay_time = delay_time.read().split("time=")[-1].strip("
")
print("time = " + delay_time)


四、結束語(yǔ)
當然,你也可以用 python 做很多有趣的事情。
自動(dòng)采集編寫(xiě)(管理員賬號推薦使用微信公眾號、小程序的原生代碼開(kāi)發(fā))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2022-04-08 05:03
自動(dòng)采集編寫(xiě)/上線(xiàn)微信公眾號、小程序的原生代碼,并即時(shí)發(fā)布,方便快捷;包含常見(jiàn)的采集網(wǎng)址,并且提供一定的自動(dòng)轉換功能,可以將上述網(wǎng)址轉換為小程序地址;提供nodejs版本,并且支持windows和linux主機部署;可以批量管理多個(gè)微信公眾號、小程序同步進(jìn)行采集,或統一管理。一、微信公眾號、小程序原生代碼開(kāi)發(fā)微信公眾號原生代碼開(kāi)發(fā)如何進(jìn)行原生代碼采集呢?只需開(kāi)發(fā)一個(gè)php后臺,解析源碼,然后就可以開(kāi)始簡(jiǎn)單的自動(dòng)化爬蟲(chóng)爬取操作了。
步驟1:打開(kāi)瀏覽器瀏覽器地址:,進(jìn)入登錄頁(yè)面,如圖步驟2:點(diǎn)擊登錄并用賬號密碼登錄步驟3:進(jìn)入登錄后臺,如圖采集模塊暫不開(kāi)放,暫時(shí)暫時(shí)解決,稍后我們會(huì )同步解決采集過(guò)程中可能出現的問(wèn)題、步驟4:登錄成功后,進(jìn)入php后臺,獲取上面所提供的文件路徑,并配置相應的管理員賬號和密碼。管理員賬號推薦使用微信,進(jìn)入管理員php后臺,找到源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。
使用java采集數據項目的話(huà),你需要配置jsp的開(kāi)發(fā)環(huán)境,這里開(kāi)發(fā)環(huán)境自己搭建不太方便,可以聯(lián)系在線(xiàn)引導地址:phpdemo小程序原生代碼開(kāi)發(fā)也一樣,同樣以微信采集為例,登錄并開(kāi)始php后臺和小程序的源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。安裝java的java環(huán)境推薦使用微信,進(jìn)入管理員php后臺,配置相應的用戶(hù),密碼和項目路徑,具體配置方法百度搜索即可:php|java實(shí)現網(wǎng)站自動(dòng)化爬蟲(chóng)采集-酷前端小編一枚~步驟5:然后會(huì )得到對應小程序的源碼分析后,你需要獲取小程序的網(wǎng)址及打開(kāi)方式,具體方法百度搜索即可,大同小異的。
上述步驟有些需要手動(dòng)配置,小編沒(méi)有手動(dòng)配置,僅找到配置這塊的源碼,會(huì )后臺找到相應路徑和信息進(jìn)行簡(jiǎn)單配置:#小程序自動(dòng)化采集器-php&_phpshowtotime=1&time=20140329&https=false&wx=1#\\for\\index\\html\\fallback('#\\index\\');//獲取源碼路徑//創(chuàng )建網(wǎng)址分析器""".java-jstring:"""index.php"""so//訪(fǎng)問(wèn)網(wǎng)址的配置文件//訪(fǎng)問(wèn)授權服務(wù)器返回你要用的服務(wù)器地址"""php中文小程序源碼分析器-jstring格式化格式化這里我將使用自己編寫(xiě)的https加密環(huán)境,前面的小說(shuō)家采集器,和小說(shuō)家號都存放在這里。
簡(jiǎn)單配置,即可使用。首先通過(guò)微信,進(jìn)入到你的小程序,然后輸入采集內容采集。完成操作后,手動(dòng)執行代碼即可。---end---二、微信公眾號采集編寫(xiě)這里,我們只需要獲取微信公眾號的采集端口即可?,F在我們使用上面我們講。 查看全部
自動(dòng)采集編寫(xiě)(管理員賬號推薦使用微信公眾號、小程序的原生代碼開(kāi)發(fā))
自動(dòng)采集編寫(xiě)/上線(xiàn)微信公眾號、小程序的原生代碼,并即時(shí)發(fā)布,方便快捷;包含常見(jiàn)的采集網(wǎng)址,并且提供一定的自動(dòng)轉換功能,可以將上述網(wǎng)址轉換為小程序地址;提供nodejs版本,并且支持windows和linux主機部署;可以批量管理多個(gè)微信公眾號、小程序同步進(jìn)行采集,或統一管理。一、微信公眾號、小程序原生代碼開(kāi)發(fā)微信公眾號原生代碼開(kāi)發(fā)如何進(jìn)行原生代碼采集呢?只需開(kāi)發(fā)一個(gè)php后臺,解析源碼,然后就可以開(kāi)始簡(jiǎn)單的自動(dòng)化爬蟲(chóng)爬取操作了。
步驟1:打開(kāi)瀏覽器瀏覽器地址:,進(jìn)入登錄頁(yè)面,如圖步驟2:點(diǎn)擊登錄并用賬號密碼登錄步驟3:進(jìn)入登錄后臺,如圖采集模塊暫不開(kāi)放,暫時(shí)暫時(shí)解決,稍后我們會(huì )同步解決采集過(guò)程中可能出現的問(wèn)題、步驟4:登錄成功后,進(jìn)入php后臺,獲取上面所提供的文件路徑,并配置相應的管理員賬號和密碼。管理員賬號推薦使用微信,進(jìn)入管理員php后臺,找到源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。
使用java采集數據項目的話(huà),你需要配置jsp的開(kāi)發(fā)環(huán)境,這里開(kāi)發(fā)環(huán)境自己搭建不太方便,可以聯(lián)系在線(xiàn)引導地址:phpdemo小程序原生代碼開(kāi)發(fā)也一樣,同樣以微信采集為例,登錄并開(kāi)始php后臺和小程序的源碼分析,然后選擇相應的項目進(jìn)行配置和引用包。安裝java的java環(huán)境推薦使用微信,進(jìn)入管理員php后臺,配置相應的用戶(hù),密碼和項目路徑,具體配置方法百度搜索即可:php|java實(shí)現網(wǎng)站自動(dòng)化爬蟲(chóng)采集-酷前端小編一枚~步驟5:然后會(huì )得到對應小程序的源碼分析后,你需要獲取小程序的網(wǎng)址及打開(kāi)方式,具體方法百度搜索即可,大同小異的。
上述步驟有些需要手動(dòng)配置,小編沒(méi)有手動(dòng)配置,僅找到配置這塊的源碼,會(huì )后臺找到相應路徑和信息進(jìn)行簡(jiǎn)單配置:#小程序自動(dòng)化采集器-php&_phpshowtotime=1&time=20140329&https=false&wx=1#\\for\\index\\html\\fallback('#\\index\\');//獲取源碼路徑//創(chuàng )建網(wǎng)址分析器""".java-jstring:"""index.php"""so//訪(fǎng)問(wèn)網(wǎng)址的配置文件//訪(fǎng)問(wèn)授權服務(wù)器返回你要用的服務(wù)器地址"""php中文小程序源碼分析器-jstring格式化格式化這里我將使用自己編寫(xiě)的https加密環(huán)境,前面的小說(shuō)家采集器,和小說(shuō)家號都存放在這里。
簡(jiǎn)單配置,即可使用。首先通過(guò)微信,進(jìn)入到你的小程序,然后輸入采集內容采集。完成操作后,手動(dòng)執行代碼即可。---end---二、微信公眾號采集編寫(xiě)這里,我們只需要獲取微信公眾號的采集端口即可?,F在我們使用上面我們講。
自動(dòng)采集編寫(xiě)(服務(wù)器必需支持偽靜態(tài)服務(wù)器源碼演示網(wǎng)站pc采集一次安裝受益終身 )
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2022-04-08 03:13
)
本源代碼經(jīng)樓主修改,詳細安裝方法已經(jīng)寫(xiě)好,可以完美安裝運行。
此源代碼已啟用偽靜態(tài)規則服務(wù)器必須支持偽靜態(tài)
服務(wù)器目前只支持php+apache
如果你是php+Nginx,請自行修改偽靜態(tài)規則
或者改變服務(wù)器運行環(huán)境。否則,它不可用。
本源代碼中沒(méi)有APP軟件。標題寫(xiě)的APP支持其他小說(shuō)APP平臺的轉碼閱讀。
小說(shuō)站的人都知道,運營(yíng)一個(gè)APP的成本太高了。制作一個(gè)APP的最低成本是10000元。但將你的網(wǎng)站鏈接到其他成熟的小說(shuō)站是最方便、最便宜的方式。本源碼支持其他APP軟件轉碼。
附帶演示 采集 規則。但是有些已經(jīng)過(guò)時(shí)了
采集請自己寫(xiě)規則。我們的軟件不提供采集規則
-------------------------------------------------- -----------------------------------------
本源代碼演示 網(wǎng)站 pc
配合CNZZ的統計插件,可以輕松實(shí)現下載的詳細統計和采集的詳細統計。(7)這個(gè)程序的自動(dòng)采集不是市面上常見(jiàn)的,如冠冠、采集夏等,而是在原采集的基礎上二次開(kāi)發(fā)DEDE的@>功能 采集的采集模塊可以有效保證章節內容的完整性,避免章節重復、章節內容無(wú)內容、章節亂碼等;采集可以達到24小時(shí)25萬(wàn)到30萬(wàn)章。(8)安裝比較簡(jiǎn)單,如果安裝后打開(kāi)的網(wǎng)址一直是手機版,
支持微信公眾號綁定:
網(wǎng)頁(yè)版截圖:
查看全部
自動(dòng)采集編寫(xiě)(服務(wù)器必需支持偽靜態(tài)服務(wù)器源碼演示網(wǎng)站pc采集一次安裝受益終身
)
本源代碼經(jīng)樓主修改,詳細安裝方法已經(jīng)寫(xiě)好,可以完美安裝運行。
此源代碼已啟用偽靜態(tài)規則服務(wù)器必須支持偽靜態(tài)
服務(wù)器目前只支持php+apache
如果你是php+Nginx,請自行修改偽靜態(tài)規則
或者改變服務(wù)器運行環(huán)境。否則,它不可用。
本源代碼中沒(méi)有APP軟件。標題寫(xiě)的APP支持其他小說(shuō)APP平臺的轉碼閱讀。
小說(shuō)站的人都知道,運營(yíng)一個(gè)APP的成本太高了。制作一個(gè)APP的最低成本是10000元。但將你的網(wǎng)站鏈接到其他成熟的小說(shuō)站是最方便、最便宜的方式。本源碼支持其他APP軟件轉碼。
附帶演示 采集 規則。但是有些已經(jīng)過(guò)時(shí)了
采集請自己寫(xiě)規則。我們的軟件不提供采集規則
-------------------------------------------------- -----------------------------------------
本源代碼演示 網(wǎng)站 pc
配合CNZZ的統計插件,可以輕松實(shí)現下載的詳細統計和采集的詳細統計。(7)這個(gè)程序的自動(dòng)采集不是市面上常見(jiàn)的,如冠冠、采集夏等,而是在原采集的基礎上二次開(kāi)發(fā)DEDE的@>功能 采集的采集模塊可以有效保證章節內容的完整性,避免章節重復、章節內容無(wú)內容、章節亂碼等;采集可以達到24小時(shí)25萬(wàn)到30萬(wàn)章。(8)安裝比較簡(jiǎn)單,如果安裝后打開(kāi)的網(wǎng)址一直是手機版,
支持微信公眾號綁定:
網(wǎng)頁(yè)版截圖:




自動(dòng)采集編寫(xiě)( 6個(gè)K8s日志系統建設中的典型問(wèn)題,你遇到過(guò)幾個(gè)?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 170 次瀏覽 ? 2022-04-04 03:04
6個(gè)K8s日志系統建設中的典型問(wèn)題,你遇到過(guò)幾個(gè)?)
作者 | 元一阿里云存儲服務(wù)技術(shù)專(zhuān)家
簡(jiǎn)介:上一篇文章主要介紹了Kubernetes日志輸出的一些注意事項。日志輸出的最終目的是做統一的采集和分析。在Kubernetes中,記錄采集的方式與普通虛擬機有很大不同,相對實(shí)現難度和部署成本也略高,但如果使用得當,自動(dòng)化程度比傳統方式高,運維成本更低。本文是日志系列文章的第四篇。
第一篇:《K8s日志系統建設中的6個(gè)典型問(wèn)題,你遇到過(guò)幾個(gè)?》
第二篇:《一篇文章理解K8s日志系統的設計與實(shí)踐》
第三篇:《解決K8s中日志輸出問(wèn)題的9個(gè)技巧》
Kubernetes 日志采集 難點(diǎn)
在 Kubernetes 中,log采集 比傳統的虛擬機和物理機要復雜得多。最根本的原因是Kubernetes屏蔽了底層異常,提供了更細粒度的資源調度,向上提供了一個(gè)穩定動(dòng)態(tài)的環(huán)境。因此,日志采集面臨著(zhù)更豐富、更動(dòng)態(tài)的環(huán)境,需要考慮的點(diǎn)也更多。
例如:
Kubernetes 傳統方式
日志類(lèi)型
文件、標準輸出、主機文件、日志
檔案、日記
日志源
業(yè)務(wù)容器、系統組件、主機
商務(wù),主持人
采集如何
Agent (Sidecar, DaemonSet), Direct Write (DockerEngine, Business)
代理,直寫(xiě)
獨立應用程序的數量
10-100
1-10
應用動(dòng)態(tài)
高的
低的
節點(diǎn)動(dòng)態(tài)
高的
低的
采集部署方式
手動(dòng),Yaml
手動(dòng), 定制
采集模式:主動(dòng)或被動(dòng)
日志采集方法有兩種:被動(dòng)采集和主動(dòng)推送。在K8s中,被動(dòng)采集一般分為Sidecar和DaemonSet兩種方式。主動(dòng)推送包括 DockerEngine 推送和業(yè)務(wù)直推。寫(xiě)兩種方式。
總結一下:
各種采集方法的詳細對比如下:
DockerEngine 業(yè)務(wù)直寫(xiě) DaemonSet 方法 Sidecar 方法
采集日志類(lèi)型
標準輸出
業(yè)務(wù)日志
標準輸出 + 部分文件
文檔
部署和維護
低原生支持
低,只維護配置文件
一般需要維護DaemonSet
更高,每個(gè)需要采集日志的POD都需要部署一個(gè)sidecar容器
日志分類(lèi)存儲
達不到
業(yè)務(wù)獨立配置
一般可以通過(guò)容器/路徑等方式進(jìn)行映射。
每個(gè) POD 都可以單獨配置以實(shí)現高靈活性
多租戶(hù)隔離
虛弱的
弱,日志直寫(xiě)會(huì )和業(yè)務(wù)邏輯競爭資源
一般只通過(guò)配置之間的隔離
強,通過(guò)容器隔離,資源可單獨分配
支持集群大小
無(wú)限本地存儲,如果使用syslog和fluentd,會(huì )有單點(diǎn)限制
無(wú)限
取決于配置的數量
無(wú)限
資源占用
低,碼頭工人
引擎提供
總體最低,節省 采集 開(kāi)銷(xiāo)
較低,每個(gè)節點(diǎn)運行一個(gè)容器
更高,每個(gè) POD 運行一個(gè)容器
查詢(xún)方便
低,只能grep原創(chuàng )日志
高,可根據業(yè)務(wù)特點(diǎn)定制
高,可進(jìn)行自定義查詢(xún)和統計
高,可根據業(yè)務(wù)特點(diǎn)定制
可定制性
低的
高,可自由擴展
低的
高,每個(gè) POD 單獨配置
耦合
高,強綁定DockerEngine,修改需要重啟DockerEngine
高,采集模塊修改/升級需要重新發(fā)布業(yè)務(wù)
低,代理可以獨立升級
一般Sidecar服務(wù)對應的默認采集Agent升級也會(huì )重啟(有一些擴展包可以支持Sidecar熱升級)
適用場(chǎng)景
測試、POC等非生產(chǎn)場(chǎng)景
對性能要求極高的場(chǎng)景
日志分類(lèi)清晰、功能單一的集群
大型混合 PAAS 集群
日志輸出:標準輸出或文件
與虛擬機/物理機不同,K8s 容器提供標準輸出和文件。在容器中,標準輸出直接將日志輸出到stdout或stderr,而DockerEngine接管stdout和stderr文件描述符,收到日志后根據DockerEngine配置的LogDriver規則進(jìn)行處理;日志打印到文件的方式與虛擬機/物理機基本相似,只是日志可以使用不同的存儲方式,比如默認存儲、EmptyDir、HostVolume、NFS等。
雖然 Docker 官方推薦使用 Stdout 打印日志,但大家需要注意:這個(gè)推薦是基于容器僅作為簡(jiǎn)單應用使用的場(chǎng)景。在實(shí)際業(yè)務(wù)場(chǎng)景中,我們還是建議大家盡量使用文件方式。主要原因有以下幾點(diǎn):
因此,我們建議在線(xiàn)應用使用文件輸出日志,而Stdout僅用于功能單一或部分K8s系統/運維組件的應用。
CICD 集成:日志記錄操作員
Kubernetes提供了標準化的業(yè)務(wù)部署方式,可以通過(guò)yaml(K8s API)聲明路由規則、暴露服務(wù)、掛載存儲、運行業(yè)務(wù)、定義伸縮規則等,因此Kubernetes很容易與CICD系統集成。日志采集也是運維監控過(guò)程的重要組成部分。必須實(shí)時(shí)采集業(yè)務(wù)上線(xiàn)后的所有日志。
原來(lái)的方法是在發(fā)布后手動(dòng)部署log采集的邏輯。這種方式需要人工干預,違背了CICD自動(dòng)化的目的;為了實(shí)現自動(dòng)化,有人開(kāi)始根據日志打包API/SDK采集發(fā)布后通過(guò)CICD的webhook調用自動(dòng)部署的服務(wù),但這種方式開(kāi)發(fā)成本高。
在 Kubernetes 中,集成日志最標準的方式是在 Kubernetes 系統中注冊一個(gè)新資源,并以 Operator(CRD)的形式對其進(jìn)行管理和維護。這樣CICD系統就不需要額外開(kāi)發(fā),部署到Kubernetes系統時(shí)只需要附加日志相關(guān)的配置即可。
Kubernetes 日志采集 方案
早在 Kubernetes 出現之前,我們就開(kāi)始為容器環(huán)境開(kāi)發(fā) log采集 解決方案。隨著(zhù)K8s的逐漸穩定,我們開(kāi)始將很多業(yè)務(wù)遷移到K8s平臺上,所以我們也在之前的基礎上開(kāi)發(fā)了一套。K8s 上的 log采集 方案。主要功能有:
安裝日志采集組件
目前,這個(gè)采集解決方案已經(jīng)對外開(kāi)放。我們提供 Helm 安裝包,收錄 Logtail 的 DaemonSet、AliyunlogConfig 的 CRD 聲明和 CRD Controller。安裝后,可以直接使用 DaemonSet 采集 和 CRD 配置。安裝方法如下:
當阿里云Kubernetes集群?jiǎn)?dòng)時(shí),您可以選擇安裝它,這樣在創(chuàng )建集群時(shí)會(huì )自動(dòng)安裝上述組件。如果打開(kāi)的時(shí)候沒(méi)有安裝,可以手動(dòng)安裝;如果是自建Kubernetes,無(wú)論是在阿里云上自建還是在其他云還是離線(xiàn),也可以使用這個(gè)采集方案,具體安裝方法參考自建Kubernetes安裝。
上述組件安裝完成后,Logtail和對應的Controller就會(huì )在集群中運行,但是這些組件默認沒(méi)有采集任何日志,需要將日志采集規則配置為采集@ > 指定各種日志的Pod。
采集規則配置:環(huán)境變量或CRD
除了在日志服務(wù)控制臺上手動(dòng)配置外,Kubernetes 還支持另外兩種配置方式:環(huán)境變量和 CRD。
該方法部署簡(jiǎn)單,學(xué)習成本低,易于使用;但是可以支持的配置規則很少,很多高級配置(如解析方式、過(guò)濾方式、黑白名單等)都不支持,而且這種聲明方式也不支持修改/刪除,每個(gè)修改實(shí)際上創(chuàng )建了一個(gè)新的 采集 配置。歷史采集配置需要手動(dòng)清理,否則會(huì )造成資源浪費。
比如下面的例子是部署一個(gè)容器的stdout采集,其中定義需要stdout和stderr采集,排除環(huán)境變量中收錄COLLEXT_STDOUT_FLAG: false的容器。
基于CRD的配置方式以Kubernetes標準擴展資源的方式進(jìn)行管理,支持配置的完整語(yǔ)義的增刪改查,支持各種高級配置。這是我們強烈推薦的 采集 配置方法。
采集推薦的規則配置方式
在實(shí)際應用場(chǎng)景中,一般使用 DaemonSet 或者 DaemonSet 和 Sidecar 的混合。DaemonSet 的優(yōu)點(diǎn)是資源利用率高,但存在一個(gè)問(wèn)題,DaemonSet 的所有 Logtail 共享全局配置,而單個(gè) Logtail 的配置支持有上限。因此,它無(wú)法支持具有大量應用程序的集群。
以上是我們給出的推薦配置方式。核心思想是:
練習 1 - 中小型集群
大多數 Kubernetes 集群都是中小型的。中小企業(yè)沒(méi)有明確的定義。一般應用數量小于500,節點(diǎn)規模小于1000。沒(méi)有功能清晰的Kubernetes平臺運維。這個(gè)場(chǎng)景的應用數量不是特別多,DaemonSet可以支持所有的采集配置:
練習 2 - 大型集群
對于一些用作PaaS平臺的大型/超大型集群,一般業(yè)務(wù)在1000以上,節點(diǎn)規模也在1000以上,并且有專(zhuān)門(mén)的Kubernetes平臺運維人員。該場(chǎng)景對應用數量沒(méi)有限制,DaemonSet無(wú)法支持,所以必須使用Sidecar方式??傮w規劃如下:
有一個(gè)阿里團隊需要你!
云原生應用平臺誠邀Kubernetes/容器/Serverless/應用交付技術(shù)領(lǐng)域的專(zhuān)家(P7-P8)加入。
簡(jiǎn)歷投遞:xining.zj AT。
“阿里巴巴云原生專(zhuān)注于微服務(wù)、Serverless、容器、Service Mesh等技術(shù)領(lǐng)域,關(guān)注流行的云原生技術(shù)趨勢,大規模落地云原生實(shí)踐,是懂云的技術(shù)圈——本地開(kāi)發(fā)人員最好?!? 查看全部
自動(dòng)采集編寫(xiě)(
6個(gè)K8s日志系統建設中的典型問(wèn)題,你遇到過(guò)幾個(gè)?)

作者 | 元一阿里云存儲服務(wù)技術(shù)專(zhuān)家
簡(jiǎn)介:上一篇文章主要介紹了Kubernetes日志輸出的一些注意事項。日志輸出的最終目的是做統一的采集和分析。在Kubernetes中,記錄采集的方式與普通虛擬機有很大不同,相對實(shí)現難度和部署成本也略高,但如果使用得當,自動(dòng)化程度比傳統方式高,運維成本更低。本文是日志系列文章的第四篇。
第一篇:《K8s日志系統建設中的6個(gè)典型問(wèn)題,你遇到過(guò)幾個(gè)?》
第二篇:《一篇文章理解K8s日志系統的設計與實(shí)踐》
第三篇:《解決K8s中日志輸出問(wèn)題的9個(gè)技巧》
Kubernetes 日志采集 難點(diǎn)
在 Kubernetes 中,log采集 比傳統的虛擬機和物理機要復雜得多。最根本的原因是Kubernetes屏蔽了底層異常,提供了更細粒度的資源調度,向上提供了一個(gè)穩定動(dòng)態(tài)的環(huán)境。因此,日志采集面臨著(zhù)更豐富、更動(dòng)態(tài)的環(huán)境,需要考慮的點(diǎn)也更多。
例如:
Kubernetes 傳統方式
日志類(lèi)型
文件、標準輸出、主機文件、日志
檔案、日記
日志源
業(yè)務(wù)容器、系統組件、主機
商務(wù),主持人
采集如何
Agent (Sidecar, DaemonSet), Direct Write (DockerEngine, Business)
代理,直寫(xiě)
獨立應用程序的數量
10-100
1-10
應用動(dòng)態(tài)
高的
低的
節點(diǎn)動(dòng)態(tài)
高的
低的
采集部署方式
手動(dòng),Yaml
手動(dòng), 定制
采集模式:主動(dòng)或被動(dòng)
日志采集方法有兩種:被動(dòng)采集和主動(dòng)推送。在K8s中,被動(dòng)采集一般分為Sidecar和DaemonSet兩種方式。主動(dòng)推送包括 DockerEngine 推送和業(yè)務(wù)直推。寫(xiě)兩種方式。

總結一下:
各種采集方法的詳細對比如下:
DockerEngine 業(yè)務(wù)直寫(xiě) DaemonSet 方法 Sidecar 方法
采集日志類(lèi)型
標準輸出
業(yè)務(wù)日志
標準輸出 + 部分文件
文檔
部署和維護
低原生支持
低,只維護配置文件
一般需要維護DaemonSet
更高,每個(gè)需要采集日志的POD都需要部署一個(gè)sidecar容器
日志分類(lèi)存儲
達不到
業(yè)務(wù)獨立配置
一般可以通過(guò)容器/路徑等方式進(jìn)行映射。
每個(gè) POD 都可以單獨配置以實(shí)現高靈活性
多租戶(hù)隔離
虛弱的
弱,日志直寫(xiě)會(huì )和業(yè)務(wù)邏輯競爭資源
一般只通過(guò)配置之間的隔離
強,通過(guò)容器隔離,資源可單獨分配
支持集群大小
無(wú)限本地存儲,如果使用syslog和fluentd,會(huì )有單點(diǎn)限制
無(wú)限
取決于配置的數量
無(wú)限
資源占用
低,碼頭工人
引擎提供
總體最低,節省 采集 開(kāi)銷(xiāo)
較低,每個(gè)節點(diǎn)運行一個(gè)容器
更高,每個(gè) POD 運行一個(gè)容器
查詢(xún)方便
低,只能grep原創(chuàng )日志
高,可根據業(yè)務(wù)特點(diǎn)定制
高,可進(jìn)行自定義查詢(xún)和統計
高,可根據業(yè)務(wù)特點(diǎn)定制
可定制性
低的
高,可自由擴展
低的
高,每個(gè) POD 單獨配置
耦合
高,強綁定DockerEngine,修改需要重啟DockerEngine
高,采集模塊修改/升級需要重新發(fā)布業(yè)務(wù)
低,代理可以獨立升級
一般Sidecar服務(wù)對應的默認采集Agent升級也會(huì )重啟(有一些擴展包可以支持Sidecar熱升級)
適用場(chǎng)景
測試、POC等非生產(chǎn)場(chǎng)景
對性能要求極高的場(chǎng)景
日志分類(lèi)清晰、功能單一的集群
大型混合 PAAS 集群
日志輸出:標準輸出或文件
與虛擬機/物理機不同,K8s 容器提供標準輸出和文件。在容器中,標準輸出直接將日志輸出到stdout或stderr,而DockerEngine接管stdout和stderr文件描述符,收到日志后根據DockerEngine配置的LogDriver規則進(jìn)行處理;日志打印到文件的方式與虛擬機/物理機基本相似,只是日志可以使用不同的存儲方式,比如默認存儲、EmptyDir、HostVolume、NFS等。
雖然 Docker 官方推薦使用 Stdout 打印日志,但大家需要注意:這個(gè)推薦是基于容器僅作為簡(jiǎn)單應用使用的場(chǎng)景。在實(shí)際業(yè)務(wù)場(chǎng)景中,我們還是建議大家盡量使用文件方式。主要原因有以下幾點(diǎn):
因此,我們建議在線(xiàn)應用使用文件輸出日志,而Stdout僅用于功能單一或部分K8s系統/運維組件的應用。
CICD 集成:日志記錄操作員

Kubernetes提供了標準化的業(yè)務(wù)部署方式,可以通過(guò)yaml(K8s API)聲明路由規則、暴露服務(wù)、掛載存儲、運行業(yè)務(wù)、定義伸縮規則等,因此Kubernetes很容易與CICD系統集成。日志采集也是運維監控過(guò)程的重要組成部分。必須實(shí)時(shí)采集業(yè)務(wù)上線(xiàn)后的所有日志。
原來(lái)的方法是在發(fā)布后手動(dòng)部署log采集的邏輯。這種方式需要人工干預,違背了CICD自動(dòng)化的目的;為了實(shí)現自動(dòng)化,有人開(kāi)始根據日志打包API/SDK采集發(fā)布后通過(guò)CICD的webhook調用自動(dòng)部署的服務(wù),但這種方式開(kāi)發(fā)成本高。
在 Kubernetes 中,集成日志最標準的方式是在 Kubernetes 系統中注冊一個(gè)新資源,并以 Operator(CRD)的形式對其進(jìn)行管理和維護。這樣CICD系統就不需要額外開(kāi)發(fā),部署到Kubernetes系統時(shí)只需要附加日志相關(guān)的配置即可。
Kubernetes 日志采集 方案

早在 Kubernetes 出現之前,我們就開(kāi)始為容器環(huán)境開(kāi)發(fā) log采集 解決方案。隨著(zhù)K8s的逐漸穩定,我們開(kāi)始將很多業(yè)務(wù)遷移到K8s平臺上,所以我們也在之前的基礎上開(kāi)發(fā)了一套。K8s 上的 log采集 方案。主要功能有:
安裝日志采集組件
目前,這個(gè)采集解決方案已經(jīng)對外開(kāi)放。我們提供 Helm 安裝包,收錄 Logtail 的 DaemonSet、AliyunlogConfig 的 CRD 聲明和 CRD Controller。安裝后,可以直接使用 DaemonSet 采集 和 CRD 配置。安裝方法如下:
當阿里云Kubernetes集群?jiǎn)?dòng)時(shí),您可以選擇安裝它,這樣在創(chuàng )建集群時(shí)會(huì )自動(dòng)安裝上述組件。如果打開(kāi)的時(shí)候沒(méi)有安裝,可以手動(dòng)安裝;如果是自建Kubernetes,無(wú)論是在阿里云上自建還是在其他云還是離線(xiàn),也可以使用這個(gè)采集方案,具體安裝方法參考自建Kubernetes安裝。
上述組件安裝完成后,Logtail和對應的Controller就會(huì )在集群中運行,但是這些組件默認沒(méi)有采集任何日志,需要將日志采集規則配置為采集@ > 指定各種日志的Pod。
采集規則配置:環(huán)境變量或CRD
除了在日志服務(wù)控制臺上手動(dòng)配置外,Kubernetes 還支持另外兩種配置方式:環(huán)境變量和 CRD。
該方法部署簡(jiǎn)單,學(xué)習成本低,易于使用;但是可以支持的配置規則很少,很多高級配置(如解析方式、過(guò)濾方式、黑白名單等)都不支持,而且這種聲明方式也不支持修改/刪除,每個(gè)修改實(shí)際上創(chuàng )建了一個(gè)新的 采集 配置。歷史采集配置需要手動(dòng)清理,否則會(huì )造成資源浪費。

比如下面的例子是部署一個(gè)容器的stdout采集,其中定義需要stdout和stderr采集,排除環(huán)境變量中收錄COLLEXT_STDOUT_FLAG: false的容器。
基于CRD的配置方式以Kubernetes標準擴展資源的方式進(jìn)行管理,支持配置的完整語(yǔ)義的增刪改查,支持各種高級配置。這是我們強烈推薦的 采集 配置方法。

采集推薦的規則配置方式

在實(shí)際應用場(chǎng)景中,一般使用 DaemonSet 或者 DaemonSet 和 Sidecar 的混合。DaemonSet 的優(yōu)點(diǎn)是資源利用率高,但存在一個(gè)問(wèn)題,DaemonSet 的所有 Logtail 共享全局配置,而單個(gè) Logtail 的配置支持有上限。因此,它無(wú)法支持具有大量應用程序的集群。
以上是我們給出的推薦配置方式。核心思想是:
練習 1 - 中小型集群

大多數 Kubernetes 集群都是中小型的。中小企業(yè)沒(méi)有明確的定義。一般應用數量小于500,節點(diǎn)規模小于1000。沒(méi)有功能清晰的Kubernetes平臺運維。這個(gè)場(chǎng)景的應用數量不是特別多,DaemonSet可以支持所有的采集配置:
練習 2 - 大型集群

對于一些用作PaaS平臺的大型/超大型集群,一般業(yè)務(wù)在1000以上,節點(diǎn)規模也在1000以上,并且有專(zhuān)門(mén)的Kubernetes平臺運維人員。該場(chǎng)景對應用數量沒(méi)有限制,DaemonSet無(wú)法支持,所以必須使用Sidecar方式??傮w規劃如下:
有一個(gè)阿里團隊需要你!
云原生應用平臺誠邀Kubernetes/容器/Serverless/應用交付技術(shù)領(lǐng)域的專(zhuān)家(P7-P8)加入。
簡(jiǎn)歷投遞:xining.zj AT。

“阿里巴巴云原生專(zhuān)注于微服務(wù)、Serverless、容器、Service Mesh等技術(shù)領(lǐng)域,關(guān)注流行的云原生技術(shù)趨勢,大規模落地云原生實(shí)踐,是懂云的技術(shù)圈——本地開(kāi)發(fā)人員最好?!?
自動(dòng)采集編寫(xiě)(提下一個(gè)牛逼的技巧:獨創(chuàng )屬性欄文字翻譯機制)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 156 次瀏覽 ? 2022-04-04 03:04
一、前言
前面說(shuō)過(guò),Qt的屬性機制太強大了,這次的動(dòng)態(tài)屬性功能就是要讓它爆炸。很難想象widget->setProperty("value", value) 只需要一行代碼就可以完成;沒(méi)錯,就是這么簡(jiǎn)單,調用弱屬性機制,可以直接控制控件中的所有屬性,設計這個(gè)機制的人絕對是天才,直接跪了。至于具體的底層是如何實(shí)現的,這個(gè)可以忽略,也沒(méi)有太多精力去研究Qt的源碼。源代碼非常大。研究源碼最快的方法是直接搜索和定位對應的文件。除了提供文本框輸入值來(lái)動(dòng)態(tài)改變控件屬性,這個(gè)設計器還提供了滑塊,
這里不得不提下一個(gè)牛逼的技巧:QLabel有三種設置文字的方式,掌握Qt的屬性系統,從一個(gè)案例推斷別人,可以做出很多效果。
ui->label->setStyleSheet("qproperty-text:hello;");
ui->label->setProperty("text", "hello");
ui->label->setText("hello");
體驗地址:???????
????????
二、實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認內置控件超過(guò)120個(gè)。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得你得到。在右側的中文屬性欄中,更改對應的屬性立即應用到對應的選中控件,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性欄文本翻譯映射機制非常高效,可以很方便的擴展其他語(yǔ)言的屬性欄。自動(dòng)提取所有控件的屬性并顯示在右側屬性欄上,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件。當前畫(huà)布的所有控制配置信息都可以導出為一個(gè)xml文件??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件。通過(guò)拉動(dòng)滑塊、選中模擬數據復選框并輸入文本框,可以通過(guò)三種方式生成數據并應用所有控件。該控件支持八個(gè)方向的拉動(dòng)和調整大小,適應任意分辨率,并可微調鍵盤(pán)的上下左右位置。開(kāi)放了串口采集、網(wǎng)絡(luò )采集、數據庫采集三種方式設置數據。代碼非常簡(jiǎn)潔,注釋也很詳細??梢宰鳛榕渲玫脑?,自行擴展更多功能。用純 Qt 編寫(xiě),它支持任何 Qt 版本 + 任何編譯器 + 任何系統。三、渲染
四、核心代碼
void frmMain::initForm()
{
//初始化中英屬性對照表
QtPropertyName::initMap();
//設置沒(méi)有關(guān)閉按鈕
ui->dockWidgetControl->setFixedWidth(200);
ui->dockWidgetData->setFixedWidth(200);
ui->dockWidgetProperty->setFixedWidth(220);
ui->dockWidgetControl->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetProperty->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetData->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
this->tabifyDockWidget(ui->dockWidgetControl, ui->dockWidgetData);
ui->dockWidgetControl->raise();
//綁定數據源窗體的數值改變信號
connect(ui->dockWidgetContentsData, SIGNAL(valueChanged(int)), this, SLOT(valueChanged(int)));
//允許拖曳接收
this->setAcceptDrops(true);
bgPix = QPixmap(":/image/bg.png");
//居中顯示窗體
int frmX = this->width();
int frmY = this->height();
QDesktopWidget w;
int deskWidth = w.availableGeometry().width();
int deskHeight = w.availableGeometry().height();
QPoint movePoint(deskWidth / 2 - frmX / 2, deskHeight / 2 - frmY / 2);
this->move(movePoint);
//初始化隨機數種子
QTime t = QTime::currentTime();
qsrand(t.msec() + t.second() * 1000);
//定時(shí)器模擬隨機值賦值給控件
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(setValue()));
timer->setInterval(2000);
}
void frmMain::setValue()
{
int value = qrand() % 100;
valueChanged(value);
}
void frmMain::valueChanged(int value)
{
QList widgets = ui->centralwidget->findChildren();
foreach (QWidget *widget, widgets) {
widget->setProperty("value", value);
}
}
五、控件介紹 150多個(gè)精美控件,涵蓋各種儀表板、進(jìn)度條、進(jìn)度球、指南針、圖形、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)都可以獨立成單獨的控件,零耦合,每個(gè)控件都有頭文件和實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,代碼量少。qwt 的控制類(lèi)是互鎖和高度耦合的。如果要使用其中一個(gè)控件,則必須收錄所有代碼。全部純Qt編寫(xiě),QWidget+QPainter繪圖,支持Qt4.6到Qt<任意Qt版本 @5.12,支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置的一樣使用在控件中。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。
<p>一些控件提供了多種樣式可供選擇,還有多種指示器樣式可供選擇。所有控件都適應表格拉伸變化。集成自定義控件屬性設計器,支持拖放設計,所見(jiàn)即所得,支持xml格式導入導出。自帶activex控件demo,所有控件都可以直接在ie瀏覽器中運行。整合fontawesome圖形字體+阿里巴巴iconfont采集的數百種圖形字體,享受圖形字體帶來(lái)的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll左右等),可以直接集成到qtcreator中進(jìn)行拖拽設計。已經(jīng)有qml版本,以后會(huì )考慮pyqt版本,如果用戶(hù)需求大的話(huà)。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前已經(jīng)提供了26個(gè)版本的dll,包括qt 查看全部
自動(dòng)采集編寫(xiě)(提下一個(gè)牛逼的技巧:獨創(chuàng )屬性欄文字翻譯機制)
一、前言
前面說(shuō)過(guò),Qt的屬性機制太強大了,這次的動(dòng)態(tài)屬性功能就是要讓它爆炸。很難想象widget->setProperty("value", value) 只需要一行代碼就可以完成;沒(méi)錯,就是這么簡(jiǎn)單,調用弱屬性機制,可以直接控制控件中的所有屬性,設計這個(gè)機制的人絕對是天才,直接跪了。至于具體的底層是如何實(shí)現的,這個(gè)可以忽略,也沒(méi)有太多精力去研究Qt的源碼。源代碼非常大。研究源碼最快的方法是直接搜索和定位對應的文件。除了提供文本框輸入值來(lái)動(dòng)態(tài)改變控件屬性,這個(gè)設計器還提供了滑塊,
這里不得不提下一個(gè)牛逼的技巧:QLabel有三種設置文字的方式,掌握Qt的屬性系統,從一個(gè)案例推斷別人,可以做出很多效果。
ui->label->setStyleSheet("qproperty-text:hello;");
ui->label->setProperty("text", "hello");
ui->label->setText("hello");
體驗地址:???????
????????
二、實(shí)現的功能自動(dòng)加載插件文件中的所有控件生成列表,默認內置控件超過(guò)120個(gè)。拖到畫(huà)布上自動(dòng)生成對應的控件,所見(jiàn)即所得你得到。在右側的中文屬性欄中,更改對應的屬性立即應用到對應的選中控件,直觀(guān)簡(jiǎn)潔,非常適合小白使用。獨創(chuàng )的屬性欄文本翻譯映射機制非常高效,可以很方便的擴展其他語(yǔ)言的屬性欄。自動(dòng)提取所有控件的屬性并顯示在右側屬性欄上,包括枚舉值下拉框。支持手動(dòng)選擇插件文件和外部導入插件文件。當前畫(huà)布的所有控制配置信息都可以導出為一個(gè)xml文件??梢允謩?dòng)選擇xml文件打開(kāi)控件布局,根據xml文件自動(dòng)加載控件。通過(guò)拉動(dòng)滑塊、選中模擬數據復選框并輸入文本框,可以通過(guò)三種方式生成數據并應用所有控件。該控件支持八個(gè)方向的拉動(dòng)和調整大小,適應任意分辨率,并可微調鍵盤(pán)的上下左右位置。開(kāi)放了串口采集、網(wǎng)絡(luò )采集、數據庫采集三種方式設置數據。代碼非常簡(jiǎn)潔,注釋也很詳細??梢宰鳛榕渲玫脑?,自行擴展更多功能。用純 Qt 編寫(xiě),它支持任何 Qt 版本 + 任何編譯器 + 任何系統。三、渲染

四、核心代碼
void frmMain::initForm()
{
//初始化中英屬性對照表
QtPropertyName::initMap();
//設置沒(méi)有關(guān)閉按鈕
ui->dockWidgetControl->setFixedWidth(200);
ui->dockWidgetData->setFixedWidth(200);
ui->dockWidgetProperty->setFixedWidth(220);
ui->dockWidgetControl->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetProperty->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
ui->dockWidgetData->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
this->tabifyDockWidget(ui->dockWidgetControl, ui->dockWidgetData);
ui->dockWidgetControl->raise();
//綁定數據源窗體的數值改變信號
connect(ui->dockWidgetContentsData, SIGNAL(valueChanged(int)), this, SLOT(valueChanged(int)));
//允許拖曳接收
this->setAcceptDrops(true);
bgPix = QPixmap(":/image/bg.png");
//居中顯示窗體
int frmX = this->width();
int frmY = this->height();
QDesktopWidget w;
int deskWidth = w.availableGeometry().width();
int deskHeight = w.availableGeometry().height();
QPoint movePoint(deskWidth / 2 - frmX / 2, deskHeight / 2 - frmY / 2);
this->move(movePoint);
//初始化隨機數種子
QTime t = QTime::currentTime();
qsrand(t.msec() + t.second() * 1000);
//定時(shí)器模擬隨機值賦值給控件
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(setValue()));
timer->setInterval(2000);
}
void frmMain::setValue()
{
int value = qrand() % 100;
valueChanged(value);
}
void frmMain::valueChanged(int value)
{
QList widgets = ui->centralwidget->findChildren();
foreach (QWidget *widget, widgets) {
widget->setProperty("value", value);
}
}
五、控件介紹 150多個(gè)精美控件,涵蓋各種儀表板、進(jìn)度條、進(jìn)度球、指南針、圖形、標尺、溫度計、導航條、導航條、flatui、高亮按鈕、滑動(dòng)選擇器、農歷等。遠遠超過(guò)qwt集成的控件數量。每個(gè)類(lèi)都可以獨立成單獨的控件,零耦合,每個(gè)控件都有頭文件和實(shí)現文件,不依賴(lài)其他文件,方便單個(gè)控件以源代碼的形式集成到項目中,代碼量少。qwt 的控制類(lèi)是互鎖和高度耦合的。如果要使用其中一個(gè)控件,則必須收錄所有代碼。全部純Qt編寫(xiě),QWidget+QPainter繪圖,支持Qt4.6到Qt<任意Qt版本 @5.12,支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置的一樣使用在控件中。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。12、支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持mingw、msvc、gcc等編譯器,支持windows+linux+Mac+embedded linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。gcc等編譯器,支持windows+linux+Mac+嵌入式linux等任何操作系統,無(wú)亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。支持windows+linux+Mac+嵌入式linux等任意操作系統,無(wú)亂碼,可直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。沒(méi)有亂碼,可以直接集成到Qt Creator中,像內置控件一樣使用。大多數效果只需要設置幾個(gè)屬性,非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。這非常方便。每個(gè)控件都有對應的單獨的DEMO收錄控件的源代碼,方便參考和使用。它還提供了一個(gè)集成的 DEMO,供所有控件使用。每個(gè)控件的源碼都有詳細的中文注釋?zhuān)凑战y一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。按照統一的設計規范編寫(xiě),方便學(xué)習自定義控件的編寫(xiě)。每個(gè)控件的默認顏色和demo對應的顏色都非常漂亮。超過(guò) 130 個(gè)可見(jiàn)控件,6 個(gè)不可見(jiàn)控件。
<p>一些控件提供了多種樣式可供選擇,還有多種指示器樣式可供選擇。所有控件都適應表格拉伸變化。集成自定義控件屬性設計器,支持拖放設計,所見(jiàn)即所得,支持xml格式導入導出。自帶activex控件demo,所有控件都可以直接在ie瀏覽器中運行。整合fontawesome圖形字體+阿里巴巴iconfont采集的數百種圖形字體,享受圖形字體帶來(lái)的樂(lè )趣。所有控件最后生成一個(gè)動(dòng)態(tài)庫文件(dll左右等),可以直接集成到qtcreator中進(jìn)行拖拽設計。已經(jīng)有qml版本,以后會(huì )考慮pyqt版本,如果用戶(hù)需求大的話(huà)。自定義控件插件開(kāi)放使用動(dòng)態(tài)庫(永久免費),沒(méi)有任何后門(mén)和限制,請放心使用。目前已經(jīng)提供了26個(gè)版本的dll,包括qt
自動(dòng)采集編寫(xiě)(SQLE的Java應用零成本地接入了SQLE(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 163 次瀏覽 ? 2022-03-30 15:01
* 愛(ài)客盛開(kāi)源社區出品,原創(chuàng )內容未經(jīng)授權不得使用。如需轉載,請聯(lián)系編輯并注明出處。
一. SQLE 簡(jiǎn)介
SQLE是艾克森開(kāi)源社區發(fā)起的一個(gè)面向數據庫開(kāi)發(fā)和管理人員的項目。實(shí)現SQL“開(kāi)發(fā)”-“測試”-“上線(xiàn)”的全流程覆蓋,對資源和權限進(jìn)行精細化管理,兼顧簡(jiǎn)潔和高效。,一個(gè)易于維護和擴展的開(kāi)源項目,旨在為用戶(hù)提供一套安全、可靠、自控的SQL質(zhì)量控制解決方案。
在 1.2202.0 的 2 月版本中:
更多詳細信息可在以下位置找到: 。
二.Java 應用程序審計簡(jiǎn)介
考慮到很多用戶(hù)在實(shí)際生產(chǎn)中部署了大量基于Java的應用和服務(wù),有的涉及到極其重要且不間斷的核心業(yè)務(wù)。從 1.2202.0 版本開(kāi)始,SQLE 支持 Java 應用程序的 SQL 審計。并且在完成核心功能的基礎上,支持零成本接入Java應用。
SQLE的Java審計特性如下:
三.效果展示了預部署的環(huán)境,需要連接的Java應用,以及對應的數據庫,并添加為數據源。為了演示,這里的 Java 項目是;為 Java 應用程序創(chuàng )建審計任務(wù);
啟動(dòng)應用程序;
SQLE_COLLECT_ENABLE=true \SQLE_HOST=XX.XX.XX.XX:10000 \
SQLE_TASK_NAME=surveryking_test \
SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
java -jar surveyking-v0.3.0-beta.4.jar \
--server.port=1991 \
--spring.datasource.url=jdbc:mysql://XX.XX.XX.XX:3306/surveyking \
--spring.datasource.username=root \
--spring.datasource.password=xxxxxx \
& >>/opt/surveyking/std.log
查看SQLE審計任務(wù)詳情界面,可以看到當前應用已經(jīng)執行的SQL;
查看審計報告,用戶(hù)可以通過(guò)審計任務(wù)的審計報告了解應用的SQL是否符合預設的審計規則,從而及時(shí)做出調整。
在樣例Java應用首頁(yè)創(chuàng )建用戶(hù),然后可以觀(guān)察到審計任務(wù)對應的SQLE語(yǔ)句池中對應的INSERT語(yǔ)句。
同時(shí),用戶(hù)可以從語(yǔ)句池中的頁(yè)面快速感知應用程序中執行的SQL的語(yǔ)句分類(lèi)和統計。
結合上述示例步驟,Java 應用程序可以零成本訪(fǎng)問(wèn) SQLE。開(kāi)發(fā)者和DBA可以通過(guò)“審計報告”、“審計任務(wù)SQL語(yǔ)句池”等功能全面掌握應用中的SQL審計結果、執行狀態(tài)和統計信息,完成從“開(kāi)發(fā)”到“上線(xiàn)”的過(guò)程。SQL 質(zhì)量控制。
如果您想了解更多關(guān)于SQLE的更多功能和特性,請訪(fǎng)問(wèn)以下地址:
TypeAddressRepository 文檔發(fā)布信息 查看全部
自動(dòng)采集編寫(xiě)(SQLE的Java應用零成本地接入了SQLE(組圖))
* 愛(ài)客盛開(kāi)源社區出品,原創(chuàng )內容未經(jīng)授權不得使用。如需轉載,請聯(lián)系編輯并注明出處。
一. SQLE 簡(jiǎn)介
SQLE是艾克森開(kāi)源社區發(fā)起的一個(gè)面向數據庫開(kāi)發(fā)和管理人員的項目。實(shí)現SQL“開(kāi)發(fā)”-“測試”-“上線(xiàn)”的全流程覆蓋,對資源和權限進(jìn)行精細化管理,兼顧簡(jiǎn)潔和高效。,一個(gè)易于維護和擴展的開(kāi)源項目,旨在為用戶(hù)提供一套安全、可靠、自控的SQL質(zhì)量控制解決方案。
在 1.2202.0 的 2 月版本中:
更多詳細信息可在以下位置找到: 。
二.Java 應用程序審計簡(jiǎn)介
考慮到很多用戶(hù)在實(shí)際生產(chǎn)中部署了大量基于Java的應用和服務(wù),有的涉及到極其重要且不間斷的核心業(yè)務(wù)。從 1.2202.0 版本開(kāi)始,SQLE 支持 Java 應用程序的 SQL 審計。并且在完成核心功能的基礎上,支持零成本接入Java應用。
SQLE的Java審計特性如下:
三.效果展示了預部署的環(huán)境,需要連接的Java應用,以及對應的數據庫,并添加為數據源。為了演示,這里的 Java 項目是;為 Java 應用程序創(chuàng )建審計任務(wù);
啟動(dòng)應用程序;
SQLE_COLLECT_ENABLE=true \SQLE_HOST=XX.XX.XX.XX:10000 \
SQLE_TASK_NAME=surveryking_test \
SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
java -jar surveyking-v0.3.0-beta.4.jar \
--server.port=1991 \
--spring.datasource.url=jdbc:mysql://XX.XX.XX.XX:3306/surveyking \
--spring.datasource.username=root \
--spring.datasource.password=xxxxxx \
& >>/opt/surveyking/std.log
查看SQLE審計任務(wù)詳情界面,可以看到當前應用已經(jīng)執行的SQL;
查看審計報告,用戶(hù)可以通過(guò)審計任務(wù)的審計報告了解應用的SQL是否符合預設的審計規則,從而及時(shí)做出調整。
在樣例Java應用首頁(yè)創(chuàng )建用戶(hù),然后可以觀(guān)察到審計任務(wù)對應的SQLE語(yǔ)句池中對應的INSERT語(yǔ)句。
同時(shí),用戶(hù)可以從語(yǔ)句池中的頁(yè)面快速感知應用程序中執行的SQL的語(yǔ)句分類(lèi)和統計。
結合上述示例步驟,Java 應用程序可以零成本訪(fǎng)問(wèn) SQLE。開(kāi)發(fā)者和DBA可以通過(guò)“審計報告”、“審計任務(wù)SQL語(yǔ)句池”等功能全面掌握應用中的SQL審計結果、執行狀態(tài)和統計信息,完成從“開(kāi)發(fā)”到“上線(xiàn)”的過(guò)程。SQL 質(zhì)量控制。
如果您想了解更多關(guān)于SQLE的更多功能和特性,請訪(fǎng)問(wèn)以下地址:
TypeAddressRepository 文檔發(fā)布信息
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)autohotkey腳本的語(yǔ)法特性是什么?分兩步走)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2022-03-27 20:01
自動(dòng)采集編寫(xiě)autohotkey腳本的問(wèn)題,我覺(jué)得只要程序開(kāi)發(fā)者把autohotkey語(yǔ)言特性搞清楚了,那自動(dòng)機基本就入門(mén)了。分兩步走。一步是分析autohotkey腳本的語(yǔ)法特性,著(zhù)重研究如何簡(jiǎn)化過(guò)程。autohotkey內置了大量的編程技巧,閱讀autohotkey腳本可以幫助我們快速獲得大量工具方法,完成編程技巧。
這個(gè)其實(shí)很簡(jiǎn)單,看visualstudio的幫助文檔就可以了。另一步是訓練自己的編程思路,這部分需要大量的實(shí)踐才能在編程當中有所體會(huì )。這個(gè)就難了,剛開(kāi)始自己寫(xiě)一個(gè)自動(dòng)機的時(shí)候感覺(jué)很差,很多時(shí)候是寫(xiě)著(zhù)寫(xiě)著(zhù)就不想寫(xiě)了,做著(zhù)做著(zhù)又不想繼續寫(xiě)了。我也是受挫的最高記錄大概是寫(xiě)了兩天半的autohotkey腳本,在這些autohotkey腳本之中有很多單純靠體力的寫(xiě)法,有的是依靠編程語(yǔ)言特性搭建的輪子,還有的是自己造的輪子。
各種高級工具方法不說(shuō)了,非常多,有很多工具方法是其它編程語(yǔ)言調用系統提供的庫或者是其它autohotkey編譯器不能提供的。比如很多工具方法都能夠整合在hadoop里。一旦養成了思考編程邏輯的習慣,編程思路立刻就打開(kāi)了。其實(shí)新手一般面臨問(wèn)題都是沒(méi)有思路的,平時(shí)大家都這么自己養成習慣。另外一個(gè)非常重要的問(wèn)題就是看項目類(lèi)型。
不同的項目類(lèi)型訓練的深度是不一樣的。比如剛開(kāi)始訓練控制機器人的時(shí)候,訓練一個(gè)新的編程語(yǔ)言或許比讀一些經(jīng)典的控制語(yǔ)言教程更加有幫助。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)autohotkey腳本的語(yǔ)法特性是什么?分兩步走)
自動(dòng)采集編寫(xiě)autohotkey腳本的問(wèn)題,我覺(jué)得只要程序開(kāi)發(fā)者把autohotkey語(yǔ)言特性搞清楚了,那自動(dòng)機基本就入門(mén)了。分兩步走。一步是分析autohotkey腳本的語(yǔ)法特性,著(zhù)重研究如何簡(jiǎn)化過(guò)程。autohotkey內置了大量的編程技巧,閱讀autohotkey腳本可以幫助我們快速獲得大量工具方法,完成編程技巧。
這個(gè)其實(shí)很簡(jiǎn)單,看visualstudio的幫助文檔就可以了。另一步是訓練自己的編程思路,這部分需要大量的實(shí)踐才能在編程當中有所體會(huì )。這個(gè)就難了,剛開(kāi)始自己寫(xiě)一個(gè)自動(dòng)機的時(shí)候感覺(jué)很差,很多時(shí)候是寫(xiě)著(zhù)寫(xiě)著(zhù)就不想寫(xiě)了,做著(zhù)做著(zhù)又不想繼續寫(xiě)了。我也是受挫的最高記錄大概是寫(xiě)了兩天半的autohotkey腳本,在這些autohotkey腳本之中有很多單純靠體力的寫(xiě)法,有的是依靠編程語(yǔ)言特性搭建的輪子,還有的是自己造的輪子。
各種高級工具方法不說(shuō)了,非常多,有很多工具方法是其它編程語(yǔ)言調用系統提供的庫或者是其它autohotkey編譯器不能提供的。比如很多工具方法都能夠整合在hadoop里。一旦養成了思考編程邏輯的習慣,編程思路立刻就打開(kāi)了。其實(shí)新手一般面臨問(wèn)題都是沒(méi)有思路的,平時(shí)大家都這么自己養成習慣。另外一個(gè)非常重要的問(wèn)題就是看項目類(lèi)型。
不同的項目類(lèi)型訓練的深度是不一樣的。比如剛開(kāi)始訓練控制機器人的時(shí)候,訓練一個(gè)新的編程語(yǔ)言或許比讀一些經(jīng)典的控制語(yǔ)言教程更加有幫助。
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 140 次瀏覽 ? 2022-03-27 08:03
自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè),直接通過(guò)爬蟲(chóng)抓取論壇連載小說(shuō)就可以了。首先登錄kindle然后設置。登錄kindle后,選擇連載列表上方紅色框標注的按鈕,點(diǎn)擊后頁(yè)面會(huì )打開(kāi),點(diǎn)擊“查看文檔”,在跳轉的網(wǎng)站就可以進(jìn)行采集了。首先找到論壇版塊然后進(jìn)入,采集評論現在該文章不僅僅有評論,還有精選的小說(shuō)模板,也是非常的全的。
一般登錄后都會(huì )推薦論壇模板,你可以采集出來(lái),到時(shí)候進(jìn)行爬取。pptv和愛(ài)奇藝是主要的評論來(lái)源。你可以登錄應用商店,搜索“百度文庫”等等評論資源。希望能幫到你。
--首先你需要按我步驟設置,根據步驟,第一步你需要先登錄網(wǎng)站kindle商店連接:。第二步進(jìn)入到它的論壇文庫頁(yè)面。第三步,進(jìn)入kindle的論壇,打開(kāi)小說(shuō)類(lèi)目,然后打開(kāi)文檔。第四步,直接找到你想要下載的小說(shuō),點(diǎn)擊,找到那個(gè)下載框,如下圖所示:在下載框的上方有標注的一欄,點(diǎn)擊那個(gè)下載,直接按照步驟走,在下載的界面會(huì )彈出來(lái)一個(gè)頁(yè)面,點(diǎn)擊下載即可,不用管那個(gè)下載是不是有點(diǎn)中的問(wèn)題。第五步,下載成功,最后,點(diǎn)擊左上角,退出該頁(yè)面,就在我的電腦里看見(jiàn)了你下載的小說(shuō)了。 查看全部
自動(dòng)采集編寫(xiě)(自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè))
自動(dòng)采集編寫(xiě)爬蟲(chóng)程序--小說(shuō)類(lèi)最簡(jiǎn)單的一個(gè),直接通過(guò)爬蟲(chóng)抓取論壇連載小說(shuō)就可以了。首先登錄kindle然后設置。登錄kindle后,選擇連載列表上方紅色框標注的按鈕,點(diǎn)擊后頁(yè)面會(huì )打開(kāi),點(diǎn)擊“查看文檔”,在跳轉的網(wǎng)站就可以進(jìn)行采集了。首先找到論壇版塊然后進(jìn)入,采集評論現在該文章不僅僅有評論,還有精選的小說(shuō)模板,也是非常的全的。
一般登錄后都會(huì )推薦論壇模板,你可以采集出來(lái),到時(shí)候進(jìn)行爬取。pptv和愛(ài)奇藝是主要的評論來(lái)源。你可以登錄應用商店,搜索“百度文庫”等等評論資源。希望能幫到你。
--首先你需要按我步驟設置,根據步驟,第一步你需要先登錄網(wǎng)站kindle商店連接:。第二步進(jìn)入到它的論壇文庫頁(yè)面。第三步,進(jìn)入kindle的論壇,打開(kāi)小說(shuō)類(lèi)目,然后打開(kāi)文檔。第四步,直接找到你想要下載的小說(shuō),點(diǎn)擊,找到那個(gè)下載框,如下圖所示:在下載框的上方有標注的一欄,點(diǎn)擊那個(gè)下載,直接按照步驟走,在下載的界面會(huì )彈出來(lái)一個(gè)頁(yè)面,點(diǎn)擊下載即可,不用管那個(gè)下載是不是有點(diǎn)中的問(wèn)題。第五步,下載成功,最后,點(diǎn)擊左上角,退出該頁(yè)面,就在我的電腦里看見(jiàn)了你下載的小說(shuō)了。


