◆衛(wèi)錦
數(shù)據(jù)安全與云計(jì)算
一種新的基于網(wǎng)絡(luò)爬蟲的證券數(shù)據(jù)采集方法
◆衛(wèi)錦
(山西太原科技大學(xué) 山西 030024)
本文通過圖像序列化和宏錄制技術(shù)的結(jié)合,提出了一種通用的證券數(shù)據(jù)采集方法。這種方法具有很強(qiáng)的適用性和普適性,有助于滿足使用者個(gè)性化數(shù)據(jù)的采集需求,同時(shí)對使用者有較低的使用門檻。
數(shù)據(jù)采集;證券數(shù)據(jù);序列化;宏錄制
人工智能對當(dāng)今時(shí)代的影響越來越大,各個(gè)領(lǐng)域也越來越多地將人工智能技術(shù)應(yīng)用到本領(lǐng)域中。對于人工智能技術(shù)來說,重要的前提之一是擁有足夠的數(shù)據(jù)量,所以數(shù)據(jù)采集就成了人工智能技術(shù)中的重要內(nèi)容之一。但是各領(lǐng)域中關(guān)于數(shù)據(jù)采集方法的討論比較少,大部分有關(guān)人工智能的文章是關(guān)于數(shù)據(jù)挖掘方法的討論。對于普通研究者,手中沒有足夠的數(shù)據(jù),就沒有辦法進(jìn)行下一步數(shù)據(jù)挖掘工作。針對此種情況,本文將以數(shù)據(jù)采集方法為研究內(nèi)容,提出一種新的數(shù)據(jù)采集方法,雖然該方法在本文中針對的是證券數(shù)據(jù)采集,但是也可擴(kuò)展到其他領(lǐng)域,具有一定的普適性。
隨著大數(shù)據(jù)、人工智能和區(qū)塊鏈等技術(shù)的不斷出現(xiàn),各行各業(yè)對數(shù)據(jù)的需求越來越大。尤其是在人工智能興起的時(shí)代,對數(shù)據(jù)規(guī)模的要求也越來越大,而常用的數(shù)據(jù)采集方法大多依賴于共享數(shù)據(jù)網(wǎng)站的 API 接口(如toshare)以及他人的數(shù)據(jù)分享,來源由他人控制,不能滿足一些有個(gè)性化數(shù)據(jù)采集需求的使用者。同時(shí),大部分?jǐn)?shù)據(jù)共享或者數(shù)據(jù)分享需要一定的資金支持,對于一些在校學(xué)生或者普通的研究者來說存在一定的壁壘。為了彌補(bǔ)這些不足,破除研究壁壘,本文提出了一種新的基于網(wǎng)絡(luò)爬蟲的證券數(shù)據(jù)采集方法,并以具體實(shí)踐論證該網(wǎng)絡(luò)爬蟲技術(shù)在證券數(shù)據(jù)采集中的可行性與實(shí)用性。該方法基于圖像序列化的技術(shù)與鼠標(biāo)宏錄制技術(shù)的結(jié)合,并將結(jié)合后的技術(shù)創(chuàng)新的應(yīng)用在證券數(shù)據(jù)采集工作中,取得了良好效果。
網(wǎng)絡(luò)爬蟲(又稱網(wǎng)絡(luò)蜘蛛、網(wǎng)絡(luò)機(jī)器人)是一種程序或腳本,根據(jù)一定的規(guī)則自動獲取萬維網(wǎng)的信息。網(wǎng)絡(luò)爬蟲可以自動查取 Web 的超鏈接結(jié)構(gòu),定位和檢索信息。它從網(wǎng)站的某個(gè)頁面開始,讀取網(wǎng)頁的內(nèi)容,在網(wǎng)頁中找到其他超鏈接,然后通過這些超鏈接找到下一個(gè)網(wǎng)頁。不斷前進(jìn),直到互聯(lián)網(wǎng)上的所有網(wǎng)頁都被抓取[1]。
通常意義上的網(wǎng)絡(luò)爬蟲是通過爬取html頁面內(nèi)的內(nèi)容來采集數(shù)據(jù)的,而這種方法需要對網(wǎng)站結(jié)構(gòu),相應(yīng)的爬取技術(shù)以及編寫語言都有一定的了解才能夠做到,需要大量的學(xué)習(xí)、測試,需要使用者花費(fèi)大量的時(shí)間精力。而本文提出的爬取技術(shù)脫離于網(wǎng)站結(jié)構(gòu),從圖像識別的角度出發(fā),通過圖像識別的方法爬取網(wǎng)頁內(nèi)容、數(shù)據(jù),方法簡單高效,具有一定的普適性和推廣價(jià)值。
圖像序列化是指將圖像數(shù)字化的過程,圖像通過序列化能夠?qū)D像的真實(shí)特征提取出來,配合濾波技術(shù)可以完整提取出目標(biāo)信息,進(jìn)而可以獲取圖像中感興趣的內(nèi)容[2]。本文通過圖像二值化來實(shí)現(xiàn)圖像序列化,具體的步驟分為兩步。
一般來說,圖像中的很多信息是沒有使用價(jià)值的,為了獲取感興趣的內(nèi)容,需要將圖像中除指定內(nèi)容外的其他內(nèi)容進(jìn)行過濾。在本文中采用的方法是閾值分割法,通過閾值分割法將指定顏色之外的其他顏色過濾去除,并將剩余顏色二值化[3]。
具體二值化方法是將選定顏色的顏色值設(shè)置為基值 B,通過迭代閾值[4]的方法找到合適的閾值P,將[B-P,B+P]范圍內(nèi)的顏色設(shè)定為指定顏色,將其他范圍內(nèi)的顏色設(shè)定為非必要顏色。將過濾后圖像中的指定顏色替換為白色(0),非必要顏色替換為黑色(255)。如圖 1 所示。
對于本文所處理的彩色圖片,顏色值的計(jì)算方法是將原圖中的選定顏色的 RGB 三通道顏色分量相加。
圖1 提取指定顏色內(nèi)容
網(wǎng)頁制作時(shí),顯示的字體在同一個(gè)內(nèi)容中一般是統(tǒng)一的,如圖1 中的數(shù)字的字體。并且每個(gè)字符所占寬度、高度是相等的,所以可以用一個(gè)固定長寬的像素矩陣代表一個(gè)字符,故可用如下方法將二值化后的圖片序列化。
如圖2所示,圖像為一個(gè) 4*6的像素矩陣,將其中二值化的像素矩陣序列化。序列化方法為,黑色取值為0,白色取值為1,圖例中序列化結(jié)果為 011010011001100110010110。將序列化后的結(jié)果與圖形庫中已有的序列進(jìn)行對比,如果圖形庫中存在則可判斷出該字符的內(nèi)容。如圖2中所示示例,如果圖形庫中已經(jīng)存在了 011010011001100110010110 序列,并且該序列代表的數(shù)字是0,則可判斷出該二值化像素矩陣代表的字符為0。
圖2 4*6二值化像素矩陣
圖形庫的更新依賴于使用者更新,需要使用者手動添加常用字符。對于證券數(shù)據(jù)采集的使用者來說,由于需要采集的數(shù)據(jù)大部分是一些數(shù)字,所以圖形庫添加的內(nèi)容相對較少,方法復(fù)雜度也相對較低。
宏錄制指的是將常用的操作存儲下來,方便重復(fù)執(zhí)行。宏錄制的特點(diǎn)是可以通過錄制一段宏來減少重復(fù)工作的工作量。大部分編程語言均可實(shí)現(xiàn)鼠標(biāo)移動等功能,本文采用的方法是通過 python 語言中的pymouse模塊中的 move 功能實(shí)現(xiàn)。
證券數(shù)據(jù)采集的特點(diǎn)是經(jīng)常需要采集一段時(shí)間內(nèi)的數(shù)據(jù),而網(wǎng)頁數(shù)據(jù)特點(diǎn)之一就是可以通過鼠標(biāo)移動來切換需要采集數(shù)據(jù)的時(shí)間。如圖3所示,通過鼠標(biāo)的移動,可完成不同時(shí)期證券數(shù)據(jù)的切換,從而實(shí)現(xiàn)采集數(shù)據(jù)的更新。大部分證券數(shù)據(jù)都有類似特征,都可以通過鼠標(biāo)移動來更新數(shù)據(jù)內(nèi)容。所以該特點(diǎn)在證券數(shù)據(jù)采集中具有一定的普遍性。
針對證券數(shù)據(jù)的特點(diǎn),可根據(jù)采集數(shù)據(jù)的要求,通過錄制鼠標(biāo)移動的距離,結(jié)合圖像序列化來提取相應(yīng)一段時(shí)期內(nèi)的證券數(shù)據(jù)。具體方法為,(1)測試并記錄下能夠?qū)崿F(xiàn)數(shù)據(jù)更新的鼠標(biāo)距離 d;(2)記錄需要爬取的鼠標(biāo)初始所在位置(x,y);(3)調(diào)用 move(x+d, y),實(shí)現(xiàn)鼠標(biāo)的移動;(4)將更新后的圖像通過圖像序列化提取相應(yīng)內(nèi)容,將結(jié)果保留在對應(yīng)的數(shù)據(jù)文件中。重復(fù)(3)(4)兩步即可實(shí)現(xiàn)數(shù)據(jù)的連續(xù)采集,從而采集出使用者感興趣的數(shù)據(jù)內(nèi)容。
本文用上述提到的方法采集了為期1 年的證券數(shù)據(jù),數(shù)據(jù)采集過程花費(fèi)時(shí)間約為1小時(shí),部分采集數(shù)據(jù)如圖4所示。經(jīng)驗(yàn)證,全部采集數(shù)據(jù)正確。通過實(shí)際測試,證明該方法簡單、有效、準(zhǔn)確,有良好的采集效果,能夠滿足證券數(shù)據(jù)采集需求。
圖4 爬取數(shù)據(jù)展示
本文基于圖像序列化以及鼠標(biāo)移動的宏錄制提出了一種新的證券數(shù)據(jù)采集方法,該方法與以往的網(wǎng)絡(luò)爬蟲方法不同,不依賴于網(wǎng)站提供的 API,也不依賴于 html 頁面分析,而是從圖像識別的角度出發(fā),通過圖像序列化后識別圖像內(nèi)容,從而采集數(shù)據(jù)。經(jīng)測試,該方法簡單、有效、準(zhǔn)確,具有很強(qiáng)的適用性,有較低的使用門檻,有助于幫助研究者快速獲取研究數(shù)據(jù)。同時(shí),該方法具有一定的普適性,不僅適用于證券數(shù)據(jù)的采集,也可用于其他領(lǐng)域數(shù)據(jù)的采集。該方法的主要缺點(diǎn)是采集數(shù)據(jù)的速度較慢,需要花費(fèi)一定的時(shí)間成本。另外圖形庫的添加有一定的復(fù)雜性,增加了該方法的操作量,對于需要采集大量文字性內(nèi)容的使用者來說不適合使用。
[1]CHOJ.Crawlingtheweb:andmaintenanceof large-scaleweb data[J]. discovery,November,2001.
[2]賈銹閎.基于深度學(xué)習(xí)的低質(zhì)量文檔圖像二值化算法研究[D].湖北工業(yè)大學(xué),2020.
[3]黨文靜.圖像區(qū)域分割算法的研究與應(yīng)用[D].安徽理工大學(xué),2018.
[3]楊培,陳沿錦,等.一種改進(jìn)的快速迭代閾值選擇算法[J].青海大學(xué)學(xué)報(bào),2018,36(03):34-39.