VBA處理網(wǎng)基礎(chǔ)二分解_第1頁
VBA處理網(wǎng)基礎(chǔ)二分解_第2頁
VBA處理網(wǎng)基礎(chǔ)二分解_第3頁
VBA處理網(wǎng)基礎(chǔ)二分解_第4頁
VBA處理網(wǎng)基礎(chǔ)二分解_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、VBA的WE用系列教程一一HTMLC檔篇上節(jié)課,我們說了 HTTP1訊,HTTP訊一般情況返回的是啥呢?是頁面的 源代碼。例如,我們訪問百度,返回了,“” 一大堆東西。就是,我們在頁面點擊右鍵,“查看頁面源文件”,如圖:后退出) 前說Q)背景另存為) 設(shè)置為背景笆) 復(fù)制背景(Q 設(shè)為桌面項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、正是把這堆源代碼,翻譯成我們可視的生動地頁面的。就像 VBA一樣,這堆代碼是什么語言呢,就是通常所說的,超文本標(biāo)記語言。為啥叫標(biāo)記語言,因為它只能用于展示,展示我們所看到的網(wǎng)頁頁面。不是 編程語言哦。為啥叫超文本呢,大家仔細(xì)看,這堆源代碼有什么特征呢,就是有很多 這樣的文本,一般而言,我們把叫做標(biāo)簽,細(xì)心的同學(xué)可以發(fā)現(xiàn),標(biāo)簽都是 成對出現(xiàn)的,例如“ 百度一下,你就知道 。第一個叫做開始標(biāo)簽,第二個多帶了個/叫結(jié)束標(biāo)簽。標(biāo)簽之間就是網(wǎng)頁的文本,例如這個 例子,就是我們網(wǎng)頁標(biāo)題的文本“百度一下,你就知道”。所以,標(biāo)簽的作用就 是,給文本打上標(biāo)記,告訴瀏覽器,怎么顯示這個文本。例如本例,要求瀏覽器

5、把“百度一下,你就知道”顯示成網(wǎng)頁的標(biāo)題。HTML文檔二文本+標(biāo)簽,所以就超文本啦空百七下,你就幻道總之,HTMLM是用來描述網(wǎng)頁的語言,像上面所說的 這樣的標(biāo)簽, 是有一整套的,呵呵。我們的教程,并不是為了教大家,怎么去做網(wǎng)頁,設(shè)計網(wǎng)頁,因此,大家僅 僅需要,大致的了解一些 HTM煤列的文本標(biāo)記語言的基礎(chǔ)即可,知道常用的幾 個標(biāo)簽,有什么用即可。一、網(wǎng)頁數(shù)據(jù)提取常見的HTM而簽/元素上面說了,標(biāo)簽是用來描述網(wǎng)頁的。瀏覽器讀取HTML文檔,識別標(biāo)簽,并按標(biāo)簽要求以網(wǎng)頁進(jìn)行顯示文本。大部分標(biāo)簽都是成隊出現(xiàn)的。起始標(biāo)簽和結(jié)束標(biāo)簽之間的所有文本,都叫做 元素。也就是這個格式就是:元素的內(nèi)容 標(biāo)簽是可

6、以擁有屬性的,因此起始標(biāo)簽,有時候格式如下:屬性提供了元素的一些附加信息啦,后面我們講具體標(biāo)簽,大家就會見到屬 性怎么用。另外,注意,元素是可以擁有元素的,即某個元素的內(nèi)容有時候是一個子元 素。元素這東西,比較抽象,我們可以把它且當(dāng)作一個對象來理解,例如工作簿 對象,每個工作簿的名稱都不一樣(屬性),每個工作簿里面都有工作表(子元 素),每個表都有名稱(屬性),里面填寫的內(nèi)容也不一樣(元素的內(nèi)容)。下面講講常見的和我們網(wǎng)頁數(shù)據(jù)提取要常見的元素 /標(biāo)簽。(一)整體框架結(jié)構(gòu):每個網(wǎng)頁文檔,都是有個大致的框架,框架如下: 網(wǎng)頁標(biāo)題 網(wǎng)頁文檔主體把上面這段文本保存在TXT文件里面,然后另存.html格

7、式,就可以得到最基礎(chǔ)的頁面。網(wǎng)夏沃先, 文件(E)的(且查看(Y)幫助(出Firefox網(wǎng)頁文檔主體從上面的框架代碼, 內(nèi)含兩個元素、一個是 V-注釋:文嚶元素 一注釋:文檔頭部,文4網(wǎng)頁標(biāo)題-注:文1卷 8網(wǎng)頁文檔主體我們可以看出,一般的頁面,都有 html元素,其一般 head元素,一個是body元素。Head元素僅僅說明文檔的相關(guān)消息,并不展示文檔實體,body元素才是真正展示文檔主體的,所有要 在頁面展示的元素,都要在body內(nèi)進(jìn)行書寫。后面的元素的測試,都是以替換掉 body元素內(nèi)的文本”網(wǎng)頁文檔主體”進(jìn)行書寫,后續(xù)不再復(fù)述這個框架。(二)段落Firefox Cf 百/ J file

8、毓二段落三特別是提取小說,新聞等頁面的消息,文本都是一段一段的,這樣的頁面, 一般是通過標(biāo)簽實現(xiàn)的。這個沒啥好說的,自己動手試看看就知道。文件源相格式查看包)希助出)351。一注釋;文檔跟元素一head,一注格 支檔頭部,文檔科 內(nèi)容一1段落測試文檔 ?一注釋:文檔主體一 度麓一印 段落三所以,當(dāng)運用ie/webbrowser方式提取這類網(wǎng)頁的時候,歷遍段落p元素即 可。(三)超鏈接超鏈接是我們最常見的頁面元素,基本的門戶網(wǎng)站都有他,點了以后,可以 跳轉(zhuǎn)到另一個頁面。一般語法格式:顯示的超鏈接文本Target屬性,表示的是,當(dāng)我們點擊超鏈接,是在原頁面進(jìn)行跳轉(zhuǎn)(_self ) 還是新建頁面進(jìn)行

9、跳轉(zhuǎn)(_blank )。測試做個ET的超鏈接吧。exuHtip4-注釋:文檔跟元素一分 注釋:文檔頭部,文檔相關(guān)消息,井S軀襠內(nèi)容一超窿接測試文檔/titlfr !一注釋:文襠主體aexceltip(四)圖像圖像標(biāo)簽用法和超鏈接類似,語法:alt屬性代表的是,當(dāng)圖片無法加載的時候,替換顯示的文本文件(日頻(日理團(tuán)出)加載 ET 的 LOGO的頁面玩玩(圖宓出劉巖2IHTML 醫(yī)呼*乂戴程|由乂百白噂程|看其培造;Il |$KC(五)表格表格是我們網(wǎng)頁最常見的,也是我們網(wǎng)頁數(shù)據(jù)提取,最需要打交道的,其實它非常簡單,框架如下,每行用 ,每個單元格用:第一行第一個單元格 m卜二HTML音訂的LOG0

10、是:Mmb vb-注釋:文搭案元素一4v注釋:文襠頭部,文襠相關(guān)消息,并下提供立襠內(nèi)容一, title*國爆測試交檔 a-法釋:點駐體工vpE南LQGQ是:菖件但州M曰百百也)第一行第二個單元格 第二行第一個單元格第二行第二個單元格Firefox *:file:/C:/DocumenIs%2OSettings/圖5匚:晨常測忒協(xié)0 口 % file:/C:/Documents and文件任)扁版也)查看出)耗即(H) V-注釋:文襠噩元素一第一行第一個單元格第一行第二個單元格 4一注釋:文檔頭部,文檔第二行第一個單元格第二行第二個單元格 titles圖像測試文檔 9注釋:文檔主體第一行第 f

