隨著互聯(lián)網(wǎng)的高速發(fā)展,獲取網(wǎng)頁上的數(shù)據(jù)已經(jīng)成為了一項(xiàng)非常重要的工作。在這個(gè)過程中,VBA爬蟲技術(shù)可以讓我們輕松獲取到所需的數(shù)據(jù)。本文將為大家詳細(xì)介紹如何使用VBA爬蟲獲取網(wǎng)頁數(shù)據(jù)。
一、什么是VBA爬蟲?
VBA(Visual Basic for Applications)是微軟公司開發(fā)的一種編程語言,它主要用于Office系列軟件的開發(fā)。而“爬蟲”則是指通過程序自動(dòng)抓取互聯(lián)網(wǎng)上的信息。因此,VBA爬蟲就是使用VBA語言編寫程序來實(shí)現(xiàn)自動(dòng)抓取互聯(lián)網(wǎng)信息的技術(shù)。
二、使用VBA爬蟲需要掌握哪些基礎(chǔ)知識(shí)?
1. HTML基礎(chǔ)知識(shí):了解HTML標(biāo)簽及其屬性,能夠正確地分析一個(gè)HTML頁面的結(jié)構(gòu);
2. VBA基礎(chǔ)知識(shí):熟悉VBA語言的基本語法和常用對(duì)象,能夠編寫簡(jiǎn)單的程序;
3. HTTP協(xié)議基礎(chǔ)知識(shí):了解HTTP協(xié)議的基本原理和常用請(qǐng)求方法。
三、如何使用VBA爬蟲獲取網(wǎng)頁數(shù)據(jù)?
1.獲取HTML源碼
使用VBA中提供的HTTP請(qǐng)求對(duì)象,向目標(biāo)網(wǎng)站發(fā)送HTTP請(qǐng)求,并獲取到網(wǎng)頁的HTML源碼。以下是示例代碼:
Sub GetHtmlSource() Dim http As Object Set http=CreateObject("MSXML2.XMLHTTP") http.Open "GET",";, False http.send Debug.Print http.responseText End Sub
2.解析HTML源碼
使用VBA中提供的HTML解析對(duì)象,對(duì)獲取到的HTML源碼進(jìn)行解析。以下是示例代碼:
Sub ParseHtmlSource() Dim html As Object Set html=CreateObject("htmlfile") html.body.innerHTML="<p>這是一個(gè)段落</p>" Debug.Print html.getElementsByTagName("p")(0).innerText End Sub
3.提取目標(biāo)數(shù)據(jù)
通過分析HTML頁面的結(jié)構(gòu),使用VBA中提供的DOM操作對(duì)象,提取出所需的目標(biāo)數(shù)據(jù)。以下是示例代碼:
Sub ExtractTargetData() Dim html As Object, targetElement As Object Set html=CreateObject("htmlfile") html.body.innerHTML="<p>這是一個(gè)段落</p>" Set targetElement=html.getElementsByTagName("p")(0) Debug.Print targetElement.innerText End Sub
四、VBA爬蟲的優(yōu)缺點(diǎn)分析
1.優(yōu)點(diǎn):
(1)使用簡(jiǎn)單,只需要掌握VBA語言和HTTP協(xié)議基礎(chǔ)知識(shí)即可;
(2)靈活性高,可以根據(jù)需求自由定制程序;
(3)速度快,可以快速地抓取大量數(shù)據(jù)。
2.缺點(diǎn):
(1)需要對(duì)目標(biāo)網(wǎng)站進(jìn)行分析,才能正確地獲取所需數(shù)據(jù);
(2)容易被目標(biāo)網(wǎng)站識(shí)別為爬蟲,從而導(dǎo)致IP被封禁等問題;
(3)存在法律風(fēng)險(xiǎn),需要遵守相關(guān)法律法規(guī)。
五、VBA爬蟲的應(yīng)用場(chǎng)景
1.數(shù)據(jù)采集:可以用于獲取各類網(wǎng)站上的數(shù)據(jù),如新聞、股票、電商等;
2.網(wǎng)站監(jiān)測(cè):可以用于監(jiān)測(cè)目標(biāo)網(wǎng)站上的變化,如價(jià)格變動(dòng)、評(píng)論數(shù)量變化等;
3.自動(dòng)化操作:可以用于實(shí)現(xiàn)自動(dòng)化操作,如自動(dòng)登錄、填寫表單等。
六、VBA爬蟲的注意事項(xiàng)
1.尊重他人隱私和知識(shí)產(chǎn)權(quán),不得非法獲取他人信息或侵犯他人知識(shí)產(chǎn)權(quán);
2.遵守相關(guān)法律法規(guī),不得利用VBA爬蟲從事違法活動(dòng);
3.合理使用VBA爬蟲技術(shù),不得對(duì)目標(biāo)網(wǎng)站造成過大的負(fù)擔(dān)。
七、總結(jié)
本文詳細(xì)介紹了VBA爬蟲技術(shù)的基礎(chǔ)知識(shí)、使用方法和注意事項(xiàng),并給出了具體的代碼示例。通過學(xué)習(xí)本文,相信讀者已經(jīng)掌握了VBA爬蟲技術(shù)的基本知識(shí),可以輕松地獲取所需的網(wǎng)頁數(shù)據(jù)。
#34;VBA信息獲取與處理"教程中第八個(gè)專題"VBA與HTML文檔"的第七節(jié)"HTML DOM的對(duì)象事件及關(guān)聯(lián)"太枯燥了,希望想掌握這方面知識(shí)的朋友能參考我的教程學(xué)習(xí)。我們今天 開始第九個(gè)專題的學(xué)習(xí)"利用IE抓取網(wǎng)絡(luò)數(shù)據(jù)"。
我們的網(wǎng)抓部分在講解了XMLHTTP方法后,利用兩個(gè)專題的進(jìn)度進(jìn)行了一些和VBA關(guān)系不是很大的有關(guān)網(wǎng)絡(luò)知識(shí)的講解,這兩個(gè)專題對(duì)于我們重新認(rèn)識(shí)網(wǎng)抓數(shù)據(jù)有著非常重要的意義,雖然我的講解還不能面面俱到,但對(duì)于我經(jīng)常倡導(dǎo)的VBA定位來說,是足夠的,再者,學(xué)習(xí)是個(gè)不斷積累前進(jìn)的過程,要掌握的是一些基本的理論,然后把這些應(yīng)用到自己的實(shí)際中去,這才是關(guān)鍵。從這個(gè)專題開始我們繼續(xù)網(wǎng)抓的學(xué)習(xí)。這個(gè)專題是利用IE抓取網(wǎng)絡(luò)數(shù)據(jù)。其實(shí)就是利用控件來完成我們的工作。
為了獲取網(wǎng)頁的數(shù)據(jù),我們可以通過創(chuàng)建IE控件或webbrowser控件,結(jié)合htmlfile對(duì)象的方法和屬性,模擬瀏覽器操作,獲取瀏覽器頁面的數(shù)據(jù)。
這種方法可以模擬大部分的瀏覽器操作。瀏覽器能看到的數(shù)據(jù)就能用代碼獲取,但是有個(gè)致命的缺點(diǎn):除去各種彈窗相當(dāng)煩人外,兼容性也確實(shí)是個(gè)很傷腦筋的問題。在我自己的實(shí)踐中感覺這種方法不是很穩(wěn)定(僅僅是感覺)。
我們?cè)趯?shí)際工作中遇到網(wǎng)站和網(wǎng)頁相關(guān)問題,例如:如何下載網(wǎng)頁數(shù)據(jù)?網(wǎng)頁之間的通訊是怎么實(shí)現(xiàn)的、它們能不能被控制等等。如果你是用VB/VBA/腳本或其它支持自動(dòng)化對(duì)象(AUTOMATION)的語言編程,有一個(gè)值得了解的方法是掌握對(duì)象模型:將網(wǎng)頁視為對(duì)象來控制,這個(gè)方法需要了解的是IE的自動(dòng)化對(duì)象(InternetExplorer.Application)或IE控件(Microsoft Internet Controls),以及標(biāo)準(zhǔn)的文檔對(duì)象模型(Document)。相關(guān)的知識(shí)我在前兩個(gè)專題中做了大量的講解,這里就不再詳細(xì)的說明了。
我給出下面的代碼:
Set ie=CreateObject("InternetExplorer.Application") '創(chuàng)建對(duì)象
ie.Visible=True '使IE頁面可見,做完這一步,在VBA之外可以看到一個(gè)新的IE
ie.navigate "about:blank" '建立一個(gè)空白頁
上面這幾行代碼的作用是創(chuàng)建一個(gè)IE應(yīng)用程序?qū)ο螅⒋蜷_一個(gè)空白的網(wǎng)頁。這個(gè)網(wǎng)頁獨(dú)立于VBA的應(yīng)用程序(WORD或EXCEL)之外,事實(shí)上,你必須自已關(guān)掉它,或者用ie.Quit下令退出——注意一下,單純的關(guān)閉VBA或SET ie=nothing是不會(huì)退出這個(gè)網(wǎng)頁的。我們經(jīng)常用的是將第3行的字符串替換成一個(gè)網(wǎng)站的名字,或者替換成一個(gè)你主機(jī)中的文檔名,也可以是一個(gè)圖片名,都是可以的。和你在IE地址欄輸入名稱瀏覽這些文檔是一樣效果。
如果僅僅是創(chuàng)建了一個(gè)空的模型是沒有任何利用的價(jià)值的,我們需要真正的網(wǎng)頁,這時(shí)就需要我們?cè)赩BA的應(yīng)用程序外打開一個(gè)完整的網(wǎng)頁了,直到網(wǎng)頁完全加載我們的操作才能向下進(jìn)行。
我們修正一下上面的那段打開空網(wǎng)頁的代碼:
Sub mynz()
Set ie=CreateObject("InternetExplorer.Application") '創(chuàng)建對(duì)象
ie.Visible=True '使IE頁面可見,做完這一步,在VBA之外可以看到一個(gè)新的IE
ie.navigate " https://baijiahao.baidu.com" '建立一個(gè)空白頁
Do Until .ReadyState=4 '檢查網(wǎng)頁是否加載完畢(4表示完全加載)
DoEvents '循環(huán)中交回工作權(quán)限給系統(tǒng),以免"軟死機(jī)"
Loop
End sub
在上面的代碼中增加了幾行:
Do Until .ReadyState=4 '檢查網(wǎng)頁是否加載完畢(4表示完全加載)
DoEvents '循環(huán)中交回工作權(quán)限給系統(tǒng),以免"軟死機(jī)"
Loop
這幾行代碼可以保證網(wǎng)頁的加載完成,這是根據(jù)ie.ReadyState的返回值來判斷的。
readyState一共有5中狀態(tài):
狀態(tài) 含義 說明
0 未初始化 對(duì)象已建立,但是尚未初始化(尚未調(diào)用open方法)
1 初始化 對(duì)象已建立,尚未調(diào)用send方法
2 發(fā)送數(shù)據(jù) send()方法已調(diào)用,但是當(dāng)前的狀態(tài)及http頭未知
3 數(shù)據(jù)傳送中 已接收部分?jǐn)?shù)據(jù),因?yàn)轫憫?yīng)及http頭不全,這時(shí)通過responseBody和responseText獲取部分?jǐn)?shù)據(jù)會(huì)出現(xiàn)錯(cuò)誤
4 數(shù)據(jù)接收完畢 此時(shí)可以通過通過responseBody和responseText獲取完整的回應(yīng)數(shù)據(jù)
通過以上的分析,我們可以看出,只用當(dāng).ReadyState=4時(shí)網(wǎng)頁的數(shù)據(jù)才是有效的數(shù)據(jù)。
當(dāng)網(wǎng)頁加載完畢,剩下的工作就是從網(wǎng)頁中抓取數(shù)據(jù)了,數(shù)據(jù)的抓取主要是利用控件對(duì)象的屬性和方法。
1)用Set doc=ie.Document 取得網(wǎng)頁的文檔對(duì)象
從文檔對(duì)象(Document)以下展開的對(duì)象模型,它代表網(wǎng)頁的內(nèi)容,和前面那個(gè)IE的應(yīng)用程序不是同一個(gè)體系.
Documnet(文檔)是文檔對(duì)象模型,相當(dāng)于OFFICE對(duì)象中的APPLICATION,取得Document之后,不論修改網(wǎng)頁還是讀寫網(wǎng)頁,還是觸發(fā)事件,一切都好說,每個(gè)URL都對(duì)應(yīng)有一個(gè)Documnet(這是假如定成功導(dǎo)航Navigate到那個(gè)URL完成,因此之前要求確定IE對(duì)象READSTATE,以確定對(duì)應(yīng)URL的Document打開了)
2) 在Documnet之下可以取得documentElement和body兩個(gè)節(jié)點(diǎn)。
可以用下面的語句:
set xbody=doc.Body '取得body對(duì)象
set xDoc=doc. documentElement '取得根節(jié)點(diǎn)
body前面已經(jīng)說過,相當(dāng)于標(biāo)記的對(duì)象,根節(jié)點(diǎn)相當(dāng)于網(wǎng)頁中的標(biāo)記元素的對(duì)象,MHTML的類型庫(kù)定義里,它們都屬于HTMLHtmlElement類型的對(duì)象,下面我把這種類型的對(duì)象稱為一個(gè)"節(jié)點(diǎn)",不過要注意的是文檔對(duì)象不是節(jié)點(diǎn)對(duì)象,它是HTMLDocument類型。根節(jié)點(diǎn)和body節(jié)點(diǎn)不同的是根節(jié)點(diǎn)包括整個(gè)網(wǎng)頁,在HTML的文檔對(duì)象模型中,這類對(duì)象有幾種屬性可以取得其中的內(nèi)容:
對(duì)象.innerHtml '對(duì)象內(nèi)部的HTML文本
對(duì)象.OuterHtml '對(duì)象中的HTML文本,包括對(duì)象本身的HTML標(biāo)記在內(nèi)
對(duì)象.innerText '對(duì)象內(nèi)部的TEXT,不包括HTML標(biāo)記
對(duì)象.OuterText '同上,包括對(duì)象本身的文本
所以,如果我們要抓取某個(gè)網(wǎng)站的所有HTML內(nèi)容,代碼可以這樣寫:
set doc=ie.Document
set xDoc=doc. documentElement '取得根節(jié)點(diǎn)
strX=xDoc.OuterHtml '取得所有的HTML內(nèi)容
3) 每一個(gè)標(biāo)記節(jié)點(diǎn)對(duì)象之下都有一個(gè)名為ChildNodes的集合,它包含了"直屬于本節(jié)點(diǎn)下的標(biāo)記",就象是文件目錄,根目錄下的子目錄.
我們可以看到:HTML標(biāo)記是文檔的根節(jié)點(diǎn),是Document的Childnodes集合中的一個(gè)成員(Document不是節(jié)點(diǎn),是另一種類型對(duì)象,上一級(jí)文檔,但它可以有下級(jí)節(jié)點(diǎn)集合,正如磁盤可以有下級(jí)目錄,但它本身不是目錄),BODY是根節(jié)點(diǎn)的ChildNodes集合中的一個(gè)成員,而DIV和P兩個(gè)節(jié)點(diǎn)則是BODY的ChildNodes集合中的兩個(gè)成員,同樣也有自已的Childnoes集合。
我們要注意:文檔對(duì)象模型中,集合與OFFICE的集合有所不同,集合是從0開始計(jì)數(shù)的,計(jì)數(shù)屬性是Length而不是Count。
4)除了ChildNodes集合,大家在網(wǎng)頁文檔對(duì)象中還常見到的就是很大氣的一種集合:All集合,這是"最糊涂"的一種集合,文檔和各級(jí)節(jié)點(diǎn)都帶有這個(gè)集合,正如這個(gè)名字所示,它是不分層次的,但用起來也很方便:
Set doc=ie.Document
Set xCols=doc.All '取得文檔中的所有節(jié)點(diǎn)集合
Set xbCols=doc.body.All '取得body節(jié)點(diǎn)下所有的節(jié)點(diǎn)集合
雖然任何標(biāo)記節(jié)點(diǎn)都有ALL集合,但我們還是喜歡用DOCUMENT的ALL,原因無它,文檔最大,一鍋燴的ALL找起來也最合適。ALL查找是有條件的:如果這個(gè)標(biāo)記沒有ID,你無法查到它的名字。
不過,ALL集合有一個(gè)很方便的特性:ID可以掛到ALL集合之下:
strX=doc.All.mytag.innerhtml
5)獲得文檔對(duì)象的getElementsByName集合,可以利用下面的方法:
set mydivs=doc. getElementsByName("div") '取得所有DIV標(biāo)記,注意還是集合
6) 文檔對(duì)象的FORMS集合,因?yàn)榇蟛糠志W(wǎng)頁的數(shù)據(jù)提交都是通過FORM標(biāo)記提交的:
Set myForms=doc.Forms '取得所有的FORM標(biāo)記
Set frmX=myForms.item(0) '第1個(gè)FORM
FORM標(biāo)記節(jié)點(diǎn)代表的對(duì)象是很多朋友關(guān)心的內(nèi)容——在網(wǎng)頁對(duì)象中,它可以發(fā)送數(shù)據(jù)到服務(wù)器,使服務(wù)器刷新網(wǎng)頁(實(shí)際上是服務(wù)器按某個(gè)格式約定發(fā)回?cái)?shù)據(jù)),我們可以把網(wǎng)頁的FORM看成是一個(gè)遠(yuǎn)程的函數(shù)調(diào)用接口,F(xiàn)ORM標(biāo)記中的ACTION指向的URL地址就是函數(shù)入口,而FORM標(biāo)記內(nèi)的各個(gè)INPUT標(biāo)記節(jié)點(diǎn)就是函數(shù)的參數(shù),當(dāng)發(fā)出FORM.Submit方法時(shí),就是遠(yuǎn)程調(diào)用函數(shù)了,在服務(wù)器端,諸如ASP,PHP就是老老實(shí)實(shí)找FORM的參數(shù),不管你是用GET還是POST:
frmX.submit '相當(dāng)于用戶在頁面上按下FORM的發(fā)送按鍵
上面我羅列了獲取網(wǎng)頁數(shù)據(jù)的一般的方法,并沒有什么特別的使用要求,大家可以根據(jù)自己的習(xí)慣來利用,這個(gè)專題之后的內(nèi)容就是靈活運(yùn)用這些知識(shí)點(diǎn)來解決實(shí)際問題了。
本節(jié)知識(shí)點(diǎn)回向:
如何提交表單?如何下載圖片的地址?如何獲得表的數(shù)據(jù)?
在我的系列書籍中一直在強(qiáng)調(diào)"搭積木"的編程思路,這也是學(xué)習(xí)利用VBA的主要方法,特別是職場(chǎng)人員,更是要采用這種方案。其主要的內(nèi)涵:
1 代碼不要自己全部的錄入。你要做的是把積木放在合適的位置然后去修正代碼,一定要拷貝,從你的積木庫(kù)中去拷貝,然后修正代碼,把時(shí)間利用到高效的思考上。
2 建立自己的"積木庫(kù)"。平時(shí)在學(xué)習(xí)過程中,把自己認(rèn)為有用的代碼放在一起,多積累,在用到的時(shí)候,可以隨時(shí)拿來。你的積木庫(kù)資料越多,你做程序的思路就會(huì)越廣。
VBA是利用Office實(shí)現(xiàn)個(gè)人小型辦公自動(dòng)化的有效手段(工具)。這是我對(duì)VBA的應(yīng)用界定。在取代OFFICE新的辦公軟件沒有到來之前,誰能在數(shù)據(jù)處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!
我記得20年前自己初學(xué)VBA時(shí),那時(shí)的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學(xué)習(xí)VBA的朋友重復(fù)我之前的經(jīng)歷,我根據(jù)自己多年VBA實(shí)際利用經(jīng)驗(yàn),推出了六部VBA專門教程:
第一套:VBA代碼解決方案 是VBA中各個(gè)知識(shí)點(diǎn)的講解,教程共147講,覆蓋絕大多數(shù)的VBA知識(shí)點(diǎn),初學(xué)必備;
第二套:VBA數(shù)據(jù)庫(kù)解決方案 數(shù)據(jù)庫(kù)是數(shù)據(jù)處理的專業(yè)利器,教程中詳細(xì)介紹了利用ADO連接ACCDB和EXCEL的方法和實(shí)例操作,適合中級(jí)人員的學(xué)習(xí)。
第三套:VBA數(shù)組與字典解決方案 數(shù)組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學(xué)習(xí),是初級(jí)及中級(jí)人員代碼精進(jìn)的手段。
第四套:VBA代碼解決方案之視頻 是專門面向初學(xué)者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程的視頻講解,聽元音更易接受。
第五套:VBA中類的解讀和利用 這是一部高級(jí)教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細(xì)的學(xué)習(xí)可以促進(jìn)自己VBA理論的提高。這套教程的領(lǐng)會(huì)主要是讀者的領(lǐng)悟了,領(lǐng)悟一種佛學(xué)的哲理。
第六套教程:《VBA信息獲取與處理》,這是一部高級(jí)教程,涉及范圍更廣,實(shí)用性更強(qiáng),面向中高級(jí)人員。教程共二十個(gè)專題,包括:跨應(yīng)用程序信息獲得、隨機(jī)信息的利用、電子郵件的發(fā)送、VBA互聯(lián)網(wǎng)數(shù)據(jù)抓取、VBA延時(shí)操作,剪切板應(yīng)用、Split函數(shù)擴(kuò)展、工作表信息與其他應(yīng)用交互,F(xiàn)SO對(duì)象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數(shù)等等內(nèi)容。
大家可以根據(jù)以上資料1→3→2→6→5或者是4→3→2→6→5的順序逐漸深入的逐漸學(xué)習(xí)。教程提供講解的同時(shí)提供了大量的積木,如需要可以WeChat: NZ9668
如太白詩云:眾鳥高飛盡,孤云獨(dú)去閑。相看兩不厭,只有敬亭山。學(xué)習(xí)的過程也是修心的過程,修一個(gè)平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內(nèi)心里沒有那么多邪知邪見,也就沒有那么多妄想。利人就是利己。這些教程也是為幫助大家起航,助上我自己之力,我的上述教程是我多的經(jīng)驗(yàn)的傳遞,
"水善利萬物而不爭(zhēng)",綿綿密密,微則無聲,巨則洶涌。學(xué)習(xí)亦如此,知道什么是自己所需要的,不要蜷縮在一小塊自認(rèn)為天堂的世界里,待到暮年時(shí)再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機(jī)的心靈,把握現(xiàn)在,這才是進(jìn)取。越是有意義的事情,困難會(huì)越多。愿力決定始終,智慧決定成敗。不管遇到什么,都是風(fēng)景。看淡紛爭(zhēng),看輕得失。茶,滿也好,少也好,不要計(jì)較;濃也好,淡也好,其中自有值得品的味道。去感悟真實(shí)的時(shí)間,靜下心,多學(xué)習(xí),積累福報(bào)。而不是天天混日子,也不是天天熬日子。在后疫情更加嚴(yán)峻的存量殘殺世界中,為自己的生存進(jìn)行知識(shí)的儲(chǔ)備,特別是新知識(shí)的儲(chǔ)備。學(xué)習(xí)時(shí)微而無聲,利用時(shí)則巨則洶涌。
每一分收獲都是成長(zhǎng)的記錄,怎無憑,正是這種執(zhí)著,成就了朝霞的燦爛。最后將一闕詞送給致力于VBA學(xué)習(xí)的朋友,讓大家感受一下學(xué)習(xí)過程的枯燥與執(zhí)著:
浮云掠過,暗語無聲,
唯有清風(fēng),驚了夢(mèng)中啼鶯。
望星,疏移北斗,
奈將往事雁同行。
阡陌人,昏燈明暗,
忍顧長(zhǎng)亭。
多少VBA人,
暗夜中,悄聲尋夢(mèng),盼卻天明。
怎無憑!
回向?qū)W習(xí)利用VBA的歷歷往事,不勝感慨,謹(jǐn)以這些文字給大家,分享我多年工作實(shí)際經(jīng)驗(yàn)的成果,隨喜這些有用的東西,給確實(shí)需要利用VBA的同路人。
分享成果,隨喜正能量
家好,有好多小伙伴私信我,說VBA能不能抓取網(wǎng)頁的數(shù)據(jù)并進(jìn)行處理,答案是肯定的。現(xiàn)在有這樣一份用VBA做的網(wǎng)頁數(shù)據(jù)抓取工具,我們一起來看看吧!
Step-01 這個(gè)表格打開以后,我們看到的是有4個(gè)選項(xiàng)卡,我們依次點(diǎn)擊藍(lán)色字體即可跳轉(zhuǎn)相關(guān)頁面,我們看看動(dòng)畫的操作吧!
Step-02 我們一起看看第一功能吧!全景表自動(dòng)生成工具,或許有的同學(xué)不知道這個(gè)的原理和數(shù)據(jù)處理方式什么樣的,但是你看到結(jié)果就會(huì)發(fā)現(xiàn)其實(shí)網(wǎng)頁抓取數(shù)據(jù)如此簡(jiǎn)單。程序執(zhí)行完成以后的結(jié)果如下所示:
動(dòng)畫的操作如下,請(qǐng)記住,此數(shù)據(jù)的抓取需要連接網(wǎng)絡(luò)哦!我們可以在藍(lán)色區(qū)域修改代碼,這個(gè)是支持修改的。可支持持續(xù)生產(chǎn)圖表分析工具,當(dāng)然這個(gè)數(shù)據(jù)是實(shí)時(shí)的。
Step-03 數(shù)據(jù)收集工具,注意是提供資產(chǎn)負(fù)債表、利潤(rùn)表、現(xiàn)金流量表的100多項(xiàng)財(cái)務(wù)數(shù)據(jù),提供年度和季度數(shù)據(jù);一起看看動(dòng)畫的操作吧!如下所示:
Step-04 本福特測(cè)試, 本工具可以根據(jù)新浪或網(wǎng)易提供的上市公司財(cái)務(wù)報(bào)表數(shù)據(jù),自動(dòng)計(jì)算公司各報(bào)告期的財(cái)務(wù)數(shù)字的首字分布,并計(jì)算和標(biāo)準(zhǔn)本福特分布的相關(guān)系數(shù),供參考。動(dòng)畫如下:這個(gè)的代碼和期數(shù),數(shù)據(jù)來源都可以更改的。
Step-05 自選數(shù)據(jù)實(shí)時(shí)進(jìn)行抓取和更新,我們可以看到如下所示,我們需要手動(dòng)在A列輸入代碼,C列輸入持有數(shù)量,D列輸入單價(jià),然后點(diǎn)擊刷新按鈕即可更新數(shù)據(jù)。
操作動(dòng)畫如下所示:
怎么樣,小伙伴們,有沒發(fā)現(xiàn)其實(shí)vba也可以實(shí)現(xiàn)網(wǎng)頁的數(shù)據(jù)抓取工作的?有需要源代碼的可以私信我“Tool”,謝謝支持!
如果有不明白的或者不懂的可以在下方留言,我們會(huì)一一解答的。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。