版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VBA的WE用系列教程一一HTMLC檔篇上節(jié)課,我們說(shuō)了 HTTP1訊,HTTP訊一般情況返回的是啥呢?是頁(yè)面的 源代碼。例如,我們?cè)L問(wèn)百度,返回了,“” 一大堆東西。就是,我們?cè)陧?yè)面點(diǎn)擊右鍵,“查看頁(yè)面源文件”,如圖:后退出) 前說(shuō)Q)背景另存為) 設(shè)置為背景笆) 復(fù)制背景(Q 設(shè)為桌面項(xiàng)9)全選缶)粘貼(E)創(chuàng)建快捷方式CD 添加到收藏夾任)查看源文件N) www.baKtufl氾步率1文件任)雨5任)*9)有著注:褶助(比Bai耐百度,曲”:type ht mlXht r XhdilXnet d htt p-?qn i u-MCon11 Type content-text/htHl; c
2、har set-gb2312Xtitle .你就知道r)tmljbverflo-yf one:12px arial;text-allqn:center;bckqrouMlbody ,p f fam, ul ,lliwrgin: D;pdddlng:le :mbodyT FornTFmtdteMt-align:lef 1 border:aacolor :MBca:4Ctivecolr:tF6aNu color:tl999;paddinq:px 1 Upx bpx 0;teKt-dliqn:riql iwrgi.regnjrgln:fiaflpx;uq jutii; tnv a.Mnu ti t:
3、i bpMjlfn(padiIpf I: :9tpx ;teKt-dllgn: lef t inputhorder: l;paddlng :l heiqht:19px;fon*: sizez16pK;narqin:0 0 4px;tQKt align:lFt ;textKindMit:117px; .s_ipt, wr id th: 41 Bpx; height :省 GlpM ;displd: Inline-block ;ndn r i qht:SpK;bdckyround:urlthtto :/5i .bdstjt ic ,jn/r/wuw/chp/jtjun/ini(/i-我們的瀏覽器,
4、正是把這堆源代碼,翻譯成我們可視的生動(dòng)地頁(yè)面的。就像 VBA一樣,這堆代碼是什么語(yǔ)言呢,就是通常所說(shuō)的,超文本標(biāo)記語(yǔ)言。為啥叫標(biāo)記語(yǔ)言,因?yàn)樗荒苡糜谡故?,展示我們所看到的網(wǎng)頁(yè)頁(yè)面。不是 編程語(yǔ)言哦。為啥叫超文本呢,大家仔細(xì)看,這堆源代碼有什么特征呢,就是有很多 這樣的文本,一般而言,我們把叫做標(biāo)簽,細(xì)心的同學(xué)可以發(fā)現(xiàn),標(biāo)簽都是 成對(duì)出現(xiàn)的,例如“ 百度一下,你就知道 。第一個(gè)叫做開(kāi)始標(biāo)簽,第二個(gè)多帶了個(gè)/叫結(jié)束標(biāo)簽。標(biāo)簽之間就是網(wǎng)頁(yè)的文本,例如這個(gè) 例子,就是我們網(wǎng)頁(yè)標(biāo)題的文本“百度一下,你就知道”。所以,標(biāo)簽的作用就 是,給文本打上標(biāo)記,告訴瀏覽器,怎么顯示這個(gè)文本。例如本例,要求瀏覽器
5、把“百度一下,你就知道”顯示成網(wǎng)頁(yè)的標(biāo)題。HTML文檔二文本+標(biāo)簽,所以就超文本啦空百七下,你就幻道總之,HTMLM是用來(lái)描述網(wǎng)頁(yè)的語(yǔ)言,像上面所說(shuō)的 這樣的標(biāo)簽, 是有一整套的,呵呵。我們的教程,并不是為了教大家,怎么去做網(wǎng)頁(yè),設(shè)計(jì)網(wǎng)頁(yè),因此,大家僅 僅需要,大致的了解一些 HTM煤列的文本標(biāo)記語(yǔ)言的基礎(chǔ)即可,知道常用的幾 個(gè)標(biāo)簽,有什么用即可。一、網(wǎng)頁(yè)數(shù)據(jù)提取常見(jiàn)的HTM而簽/元素上面說(shuō)了,標(biāo)簽是用來(lái)描述網(wǎng)頁(yè)的。瀏覽器讀取HTML文檔,識(shí)別標(biāo)簽,并按標(biāo)簽要求以網(wǎng)頁(yè)進(jìn)行顯示文本。大部分標(biāo)簽都是成隊(duì)出現(xiàn)的。起始標(biāo)簽和結(jié)束標(biāo)簽之間的所有文本,都叫做 元素。也就是這個(gè)格式就是:元素的內(nèi)容 標(biāo)簽是可
6、以擁有屬性的,因此起始標(biāo)簽,有時(shí)候格式如下:屬性提供了元素的一些附加信息啦,后面我們講具體標(biāo)簽,大家就會(huì)見(jiàn)到屬 性怎么用。另外,注意,元素是可以擁有元素的,即某個(gè)元素的內(nèi)容有時(shí)候是一個(gè)子元 素。元素這東西,比較抽象,我們可以把它且當(dāng)作一個(gè)對(duì)象來(lái)理解,例如工作簿 對(duì)象,每個(gè)工作簿的名稱(chēng)都不一樣(屬性),每個(gè)工作簿里面都有工作表(子元 素),每個(gè)表都有名稱(chēng)(屬性),里面填寫(xiě)的內(nèi)容也不一樣(元素的內(nèi)容)。下面講講常見(jiàn)的和我們網(wǎng)頁(yè)數(shù)據(jù)提取要常見(jiàn)的元素 /標(biāo)簽。(一)整體框架結(jié)構(gòu):每個(gè)網(wǎng)頁(yè)文檔,都是有個(gè)大致的框架,框架如下: 網(wǎng)頁(yè)標(biāo)題 網(wǎng)頁(yè)文檔主體把上面這段文本保存在TXT文件里面,然后另存.html格
7、式,就可以得到最基礎(chǔ)的頁(yè)面。網(wǎng)夏沃先, 文件(E)的(且查看(Y)幫助(出Firefox網(wǎng)頁(yè)文檔主體從上面的框架代碼, 內(nèi)含兩個(gè)元素、一個(gè)是 V-注釋?zhuān)何膰略?一注釋?zhuān)何臋n頭部,文4網(wǎng)頁(yè)標(biāo)題-注:文1卷 8網(wǎng)頁(yè)文檔主體我們可以看出,一般的頁(yè)面,都有 html元素,其一般 head元素,一個(gè)是body元素。Head元素僅僅說(shuō)明文檔的相關(guān)消息,并不展示文檔實(shí)體,body元素才是真正展示文檔主體的,所有要 在頁(yè)面展示的元素,都要在body內(nèi)進(jìn)行書(shū)寫(xiě)。后面的元素的測(cè)試,都是以替換掉 body元素內(nèi)的文本”網(wǎng)頁(yè)文檔主體”進(jìn)行書(shū)寫(xiě),后續(xù)不再?gòu)?fù)述這個(gè)框架。(二)段落Firefox Cf 百/ J file
8、毓二段落三特別是提取小說(shuō),新聞等頁(yè)面的消息,文本都是一段一段的,這樣的頁(yè)面, 一般是通過(guò)標(biāo)簽實(shí)現(xiàn)的。這個(gè)沒(méi)啥好說(shuō)的,自己動(dòng)手試看看就知道。文件源相格式查看包)希助出)351。一注釋?zhuān)晃臋n跟元素一head,一注格 支檔頭部,文檔科 內(nèi)容一1段落測(cè)試文檔 ?一注釋?zhuān)何臋n主體一 度麓一印 段落三所以,當(dāng)運(yùn)用ie/webbrowser方式提取這類(lèi)網(wǎng)頁(yè)的時(shí)候,歷遍段落p元素即 可。(三)超鏈接超鏈接是我們最常見(jiàn)的頁(yè)面元素,基本的門(mén)戶網(wǎng)站都有他,點(diǎn)了以后,可以 跳轉(zhuǎn)到另一個(gè)頁(yè)面。一般語(yǔ)法格式:顯示的超鏈接文本Target屬性,表示的是,當(dāng)我們點(diǎn)擊超鏈接,是在原頁(yè)面進(jìn)行跳轉(zhuǎn)(_self ) 還是新建頁(yè)面進(jìn)行
9、跳轉(zhuǎn)(_blank )。測(cè)試做個(gè)ET的超鏈接吧。exuHtip4-注釋?zhuān)何臋n跟元素一分 注釋?zhuān)何臋n頭部,文檔相關(guān)消息,井S軀襠內(nèi)容一超窿接測(cè)試文檔/titlfr !一注釋?zhuān)何囊d主體aexceltip(四)圖像圖像標(biāo)簽用法和超鏈接類(lèi)似,語(yǔ)法:alt屬性代表的是,當(dāng)圖片無(wú)法加載的時(shí)候,替換顯示的文本文件(日頻(日理團(tuán)出)加載 ET 的 LOGO的頁(yè)面玩玩(圖宓出劉巖2IHTML 醫(yī)呼*乂戴程|由乂百白噂程|看其培造;Il |$KC(五)表格表格是我們網(wǎng)頁(yè)最常見(jiàn)的,也是我們網(wǎng)頁(yè)數(shù)據(jù)提取,最需要打交道的,其實(shí)它非常簡(jiǎn)單,框架如下,每行用 ,每個(gè)單元格用:第一行第一個(gè)單元格 m卜二HTML音訂的LOG0
10、是:Mmb vb-注釋?zhuān)何拇畎冈匾?v注釋:文襠頭部,文襠相關(guān)消息,并下提供立襠內(nèi)容一, title*國(guó)爆測(cè)試交檔 a-法釋?zhuān)狐c(diǎn)駐體工vpE南LQGQ是:菖件但州M曰百百也)第一行第二個(gè)單元格 第二行第一個(gè)單元格第二行第二個(gè)單元格Firefox *:file:/C:/DocumenIs%2OSettings/圖5匚:晨常測(cè)忒協(xié)0 口 % file:/C:/Documents and文件任)扁版也)查看出)耗即(H) V-注釋?zhuān)何囊d噩元素一第一行第一個(gè)單元格第一行第二個(gè)單元格 4一注釋?zhuān)何臋n頭部,文檔第二行第一個(gè)單元格第二行第二個(gè)單元格 titles圖像測(cè)試文檔 9注釋?zhuān)何臋n主體第一行第 f
11、單元格 td)第一行第二個(gè)單元格第二行第一個(gè)單元格M/td 第二行第二個(gè)單元格(六)列表很多時(shí)候,數(shù)據(jù)也經(jīng)常以列表形式存在的,列表有三種:無(wú)序、有序和自定義。分別框架如下:1、無(wú)序列表 函數(shù) VBAFirefox文件(E)聚輯(日查看應(yīng))晉助出) /一注釋?zhuān)何蔫浜瘮?shù) VBA 1注釋?zhuān)何臒o(wú)序列表測(cè)試文欄4/head a 1注釋?zhuān)侯^li* 函數(shù) VBA2、有序列表 圖書(shū)VBA 函數(shù) 視頻基操 圖表 數(shù)透 Firefox,. .無(wú)序兄表虬試文檔噩:file: / / /C: / Docu ments%20a nd %20Sei C !3fife:/文件(E)編輯(印查看(旦)幫助(H) 一注釋?zhuān)何臋n
12、主體1 .圖書(shū)1. VBA2.函數(shù)2 .姬1 .基揉2 .圖表 工數(shù)透圖書(shū)VBAW3、自定義列表 女第一節(jié)課dd綱絡(luò)通訊女第二節(jié)課HTMLFirefox整:file: /C:/ Documents% 20a nd % 20Settini * G 由 8第一節(jié)課網(wǎng)絡(luò)通訊, 第二節(jié)課HTML文件(日碼/)查看包需卻出)月序列表決Hat乂回 一注釋?zhuān)何臋n主體第一節(jié)課dtA*孫網(wǎng)絡(luò)通訊*/dd 第二節(jié)課 HTML(七)表單和表單控件除了表格,表單也是我們?cè)诰W(wǎng)頁(yè)數(shù)據(jù)提取,頁(yè)面操控最常見(jiàn)到的元素。例如 我們注冊(cè)用戶,例如我們的微博登陸,例如我們的百度搜索,其實(shí)都是表單。我 們先來(lái)看一個(gè)例子:青在文本框輸入
13、要搜索的關(guān)鍵字,后按提交,將提交百度進(jìn)行搜索form method=get action=Firefox .表電近造雌 .田TML表單&SA.的 7/C:, Docume nt5 and Setting AdminisntQr.立面軍去最建鉆丈翦 htmi請(qǐng)?jiān)谖谋究蜉斎胍鏊饕陵P(guān)犍才,布接提交,將提交百度進(jìn)行搜安草果場(chǎng)I 如一日sS(v)書(shū)即出) 1-7上上fl3LE4一:fife/C/DCtfiintS%20ai%2CtBnqs/AdmintelTator/%E6%Al%8C%E9%iiyWQ72%E6flM請(qǐng)?jiān)谖谋究蜉斎胍阉鞯年P(guān)鍵字.后按提交,將提交百度進(jìn)行澳素 dnput 0=飛叱印曰
14、皿山士=提交、例如在文本框輸入“蘋(píng)果”后,按提交按鈕:Firefox百度級(jí)理要 /J a a . ba idu co rn/ s?wd=Bai四百度 新聞歐五貼吧圮道MP3平果蘋(píng)果(中國(guó))官方在線商店- Apple Stoe (中國(guó))A - 一. A * & Ur r _=1. . a I I44*- - 4s. b這個(gè)表單模擬的是百度搜索,在文本框輸入關(guān)鍵字后,按提交,將跳轉(zhuǎn)至百 度的搜索結(jié)果的界面。呵呵,奇妙吧。如何實(shí)現(xiàn)的呢?細(xì)心的同學(xué)會(huì)發(fā)現(xiàn)吧,表單 form這個(gè)元素,有“ method”和“ action ”兩 個(gè)屬性,action屬性指定的就是,提交表單后,向這個(gè)屬性指定URL送htt
15、p請(qǐng)求(呵呵,涉及到第一節(jié)課的知識(shí)啦),method這個(gè)屬性設(shè)定的就是,要按照 get或者post等方式發(fā)送http請(qǐng)求。復(fù)習(xí)下第一節(jié)課吧,采用 get的方式呢, 參數(shù)將在URUt面加個(gè)?號(hào),然后發(fā)送,采用post的方式呢,將在消息主體里面 投遞查詢(xún)參數(shù)。那發(fā)送http請(qǐng)求的參數(shù)從哪里來(lái)的?就是從表單元素內(nèi)含的各種下屬元素, 提取其name屬性的值,作為參數(shù)名,然后提取該元素的 value屬性作為參數(shù)值(value屬性的值有時(shí)候是由我們輸入的,例如本例,雖然我們指定了默認(rèn)的 value屬性的值為exceltip,但是我們可以手動(dòng)輸入,把它修改成“蘋(píng)果”)。然 后瀏覽器就用參數(shù)名=參數(shù)值和&進(jìn)行
16、連接(還是上節(jié)課的知識(shí))用起來(lái)。就如本 例,提交后,觀察 URL為: 蘋(píng)果,wb就是第一個(gè) input元素的屬性值,蘋(píng)果就是我們輸入的,賦予第一個(gè) input元素的value屬 性的值。下面,我們講講表單主要的內(nèi)含子元素吧。1、輸入標(biāo)簽( )其語(yǔ)法是: 其類(lèi)型由type屬性定義,常見(jiàn)的有:text (文本框)、Radio (單選按鈕)、 Checkboxes.(復(fù)選框)、submit (提交按鈕)、hidden (隱藏)、reset (重置)和 password (密碼框)等。其中注意,其中單選框和復(fù)選框的是否選中,由checked屬性指定,如果值是“ checked”則選定。不多說(shuō)了,看例子
17、吧。(文本框和提交 按鈕就不做了,上面都舉例了。密碼框同,類(lèi)似的) 表格設(shè)計(jì)文檔處理 幻 燈片vip普通會(huì)員Firefox圖書(shū) 視頻 動(dòng)畫(huà) 圖解 上表單測(cè)試文檔x, G 百/file:/C/Documents and SeM表格設(shè)計(jì)口文檔處理上幻燈片vip普通會(huì)員重苴注意,當(dāng)表單提交的時(shí)候,發(fā)送 http請(qǐng)求時(shí),單選框和復(fù)選框,僅發(fā)送checked屬性為 checked”的元素。一樣是把標(biāo)記了 checked的元素的name屬性值和value屬性值用起來(lái)。2、下拉歹U表其語(yǔ)法:如果存在multiple=multiple的屬性設(shè)定,則允許菜單多選,否則單選。Size是設(shè)置可見(jiàn)的菜單條目數(shù)。其下級(jí)
18、元素,option代表的是其每個(gè)菜單項(xiàng)目,語(yǔ)法為:顯示文字 一樣,value屬性接著的就是發(fā)往服務(wù)器的值,當(dāng)提交的時(shí)候,就是將select 的name屬性值與用戶選擇的某項(xiàng)option元素的value屬性值連接,進(jìn)行發(fā)送。Option元素的selected屬性設(shè)置的是默認(rèn)選中的菜單項(xiàng)。示例如下:單選選擇列表 多重選擇列表,按住shift或ctrl鍵進(jìn)行多重選擇excelwordpptFireroxfileV/C:/Documents and Set單選選擇列表多重選擇列表,按住或Ctrl腱進(jìn)行多重去擇excelword(八)框架標(biāo)簽和標(biāo)簽1、frameset 和 frameFrame是獨(dú)立框架
19、,就好像我們的分屏瀏覽一樣,一個(gè)屏幕,瀏覽多個(gè)畫(huà)面 一樣。語(yǔ)法如下:首先框架必須放置在框架結(jié)構(gòu)標(biāo)簽里面( ),其rows/columns屬性的值規(guī)定了框架每行或每列占據(jù)屏幕的面積。另外, frameset和body不能同 時(shí)使用,除非有noframes,很簡(jiǎn)單,因?yàn)閒rame其實(shí)就描繪文檔了,所以,一 般不需要再有body進(jìn)行描繪。另外,框架元素一般放置于head元素內(nèi)。Frame元素的src屬性就是設(shè)定了其框架內(nèi)顯示頁(yè)面的 URL示例如下: 框架測(cè)試文檔2、iframeIframe的框架,就類(lèi)似畫(huà)中畫(huà)的效果,在原頁(yè)面插入一個(gè)頁(yè)面。語(yǔ)法如下:Src設(shè)定框架內(nèi)要顯示的文檔的url , scrol
20、ling設(shè)置是否顯示滾動(dòng)條Height和widty設(shè)置的就是它的高度和寬度。案例如下:第一個(gè)框架 第二個(gè)框架 圖片第二個(gè)框架il二的Bmi樹(shù)百度4 irtHtml就大概講這一些吧,呵呵,畢竟我們不是要做網(wǎng)頁(yè),大家大致了解下就 是,還可以參考去學(xué)習(xí)。一般能做到,看得懂網(wǎng)頁(yè)的框架 結(jié)構(gòu)即可。二、HTML文檔對(duì)象模型(HTML DOM認(rèn)識(shí)了網(wǎng)頁(yè)文檔上面的各種元素,我們?cè)趺丛L問(wèn)他們呢,是通過(guò)什么機(jī)制實(shí) 現(xiàn)的呢?HTML檔,向程序們,提供了訪問(wèn)其元素的端口,這就是 HTML DOM其定 義了一套標(biāo)準(zhǔn)的針對(duì)HTML文檔的對(duì)象訪問(wèn)或操作的機(jī)制?,F(xiàn)在 DOM有多個(gè)版 本,本文還是以最基礎(chǔ)的 DOM 1(98年
21、頒布)這個(gè)版本。1、VBA訪問(wèn)IE網(wǎng)頁(yè)文檔的程序模板講訪問(wèn)前,我們先簡(jiǎn)要講講,如何用 VBA調(diào)用IE,直接給個(gè)模板吧,詳細(xì)的 IE對(duì)象的屬性和方法等,我們后面的課會(huì)再講:Sub test()Dim ie, dmtSet ie = CreateObject(InternetExplorer.Application)創(chuàng)建一個(gè)IE對(duì)象With ie.Visible = True 顯示它.navigate 加載某個(gè)頁(yè)面Do Until .ReadyState = 4 等待頁(yè)面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁(yè)面文檔,賦予 dmt變 量開(kāi)始操縱頁(yè)
22、面,或者提取數(shù)據(jù)啦End WithEnd Sub通過(guò)上面這個(gè)模板,我們就可以創(chuàng)建一個(gè) IE對(duì)象,并將其頁(yè)面文檔對(duì)象賦 予dmt變量,這樣,我們通過(guò)dmt變量,就可對(duì)頁(yè)面元素,進(jìn)行后續(xù)的訪問(wèn)以及 操作。2、HTML DOW象和我們 EXCEL的對(duì)象集合的層次結(jié)構(gòu)類(lèi)似( WORKBOOKS-WORKSHEETS-CELLS 等),HTMLDO岫網(wǎng)頁(yè)文檔也組織了一個(gè)對(duì)象集合的分層次模型。另外,從上一 節(jié)標(biāo)簽和元素的學(xué)習(xí),大家也可以大致的得知,元素是可以擁有元素的,所以, 這個(gè)分層的模型完全是合理的。HTML DOM對(duì)象模型類(lèi)似如下圖:但是,VBA直接支持調(diào)用的對(duì)象有限,如下:對(duì)象描述Document
23、代表整個(gè)HTML文檔,可被用來(lái)訪問(wèn)頁(yè)面中的所有元素Anchors代表a兀素集合Body代表body兀素Forms代表form兀素集合Frames代表 jult或 jult集合Images代表img兀素集合Links代表link兀素集合Options代表option 兀素集合(select兀素里面上以直接使用)Cells代表td兀素集合(table兀素里面上以直接使用)Rows代表tr 兀素集合(table兀素里面上以直接使用)All對(duì)象集合,提供對(duì)文檔中所有 HTML元素的訪問(wèn)。VBA支持直接調(diào)用對(duì)象的元素,調(diào)用就非常方便了,可以用序號(hào)調(diào)用,例如forms(0),也可以按名稱(chēng)/ID調(diào)用,例如f
24、orms( “名稱(chēng)/ID ”)。其他沒(méi)法直接調(diào)用對(duì)象的元素,可以間接從通用all對(duì)象集合中去調(diào)用該元 素或該元素對(duì)應(yīng)的dom對(duì)象,或者還可以從文檔樹(shù)模型去調(diào)用。如下闡述。3、文檔樹(shù)在HTML DOW,文檔的每一部分都是 節(jié)點(diǎn),整個(gè)文檔被定義為一個(gè) 文檔節(jié) 點(diǎn),每個(gè)標(biāo)簽是一個(gè)元素節(jié)點(diǎn),包含在元素中的文本是文本節(jié)點(diǎn),每一個(gè)元素的 屬性是一個(gè)屬性節(jié)點(diǎn)。形象的比喻做一棵樹(shù)吧,根節(jié)點(diǎn)就是html ,主干就是body等,枝干就是body 內(nèi)含的各種元素節(jié)點(diǎn),葉子和花就是元素節(jié)點(diǎn)關(guān)聯(lián)的元素的屬性(屬性節(jié)點(diǎn))或 內(nèi)含文本(文本節(jié)點(diǎn))。自己畫(huà)的圖太丑了,直接引用 w3school的圖吧:當(dāng)HTML DOME解析
25、網(wǎng)頁(yè)文檔的時(shí)候,就按整個(gè)文檔的結(jié)構(gòu)生成一棵樹(shù),全 部保存在內(nèi)存中,我們可以隨時(shí)訪問(wèn)任何節(jié)點(diǎn)。總之,網(wǎng)頁(yè)文檔,可以說(shuō)是由元素組合而成的,也可以說(shuō)是由節(jié)點(diǎn)連接而成 的樹(shù)構(gòu)造的。節(jié)點(diǎn)是文檔樹(shù)結(jié)構(gòu)中特有的名詞,元素是節(jié)點(diǎn),但是節(jié)點(diǎn)不一定是 元素,節(jié)點(diǎn)還有文檔節(jié)點(diǎn)、文本節(jié)點(diǎn)、屬性節(jié)點(diǎn)等;元素是元素節(jié)點(diǎn)的擴(kuò)展,元 素可以擁有屬性還有文本。初學(xué)者不是很必要糾結(jié)元素和節(jié)點(diǎn)的區(qū)別,這個(gè)需要 甚至數(shù)據(jù)結(jié)構(gòu)、類(lèi)和繼承等知識(shí)??纱笾吕斫鉃?,同一個(gè) html dom對(duì)象,提供 的兩個(gè)不同接口。有興趣的朋友,可以按 F8運(yùn)行下面這個(gè)程序,然后本地窗口 觀察bd這個(gè)dody對(duì)象,你會(huì)發(fā)現(xiàn),他既有支持 node (節(jié)點(diǎn))的相
26、關(guān)屬性和方 法,也提供了 element (元素)的相關(guān)屬性和方法。Sub test 0;Dim i e, dm此 bdSet i e - Cr eat eObject (*InternetEacplorer. ApplWi th i e.Visible - True,顯示它.navi gate http: /www. bai du. com 加載某Do Lfatil . ReadyState = 4 等將頁(yè)面加載完DoEventsLoopSet dnit = . da cum exit 將工E瀏覽器加載的頁(yè)Set bi = dmt. bodyEnd WithEnd Sut表達(dá)式值1類(lèi)型-|+
27、| orumloadouterHTfflL4Z1 oo cum #ntVari ant/Obj act“ String“攜 StringObi ec t/KTMWocw ent1 卜御 p entEl也用電力tIHTMLElertt/HTMLHtriilEl , nt|VBAProjftct. 1MK1. tutp ar entNod&IMMLDOMNode/HTMLHtmlEl ement p srentl ex tEdi t N otent4+ pr&vicusSibliiWMLDQMNd/HIMLH dl tmcni- r&dy5tttVwri ut/StrintSub test()創(chuàng)建
28、一個(gè)IEDim ie, dmt, bdSet ie = CreateObject(InternetExplorer.Application)對(duì)象With ie.Visible = True 顯示它.navigate 加載某個(gè)頁(yè)面Do Until .ReadyState = 4 等待頁(yè)面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁(yè)面文檔,賦予 dmt變量Set bd = dmt.body 將文檔的body賦予bd變量End WithEnd Sub4、如何通過(guò)文檔樹(shù)查找所需的網(wǎng)頁(yè)元素打個(gè)比方吧,當(dāng)我們要掏大樹(shù)上的鳥(niǎo)窩,有幾種方式呢?(1)首先,當(dāng)我們
29、可以目測(cè)到,鳥(niǎo)窩在哪個(gè)節(jié)點(diǎn)的時(shí)候,我們可以用梯子, 爬上去,直接掏。因此,當(dāng)我們可以很清晰的觀測(cè)到,節(jié)點(diǎn)的某些屬性時(shí),就可 以直接定位它。元素節(jié)點(diǎn)的主要的定位屬性有:id、nameffi索引號(hào)。還記得嗎, 元素起始標(biāo)簽的語(yǔ)法: ,當(dāng)初一定 很疑惑吧,為啥要有名字或id等屬性,現(xiàn)在明白了吧,和我們的姓名和學(xué)號(hào)一 樣,為了比較容易的找到我們。那索引號(hào)是什么呢,就例如我們從樹(shù)根出發(fā),清點(diǎn)樹(shù)上的果子,給每個(gè)果子 編號(hào),這樣我們就很容易知道,哪個(gè)號(hào)的果子成熟了,或者被蟲(chóng)子咬了。一樣的, 我們可以按源代碼書(shū)寫(xiě)的順序,給每類(lèi)的元素的成員進(jìn)行編號(hào)(類(lèi)似每類(lèi)元素, 形成一個(gè)數(shù)組,從0開(kāi)始編號(hào))。通過(guò)元素類(lèi)別和編
30、號(hào),我們可以很容易的找到 它。另外,例如我們中學(xué)的老師,上課時(shí),要抓人提問(wèn),可以用學(xué)號(hào),也可以通 過(guò)小組,哪一排,第幾個(gè)學(xué)生,起來(lái)提問(wèn)。因此,索引號(hào),也有整個(gè)文檔的,和 同類(lèi)元素之分。殊途同歸,無(wú)論你點(diǎn)這個(gè)學(xué)員的學(xué)號(hào),還是從他的組別的座位號(hào) 去找他,都是可以的。所以,按統(tǒng)計(jì)方式或者起始節(jié)點(diǎn)的不同,索引號(hào)也會(huì)不同。剛剛說(shuō)的查找工具(也就是打比方里面的梯子)有以下這些:getElementById( “元素的id屬性)或all( “元素的id屬性”):返回?fù)?有指定id的元素集合getElementsByName(“元素的 name屬性)或 all( “元素的 name屬性”): 返回?fù)碛兄付Q(chēng)
31、的元素的集合getElementsByTagName(“標(biāo)簽名稱(chēng)”)或 all.tags( “標(biāo)簽名稱(chēng)”):返回 該類(lèi)標(biāo)簽的元素集合。all(索引號(hào)):返回指定索引號(hào)的元素節(jié)點(diǎn)。(2)其次,當(dāng)我們僅聽(tīng)到鳥(niǎo)鳴聲,卻不知道鳥(niǎo)窩在哪里的時(shí)候,有時(shí)候, 我們只能順藤摸瓜,開(kāi)始爬樹(shù),沿著樹(shù)干進(jìn)行判斷,最后攀爬到鳥(niǎo)窩處。或者, 可能大概知道個(gè)方位,先架梯子,到某個(gè)主干,再?gòu)哪抢镩_(kāi)始查找。因此,當(dāng)我 們找不到清晰的屬性去定位網(wǎng)頁(yè)元素時(shí),我們可以從body元素/節(jié)點(diǎn)開(kāi)始,一級(jí)級(jí)去尋找,也可以先定位到它的毗鄰節(jié)點(diǎn)/元素,再通過(guò)判斷,去查找它的精確 位置。從節(jié)點(diǎn)方面而言,樹(shù)形的模型的節(jié)點(diǎn)有個(gè)特征,除了根節(jié)點(diǎn),每個(gè)
32、節(jié)點(diǎn)均只 有一個(gè)父節(jié)點(diǎn)(parentNode),有一個(gè)或者多個(gè)子節(jié)點(diǎn)(childNodes ,類(lèi)似一個(gè) 對(duì)象集合或?qū)ο髷?shù)組,從0開(kāi)始編號(hào))。因此,通過(guò)節(jié)點(diǎn)的親屬關(guān)系,進(jìn)行判斷 查找,我們就可以一步步的在父子節(jié)點(diǎn)中切換,獲取所需的元素。節(jié)點(diǎn)有一些屬性,可以利于我們的查找判斷,如下:nodeName(節(jié)點(diǎn)名稱(chēng)):元素節(jié)點(diǎn)的名稱(chēng)為其標(biāo)簽名,屬性節(jié)點(diǎn)的名稱(chēng)為其 屬性名稱(chēng);nodeValue (節(jié)點(diǎn)值):文本節(jié)點(diǎn)的值為其包含的文本,屬性節(jié)點(diǎn)的值為其包 含的屬性值;nodeType (節(jié)點(diǎn)類(lèi)型):元素節(jié)點(diǎn)為1、屬性節(jié)點(diǎn)為2、文本節(jié)點(diǎn)為3、注釋 節(jié)點(diǎn)為8、文檔節(jié)點(diǎn)為9另外,從元素方面而言,要定位元素的父元素
33、可以通過(guò) parentElement屬性, 定位元素的子元素集合可以通過(guò) children屬性,判斷其標(biāo)簽的名稱(chēng)(tagname), 他的值(value),內(nèi)含文本(innertext )等方式來(lái)進(jìn)行查找。最后,定位節(jié)點(diǎn)/元素的下一個(gè)同級(jí)兄弟可以通過(guò) nextSibling 屬性,定位 上一個(gè)同級(jí)兄弟可以用previousSibling 屬性。示例的話,后面一起展示。先學(xué)懂方法吧5、網(wǎng)頁(yè)元素分析工具工欲善其事,必先利其器,很多高手已經(jīng)提供給我們很多好用的網(wǎng)頁(yè)元素的 分析工具,我們?cè)趺从盟麄兡??講兩個(gè)工具, 一個(gè)是網(wǎng)頁(yè)精靈(按鍵精靈論壇的 作品),一個(gè)是firebug。首先是網(wǎng)頁(yè)按鍵精靈。如附件
34、,操作如下圖,輸入網(wǎng)址,按“網(wǎng)頁(yè)分析” , 然后按F9,將鼠標(biāo)指向需要分析的頁(yè)面元素,例如文本框,則得出元素相關(guān)的 屬性。下方得出的有,標(biāo)簽的名稱(chēng),元素的id ,元素的name元素的索引號(hào)(第 幾個(gè)input標(biāo)簽,從0開(kāi)始編號(hào))。復(fù)習(xí)下上面說(shuō)的概念?就想象網(wǎng)頁(yè)文檔是個(gè) 班級(jí),標(biāo)簽就是學(xué)習(xí)小組,其中input這個(gè)學(xué)習(xí)小組里面,有個(gè)人的名字 name 是wd,他的工號(hào)id是kw,它在小組里面座位號(hào)是00我們,就是用這些標(biāo)示, 來(lái)找到這個(gè)元素的。另外,在巾refox 瀏覽器,還可以使用firebug ,直接對(duì)頁(yè)面元素單擊右鍵,使用“使用firebug查看元素”的菜單。這樣可以直接觀察到該元素的網(wǎng)頁(yè)源
35、代 碼,然后進(jìn)行分析。新聞網(wǎng)頁(yè)貼_吧組堇MP3圖龍觀題地圉等切 叁制(Q 玷貼但) 刪除)HM23 | 更多?全選為此搜至等加關(guān)譴字CK)涔加字典但)董耘春9)4頁(yè)把百齒琳商1M囿S5三樓 II Ahfiut R又idii6使用FWbug查看兀索J網(wǎng)絡(luò) 同ookies 插箱 tnput#kw_ipt 5pan,sjpt_wr fbnn diviiin drv=m body html 國(guó) -M-pan 匚值5$=.工ipt_*rinput id=kw cla55=5_ipt type=te,xt maxlengtli=10Q name=wd1 autocom pleteaff6、常見(jiàn)HTML D
36、OW象的屬性、方法以及示例(1)通用的屬性和方法i.四個(gè)常用的通用屬性對(duì)象.innerHtml :對(duì)象內(nèi)部的HTML弋碼對(duì)象QuterHtml :對(duì)象的HTML弋碼,包括又t象本身的 HTMlB簽對(duì)象.innerText :對(duì)象內(nèi)部的文本對(duì)象QuterText :對(duì)象的文本,包括對(duì)象本身的文本舉例,我們?nèi)ゲ蹲桨俣仁醉?yè),那個(gè)提交搜索的表單。這個(gè)表單的名稱(chēng) 是“ f,然后查詢(xún)它的innerHtml和OuterHtml。Sub test()創(chuàng)建Dim ie, dmt, anSet ie = CreateObject(InternetExplorer.Application)一個(gè)IE對(duì)象With ie
37、加載某個(gè)頁(yè)面等待頁(yè)面加載完畢.Visible = True 顯示它.navigate 1Do Until .ReadyState = 4 DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁(yè)面文檔,賦予 dmt 變量Set an = dmt.forms(f)Debug.Print innerHtml:, an.innerhtmlDebug.Print OuterHtml:, an.OuterHtmlEnd WithEnd Sub觀察一下立即窗口輸出的區(qū)別,很容易就知道 inner和outer的區(qū)別了。ii. 一個(gè)常用的通用方法fireevent(發(fā)送事件)HTM
38、L DOW象,和我們EXCEL寸象,都具有屬性、方法和事件。前面所述 的innerhtml那些都是屬性,方法就是我們要給這個(gè)對(duì)象執(zhí)行什么動(dòng)作,比如點(diǎn)擊網(wǎng)頁(yè)上一個(gè)按鈕,按鈕這個(gè)對(duì)象就被“ click ” 了,click就是按鈕對(duì)象的一 個(gè)方法。另外,網(wǎng)頁(yè)對(duì)象也像我們的工作表一樣,也支持識(shí)別事件,例如,當(dāng)按 鈕被點(diǎn)擊了,系統(tǒng)就會(huì)觸發(fā)“ oncilck ”(被點(diǎn)擊了這個(gè)事件),然后依據(jù)網(wǎng)頁(yè)源 代碼里面設(shè)定好處理步驟去處理這個(gè)事件。主要的事件,整理如下:事件適用元素何時(shí)觸發(fā)onloadBody 和 frame文檔加載時(shí)onchange表單元素當(dāng)元素改變時(shí)onsubmit表單元素當(dāng)表單被提交時(shí)onres
39、et表單元素當(dāng)表單被重置時(shí)onselect表單元素當(dāng)元素被選取時(shí)onblur表單元素和超鏈接元素當(dāng)元素失去焦點(diǎn)時(shí)onfocus表單元素和超鏈接元素當(dāng)元素狀得焦點(diǎn)時(shí)onkeydownBody和表單元素當(dāng)鍵盤(pán)被按下時(shí)onkeypressBody和表單元素當(dāng)鍵盤(pán)被按下后又松開(kāi)時(shí)onkeyupBody和表單元素當(dāng)鍵盤(pán)被松開(kāi)時(shí)onclick大部分元素當(dāng)鼠標(biāo)被單擊時(shí)ondblclick大部分元素當(dāng)鼠標(biāo)被雙擊時(shí)onmousedown大部分元素當(dāng)鼠標(biāo)按鈕被按下時(shí)onmousemove大部分元素當(dāng)鼠標(biāo)指針移動(dòng)時(shí)onmouseout大部分元素當(dāng)鼠標(biāo)指針移出某元素時(shí)onmouseover大部分元素當(dāng)鼠標(biāo)指針懸停于某
40、元素之上時(shí)onmouseup大部分元素當(dāng)鼠標(biāo)按鈕被松開(kāi)時(shí)那日reevent這個(gè)方法又是何用呢,他的作用就是,代替我們的一些操作, 直接激發(fā)某些對(duì)象的某些事件。例如我們附件的fireevent示例.html ,點(diǎn)擊文檔主體的點(diǎn)我一下”,將 彈出對(duì)話框。下面,我們用程序模擬,這個(gè)點(diǎn)擊事件的觸發(fā)。新建一個(gè)excel ,放置于和fireevent 示例.html同文件夾下的目錄里。Q & e測(cè)試文檔點(diǎn)關(guān)一下Windows Internet Expl_! 嘻嘻你點(diǎn)我了,Sub test()Dim ie, dmt, fmSet ie = CreateObject(InternetExplorer.Appl
41、ication)創(chuàng)建一個(gè)IE對(duì)象With ie.Visible = True 顯示它.navigate ThisWorkbook.Path & fireevent示例.html加載某個(gè)頁(yè)面Do Until .ReadyState = 4 等待頁(yè)面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁(yè)面文檔,賦予 dmt 變量dmt.body.FireEvent onclick觸發(fā) body 的點(diǎn)擊事件End WithEnd Sub這樣,程序就模擬了我們點(diǎn)擊了 body后激發(fā)的事件。一樣,我們也可以用 dmt.body.Click ,這個(gè)方法取激發(fā)事件,殊途
42、同歸。Fireevent主要用于,有的表單的校驗(yàn)機(jī)制非常強(qiáng),需要光標(biāo)聚焦了,文本 change 了等等,才能提交表單,這些事件的模擬只能靠fireevent 了,其他方法就很難替代了。(2)表單和表單控件對(duì)象表單form對(duì)象,有一個(gè)方法比較重要,就是 submit,這個(gè)方法提供了表單 的提交的動(dòng)作。如果我們捕捉頁(yè)面的提交按鈕非常困難時(shí),有時(shí)候只要對(duì)表單, 執(zhí)行submit方法,表單也是可以提交的,不需去點(diǎn)擊提交按鈕。表單控件,文本輸入類(lèi)控件,最常用就是value的屬性了,通過(guò)這個(gè)屬性,可以往文本框里面添加文本。單選框、復(fù)選框,常用的就是checked屬性了,如果為true就是被選中了, 或者直
43、接使用click方法也行。下拉列表呢,如果是單選列表框,可通過(guò) selectedIndex 屬性去設(shè)置選中項(xiàng) (下拉選項(xiàng),從1開(kāi)始編號(hào),如2就是選擇下拉列表的第二個(gè)選項(xiàng)),也可以通 過(guò)value屬性,直接把value指定為要選定的option的value即可,但多選列 表框不可用這兩個(gè)屬性。另外,所有類(lèi)別的列表框,都可以通過(guò)其內(nèi)含對(duì)象集合 options。,設(shè)置某個(gè)options(x) 的selected 屬性為true ,來(lái)設(shè)置選中項(xiàng)。還是以百度首頁(yè)為示例,我們用程序模擬鍵入查詢(xún)數(shù)據(jù)“ exceltip ”,然后 提交查詢(xún)?yōu)檠菔景伞ub test()Dim ie, dmt, fmSet i
44、e = CreateObject(InternetExplorer.Application)創(chuàng)建一個(gè)IE對(duì)象With ie.Visible = True 顯示它.navigate 加載某個(gè)頁(yè)面Do Until .ReadyState = 4 等待頁(yè)面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁(yè)面文檔,賦予 dmt 變量Set fm = dmt.forms(f)用表單的名稱(chēng)f,捕捉表單對(duì)象dmt.all(kw).Value = exceltip用搜索欄的 id ” kw” 捕捉它,并鍵入exceltipdmt.all.tags(input)(3).Click 用“百度一下”按鈕
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版一年級(jí)語(yǔ)文下冊(cè)第19課《咕咚》精美課件
- 二零二五年度創(chuàng)意市集攤位租賃運(yùn)營(yíng)合同12篇
- 二零二五版安全防護(hù)設(shè)施小型建筑承包合同3篇
- 二零二五版石料礦山環(huán)保監(jiān)測(cè)與治理合同:污染控制與生態(tài)修復(fù)3篇
- 二零二五年度離婚協(xié)議與訴訟離婚費(fèi)用預(yù)算對(duì)比合同2篇
- 二零二五年度設(shè)備維保與市場(chǎng)拓展服務(wù)合同3篇
- 設(shè)備箱門(mén)制作施工方案
- 二零二五版商業(yè)地產(chǎn)土地抵押借款合同樣本3篇
- et板保溫板施工方案
- 蘇州綜合管網(wǎng)施工方案
- 高考英語(yǔ)閱讀理解練習(xí)4篇(附解析)
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 五年級(jí)美術(shù)下冊(cè)第9課《寫(xiě)意蔬果》-優(yōu)秀課件4人教版
- 節(jié)能降耗課件
- 尼爾森數(shù)據(jù)市場(chǎng)分析報(bào)告
- 氧氣霧化吸入法
- 非標(biāo)自動(dòng)化設(shè)備技術(shù)規(guī)格書(shū)和驗(yàn)收標(biāo)準(zhǔn)(模板)
- 領(lǐng)導(dǎo)干部個(gè)人有關(guān)事項(xiàng)報(bào)告表(模板)
- GB/T 7631.18-2017潤(rùn)滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類(lèi))的分類(lèi)第18部分:Y組(其他應(yīng)用)
- GB/T 33141-2016鎂鋰合金鑄錠
- 2023譯林版新教材高中英語(yǔ)必修二全冊(cè)重點(diǎn)短語(yǔ)歸納小結(jié)
評(píng)論
0/150
提交評(píng)論