11、單元格 td)第一行第二個單元格第二行第一個單元格M/td 第二行第二個單元格(六)列表很多時候,數(shù)據(jù)也經(jīng)常以列表形式存在的,列表有三種:無序、有序和自定義。分別框架如下:1、無序列表 函數(shù) VBAFirefox文件(E)聚輯(日查看應(yīng))晉助出) /一注釋:文桎函數(shù) VBA 1注釋:文無序列表測試文欄4/head a 1注釋:頭li* 函數(shù) VBA2、有序列表 圖書VBA 函數(shù) 視頻基操 圖表 數(shù)透 Firefox,. .無序兄表虬試文檔噩:file: / / /C: / Docu ments%20a nd %20Sei C !3fife:/文件(E)編輯(印查看(旦)幫助(H) 一注釋:文檔

12、主體1 .圖書1. VBA2.函數(shù)2 .姬1 .基揉2 .圖表 工數(shù)透圖書VBAW3、自定義列表 女第一節(jié)課dd綱絡(luò)通訊女第二節(jié)課HTMLFirefox整:file: /C:/ Documents% 20a nd % 20Settini * G 由 8第一節(jié)課網(wǎng)絡(luò)通訊, 第二節(jié)課HTML文件(日碼/)查看包需卻出)月序列表決Hat乂回 一注釋:文檔主體第一節(jié)課dtA*孫網(wǎng)絡(luò)通訊*/dd 第二節(jié)課 HTML(七)表單和表單控件除了表格,表單也是我們在網(wǎng)頁數(shù)據(jù)提取,頁面操控最常見到的元素。例如 我們注冊用戶,例如我們的微博登陸,例如我們的百度搜索,其實都是表單。我 們先來看一個例子:青在文本框輸入

13、要搜索的關(guān)鍵字,后按提交,將提交百度進(jìn)行搜索form method=get action=Firefox .表電近造雌 .田TML表單&SA.的 7/C:, Docume nt5 and Setting AdminisntQr.立面軍去最建鉆丈翦 htmi請在文本框輸入要圉索伊關(guān)犍才,布接提交,將提交百度進(jìn)行搜安草果場I 如一日sS(v)書即出) 1-7上上fl3LE4一:fife/C/DCtfiintS%20ai%2CtBnqs/AdmintelTator/%E6%Al%8C%E9%iiyWQ72%E6flM請在文本框輸入要搜索的關(guān)鍵字.后按提交,將提交百度進(jìn)行澳素 dnput 0=飛叱印曰

14、皿山士=提交、例如在文本框輸入“蘋果”后,按提交按鈕:Firefox百度級理要 /J a a . ba idu co rn/ s?wd=Bai四百度 新聞歐五貼吧圮道MP3平果蘋果(中國)官方在線商店- Apple Stoe (中國)A - 一. A * & Ur r _=1. . a I I44*- - 4s. b這個表單模擬的是百度搜索,在文本框輸入關(guān)鍵字后,按提交,將跳轉(zhuǎn)至百 度的搜索結(jié)果的界面。呵呵,奇妙吧。如何實現(xiàn)的呢?細(xì)心的同學(xué)會發(fā)現(xiàn)吧,表單 form這個元素,有“ method”和“ action ”兩 個屬性,action屬性指定的就是,提交表單后,向這個屬性指定URL送htt

15、p請求(呵呵,涉及到第一節(jié)課的知識啦),method這個屬性設(shè)定的就是,要按照 get或者post等方式發(fā)送http請求。復(fù)習(xí)下第一節(jié)課吧,采用 get的方式呢, 參數(shù)將在URUt面加個?號,然后發(fā)送,采用post的方式呢,將在消息主體里面 投遞查詢參數(shù)。那發(fā)送http請求的參數(shù)從哪里來的?就是從表單元素內(nèi)含的各種下屬元素, 提取其name屬性的值,作為參數(shù)名,然后提取該元素的 value屬性作為參數(shù)值(value屬性的值有時候是由我們輸入的,例如本例,雖然我們指定了默認(rèn)的 value屬性的值為exceltip,但是我們可以手動輸入,把它修改成“蘋果”)。然 后瀏覽器就用參數(shù)名=參數(shù)值和&進(jìn)行

16、連接(還是上節(jié)課的知識)用起來。就如本 例,提交后,觀察 URL為: 蘋果,wb就是第一個 input元素的屬性值,蘋果就是我們輸入的,賦予第一個 input元素的value屬 性的值。下面,我們講講表單主要的內(nèi)含子元素吧。1、輸入標(biāo)簽( )其語法是: 其類型由type屬性定義,常見的有:text (文本框)、Radio (單選按鈕)、 Checkboxes.(復(fù)選框)、submit (提交按鈕)、hidden (隱藏)、reset (重置)和 password (密碼框)等。其中注意,其中單選框和復(fù)選框的是否選中,由checked屬性指定,如果值是“ checked”則選定。不多說了,看例子

17、吧。(文本框和提交 按鈕就不做了,上面都舉例了。密碼框同,類似的) 表格設(shè)計文檔處理 幻 燈片vip普通會員Firefox圖書 視頻 動畫 圖解 上表單測試文檔x, G 百/file:/C/Documents and SeM表格設(shè)計口文檔處理上幻燈片vip普通會員重苴注意,當(dāng)表單提交的時候,發(fā)送 http請求時,單選框和復(fù)選框,僅發(fā)送checked屬性為 checked”的元素。一樣是把標(biāo)記了 checked的元素的name屬性值和value屬性值用起來。2、下拉歹U表其語法:如果存在multiple=multiple的屬性設(shè)定,則允許菜單多選,否則單選。Size是設(shè)置可見的菜單條目數(shù)。其下級

18、元素,option代表的是其每個菜單項目,語法為:顯示文字 一樣,value屬性接著的就是發(fā)往服務(wù)器的值,當(dāng)提交的時候,就是將select 的name屬性值與用戶選擇的某項option元素的value屬性值連接,進(jìn)行發(fā)送。Option元素的selected屬性設(shè)置的是默認(rèn)選中的菜單項。示例如下:單選選擇列表 多重選擇列表,按住shift或ctrl鍵進(jìn)行多重選擇excelwordpptFireroxfileV/C:/Documents and Set單選選擇列表多重選擇列表,按住或Ctrl腱進(jìn)行多重去擇excelword(八)框架標(biāo)簽和標(biāo)簽1、frameset 和 frameFrame是獨立框架

19、,就好像我們的分屏瀏覽一樣,一個屏幕,瀏覽多個畫面 一樣。語法如下:首先框架必須放置在框架結(jié)構(gòu)標(biāo)簽里面( ),其rows/columns屬性的值規(guī)定了框架每行或每列占據(jù)屏幕的面積。另外, frameset和body不能同 時使用,除非有noframes,很簡單,因為frame其實就描繪文檔了,所以,一 般不需要再有body進(jìn)行描繪。另外,框架元素一般放置于head元素內(nèi)。Frame元素的src屬性就是設(shè)定了其框架內(nèi)顯示頁面的 URL示例如下: 框架測試文檔2、iframeIframe的框架,就類似畫中畫的效果,在原頁面插入一個頁面。語法如下:Src設(shè)定框架內(nèi)要顯示的文檔的url , scrol

20、ling設(shè)置是否顯示滾動條Height和widty設(shè)置的就是它的高度和寬度。案例如下:第一個框架 第二個框架 圖片第二個框架il二的Bmi樹百度4 irtHtml就大概講這一些吧,呵呵,畢竟我們不是要做網(wǎng)頁,大家大致了解下就 是,還可以參考去學(xué)習(xí)。一般能做到,看得懂網(wǎng)頁的框架 結(jié)構(gòu)即可。二、HTML文檔對象模型(HTML DOM認(rèn)識了網(wǎng)頁文檔上面的各種元素,我們怎么訪問他們呢,是通過什么機制實 現(xiàn)的呢?HTML檔,向程序們,提供了訪問其元素的端口,這就是 HTML DOM其定 義了一套標(biāo)準(zhǔn)的針對HTML文檔的對象訪問或操作的機制?,F(xiàn)在 DOM有多個版 本,本文還是以最基礎(chǔ)的 DOM 1(98年

21、頒布)這個版本。1、VBA訪問IE網(wǎng)頁文檔的程序模板講訪問前,我們先簡要講講,如何用 VBA調(diào)用IE,直接給個模板吧,詳細(xì)的 IE對象的屬性和方法等,我們后面的課會再講:Sub test()Dim ie, dmtSet ie = CreateObject(InternetExplorer.Application)創(chuàng)建一個IE對象With ie.Visible = True 顯示它.navigate 加載某個頁面Do Until .ReadyState = 4 等待頁面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁面文檔,賦予 dmt變 量開始操縱頁

22、面,或者提取數(shù)據(jù)啦End WithEnd Sub通過上面這個模板,我們就可以創(chuàng)建一個 IE對象,并將其頁面文檔對象賦 予dmt變量,這樣,我們通過dmt變量,就可對頁面元素,進(jìn)行后續(xù)的訪問以及 操作。2、HTML DOW象和我們 EXCEL的對象集合的層次結(jié)構(gòu)類似( WORKBOOKS-WORKSHEETS-CELLS 等),HTMLDO岫網(wǎng)頁文檔也組織了一個對象集合的分層次模型。另外,從上一 節(jié)標(biāo)簽和元素的學(xué)習(xí),大家也可以大致的得知,元素是可以擁有元素的,所以, 這個分層的模型完全是合理的。HTML DOM對象模型類似如下圖:但是,VBA直接支持調(diào)用的對象有限,如下:對象描述Document

23、代表整個HTML文檔,可被用來訪問頁面中的所有元素Anchors代表a兀素集合Body代表body兀素Forms代表form兀素集合Frames代表 jult或 jult集合Images代表img兀素集合Links代表link兀素集合Options代表option 兀素集合(select兀素里面上以直接使用)Cells代表td兀素集合(table兀素里面上以直接使用)Rows代表tr 兀素集合(table兀素里面上以直接使用)All對象集合,提供對文檔中所有 HTML元素的訪問。VBA支持直接調(diào)用對象的元素,調(diào)用就非常方便了,可以用序號調(diào)用,例如forms(0),也可以按名稱/ID調(diào)用,例如f

24、orms( “名稱/ID ”)。其他沒法直接調(diào)用對象的元素,可以間接從通用all對象集合中去調(diào)用該元 素或該元素對應(yīng)的dom對象,或者還可以從文檔樹模型去調(diào)用。如下闡述。3、文檔樹在HTML DOW,文檔的每一部分都是 節(jié)點,整個文檔被定義為一個 文檔節(jié) 點,每個標(biāo)簽是一個元素節(jié)點,包含在元素中的文本是文本節(jié)點,每一個元素的 屬性是一個屬性節(jié)點。形象的比喻做一棵樹吧,根節(jié)點就是html ,主干就是body等,枝干就是body 內(nèi)含的各種元素節(jié)點,葉子和花就是元素節(jié)點關(guān)聯(lián)的元素的屬性(屬性節(jié)點)或 內(nèi)含文本(文本節(jié)點)。自己畫的圖太丑了,直接引用 w3school的圖吧:當(dāng)HTML DOME解析

25、網(wǎng)頁文檔的時候,就按整個文檔的結(jié)構(gòu)生成一棵樹,全 部保存在內(nèi)存中,我們可以隨時訪問任何節(jié)點??傊?,網(wǎng)頁文檔,可以說是由元素組合而成的,也可以說是由節(jié)點連接而成 的樹構(gòu)造的。節(jié)點是文檔樹結(jié)構(gòu)中特有的名詞,元素是節(jié)點,但是節(jié)點不一定是 元素,節(jié)點還有文檔節(jié)點、文本節(jié)點、屬性節(jié)點等;元素是元素節(jié)點的擴展,元 素可以擁有屬性還有文本。初學(xué)者不是很必要糾結(jié)元素和節(jié)點的區(qū)別,這個需要 甚至數(shù)據(jù)結(jié)構(gòu)、類和繼承等知識??纱笾吕斫鉃?,同一個 html dom對象,提供 的兩個不同接口。有興趣的朋友,可以按 F8運行下面這個程序,然后本地窗口 觀察bd這個dody對象,你會發(fā)現(xiàn),他既有支持 node (節(jié)點)的相

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 等將頁面加載完DoEventsLoopSet dnit = . da cum exit 將工E瀏覽器加載的頁Set bi = dmt. bodyEnd WithEnd Sut表達(dá)式值1類型-|+

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、一個IEDim ie, dmt, bdSet ie = CreateObject(InternetExplorer.Application)對象With ie.Visible = True 顯示它.navigate 加載某個頁面Do Until .ReadyState = 4 等待頁面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁面文檔,賦予 dmt變量Set bd = dmt.body 將文檔的body賦予bd變量End WithEnd Sub4、如何通過文檔樹查找所需的網(wǎng)頁元素打個比方吧,當(dāng)我們要掏大樹上的鳥窩,有幾種方式呢?(1)首先,當(dāng)我們

29、可以目測到,鳥窩在哪個節(jié)點的時候,我們可以用梯子, 爬上去,直接掏。因此,當(dāng)我們可以很清晰的觀測到,節(jié)點的某些屬性時,就可 以直接定位它。元素節(jié)點的主要的定位屬性有:id、nameffi索引號。還記得嗎, 元素起始標(biāo)簽的語法: ,當(dāng)初一定 很疑惑吧,為啥要有名字或id等屬性,現(xiàn)在明白了吧,和我們的姓名和學(xué)號一 樣,為了比較容易的找到我們。那索引號是什么呢,就例如我們從樹根出發(fā),清點樹上的果子,給每個果子 編號,這樣我們就很容易知道,哪個號的果子成熟了,或者被蟲子咬了。一樣的, 我們可以按源代碼書寫的順序,給每類的元素的成員進(jìn)行編號(類似每類元素, 形成一個數(shù)組,從0開始編號)。通過元素類別和編

30、號,我們可以很容易的找到 它。另外,例如我們中學(xué)的老師,上課時,要抓人提問,可以用學(xué)號,也可以通 過小組,哪一排,第幾個學(xué)生,起來提問。因此,索引號,也有整個文檔的,和 同類元素之分。殊途同歸,無論你點這個學(xué)員的學(xué)號,還是從他的組別的座位號 去找他,都是可以的。所以,按統(tǒng)計方式或者起始節(jié)點的不同,索引號也會不同。剛剛說的查找工具(也就是打比方里面的梯子)有以下這些:getElementById( “元素的id屬性)或all( “元素的id屬性”):返回?fù)?有指定id的元素集合getElementsByName(“元素的 name屬性)或 all( “元素的 name屬性”): 返回?fù)碛兄付Q

31、的元素的集合getElementsByTagName(“標(biāo)簽名稱”)或 all.tags( “標(biāo)簽名稱”):返回 該類標(biāo)簽的元素集合。all(索引號):返回指定索引號的元素節(jié)點。(2)其次,當(dāng)我們僅聽到鳥鳴聲,卻不知道鳥窩在哪里的時候,有時候, 我們只能順藤摸瓜,開始爬樹,沿著樹干進(jìn)行判斷,最后攀爬到鳥窩處?;蛘?, 可能大概知道個方位,先架梯子,到某個主干,再從那里開始查找。因此,當(dāng)我 們找不到清晰的屬性去定位網(wǎng)頁元素時,我們可以從body元素/節(jié)點開始,一級級去尋找,也可以先定位到它的毗鄰節(jié)點/元素,再通過判斷,去查找它的精確 位置。從節(jié)點方面而言,樹形的模型的節(jié)點有個特征,除了根節(jié)點,每個

32、節(jié)點均只 有一個父節(jié)點(parentNode),有一個或者多個子節(jié)點(childNodes ,類似一個 對象集合或?qū)ο髷?shù)組,從0開始編號)。因此,通過節(jié)點的親屬關(guān)系,進(jìn)行判斷 查找,我們就可以一步步的在父子節(jié)點中切換,獲取所需的元素。節(jié)點有一些屬性,可以利于我們的查找判斷,如下:nodeName(節(jié)點名稱):元素節(jié)點的名稱為其標(biāo)簽名,屬性節(jié)點的名稱為其 屬性名稱;nodeValue (節(jié)點值):文本節(jié)點的值為其包含的文本,屬性節(jié)點的值為其包 含的屬性值;nodeType (節(jié)點類型):元素節(jié)點為1、屬性節(jié)點為2、文本節(jié)點為3、注釋 節(jié)點為8、文檔節(jié)點為9另外,從元素方面而言,要定位元素的父元素

33、可以通過 parentElement屬性, 定位元素的子元素集合可以通過 children屬性,判斷其標(biāo)簽的名稱(tagname), 他的值(value),內(nèi)含文本(innertext )等方式來進(jìn)行查找。最后,定位節(jié)點/元素的下一個同級兄弟可以通過 nextSibling 屬性,定位 上一個同級兄弟可以用previousSibling 屬性。示例的話,后面一起展示。先學(xué)懂方法吧5、網(wǎng)頁元素分析工具工欲善其事,必先利其器,很多高手已經(jīng)提供給我們很多好用的網(wǎng)頁元素的 分析工具,我們怎么用他們呢?講兩個工具, 一個是網(wǎng)頁精靈(按鍵精靈論壇的 作品),一個是firebug。首先是網(wǎng)頁按鍵精靈。如附件

34、,操作如下圖,輸入網(wǎng)址,按“網(wǎng)頁分析” , 然后按F9,將鼠標(biāo)指向需要分析的頁面元素,例如文本框,則得出元素相關(guān)的 屬性。下方得出的有,標(biāo)簽的名稱,元素的id ,元素的name元素的索引號(第 幾個input標(biāo)簽,從0開始編號)。復(fù)習(xí)下上面說的概念?就想象網(wǎng)頁文檔是個 班級,標(biāo)簽就是學(xué)習(xí)小組,其中input這個學(xué)習(xí)小組里面,有個人的名字 name 是wd,他的工號id是kw,它在小組里面座位號是00我們,就是用這些標(biāo)示, 來找到這個元素的。另外,在巾refox 瀏覽器,還可以使用firebug ,直接對頁面元素單擊右鍵,使用“使用firebug查看元素”的菜單。這樣可以直接觀察到該元素的網(wǎng)頁源

35、代 碼,然后進(jìn)行分析。新聞網(wǎng)頁貼_吧組堇MP3圖龍觀題地圉等切 叁制(Q 玷貼但) 刪除)HM23 | 更多?全選為此搜至等加關(guān)譴字CK)涔加字典但)董耘春9)4頁把百齒琳商1M囿S5三樓 II Ahfiut R又idii6使用FWbug查看兀索J網(wǎng)絡(luò) 同ookies 插箱 tnput#kw_ipt 5pan,sjpt_wr fbnn diviiin drv=m body html 國 -M-pan 匚值5$=.工ipt_*rinput id=kw cla55=5_ipt type=te,xt maxlengtli=10Q name=wd1 autocom pleteaff6、常見HTML D

36、OW象的屬性、方法以及示例(1)通用的屬性和方法i.四個常用的通用屬性對象.innerHtml :對象內(nèi)部的HTML弋碼對象QuterHtml :對象的HTML弋碼,包括又t象本身的 HTMlB簽對象.innerText :對象內(nèi)部的文本對象QuterText :對象的文本,包括對象本身的文本舉例,我們?nèi)ゲ蹲桨俣仁醉?,那個提交搜索的表單。這個表單的名稱 是“ f,然后查詢它的innerHtml和OuterHtml。Sub test()創(chuàng)建Dim ie, dmt, anSet ie = CreateObject(InternetExplorer.Application)一個IE對象With ie

37、加載某個頁面等待頁面加載完畢.Visible = True 顯示它.navigate 1Do Until .ReadyState = 4 DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁面文檔,賦予 dmt 變量Set an = dmt.forms(f)Debug.Print innerHtml:, an.innerhtmlDebug.Print OuterHtml:, an.OuterHtmlEnd WithEnd Sub觀察一下立即窗口輸出的區(qū)別,很容易就知道 inner和outer的區(qū)別了。ii. 一個常用的通用方法fireevent(發(fā)送事件)HTM

38、L DOW象,和我們EXCEL寸象,都具有屬性、方法和事件。前面所述 的innerhtml那些都是屬性,方法就是我們要給這個對象執(zhí)行什么動作,比如點擊網(wǎng)頁上一個按鈕,按鈕這個對象就被“ click ” 了,click就是按鈕對象的一 個方法。另外,網(wǎng)頁對象也像我們的工作表一樣,也支持識別事件,例如,當(dāng)按 鈕被點擊了,系統(tǒng)就會觸發(fā)“ oncilck ”(被點擊了這個事件),然后依據(jù)網(wǎng)頁源 代碼里面設(shè)定好處理步驟去處理這個事件。主要的事件,整理如下:事件適用元素何時觸發(fā)onloadBody 和 frame文檔加載時onchange表單元素當(dāng)元素改變時onsubmit表單元素當(dāng)表單被提交時onres

39、et表單元素當(dāng)表單被重置時onselect表單元素當(dāng)元素被選取時onblur表單元素和超鏈接元素當(dāng)元素失去焦點時onfocus表單元素和超鏈接元素當(dāng)元素狀得焦點時onkeydownBody和表單元素當(dāng)鍵盤被按下時onkeypressBody和表單元素當(dāng)鍵盤被按下后又松開時onkeyupBody和表單元素當(dāng)鍵盤被松開時onclick大部分元素當(dāng)鼠標(biāo)被單擊時ondblclick大部分元素當(dāng)鼠標(biāo)被雙擊時onmousedown大部分元素當(dāng)鼠標(biāo)按鈕被按下時onmousemove大部分元素當(dāng)鼠標(biāo)指針移動時onmouseout大部分元素當(dāng)鼠標(biāo)指針移出某元素時onmouseover大部分元素當(dāng)鼠標(biāo)指針懸停于某

40、元素之上時onmouseup大部分元素當(dāng)鼠標(biāo)按鈕被松開時那日reevent這個方法又是何用呢,他的作用就是,代替我們的一些操作, 直接激發(fā)某些對象的某些事件。例如我們附件的fireevent示例.html ,點擊文檔主體的點我一下”,將 彈出對話框。下面,我們用程序模擬,這個點擊事件的觸發(fā)。新建一個excel ,放置于和fireevent 示例.html同文件夾下的目錄里。Q & e測試文檔點關(guān)一下Windows Internet Expl_! 嘻嘻你點我了,Sub test()Dim ie, dmt, fmSet ie = CreateObject(InternetExplorer.Appl

41、ication)創(chuàng)建一個IE對象With ie.Visible = True 顯示它.navigate ThisWorkbook.Path & fireevent示例.html加載某個頁面Do Until .ReadyState = 4 等待頁面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁面文檔,賦予 dmt 變量dmt.body.FireEvent onclick觸發(fā) body 的點擊事件End WithEnd Sub這樣,程序就模擬了我們點擊了 body后激發(fā)的事件。一樣,我們也可以用 dmt.body.Click ,這個方法取激發(fā)事件,殊途

42、同歸。Fireevent主要用于,有的表單的校驗機制非常強,需要光標(biāo)聚焦了,文本 change 了等等,才能提交表單,這些事件的模擬只能靠fireevent 了,其他方法就很難替代了。(2)表單和表單控件對象表單form對象,有一個方法比較重要,就是 submit,這個方法提供了表單 的提交的動作。如果我們捕捉頁面的提交按鈕非常困難時,有時候只要對表單, 執(zhí)行submit方法,表單也是可以提交的,不需去點擊提交按鈕。表單控件,文本輸入類控件,最常用就是value的屬性了,通過這個屬性,可以往文本框里面添加文本。單選框、復(fù)選框,常用的就是checked屬性了,如果為true就是被選中了, 或者直

43、接使用click方法也行。下拉列表呢,如果是單選列表框,可通過 selectedIndex 屬性去設(shè)置選中項 (下拉選項,從1開始編號,如2就是選擇下拉列表的第二個選項),也可以通 過value屬性,直接把value指定為要選定的option的value即可,但多選列 表框不可用這兩個屬性。另外,所有類別的列表框,都可以通過其內(nèi)含對象集合 options。,設(shè)置某個options(x) 的selected 屬性為true ,來設(shè)置選中項。還是以百度首頁為示例,我們用程序模擬鍵入查詢數(shù)據(jù)“ exceltip ”,然后 提交查詢?yōu)檠菔景?。Sub test()Dim ie, dmt, fmSet i

44、e = CreateObject(InternetExplorer.Application)創(chuàng)建一個IE對象With ie.Visible = True 顯示它.navigate 加載某個頁面Do Until .ReadyState = 4 等待頁面加載完畢DoEventsLoopSet dmt = .document 將IE瀏覽器加載的頁面文檔,賦予 dmt 變量Set fm = dmt.forms(f)用表單的名稱f,捕捉表單對象dmt.all(kw).Value = exceltip用搜索欄的 id ” kw” 捕捉它,并鍵入exceltipdmt.all.tags(input)(3).Click 用“百度一下”按鈕

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論