VBA處理網(wǎng)頁基礎(chǔ)二_第1頁
VBA處理網(wǎng)頁基礎(chǔ)二_第2頁
VBA處理網(wǎng)頁基礎(chǔ)二_第3頁
免費預(yù)覽已結(jié)束,剩余30頁可下載查看

下載本文檔

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

文檔簡介

1、VBA的WE應(yīng)用系列教程一一HTML文檔篇上節(jié)課,我們說了 HTTP通訊,HTTP®訊一般情況返回的是啥呢?是頁面的源代碼。例如,我們訪問百度,返回了,“<!doctype html><html>”一大堆東西。就是,我們在頁面點擊右鍵,“查看頁面源文件”,如圖:F www.bjidu(L記甚肓退迫) 罰講(£)脊蠱另存尙 邊置対背員(G 復(fù)制背2(© 謖尙桌面頂(R)絡(luò)貼(£)刨程他捷方式 話加到收嚴夾吃)宜看涯立件也)Ba港百度文謝日 彌 輅式0)言至<fdnetypp iitnlXhh卄卩 pquiu*l1Cnnt<

2、; Tpe * canteftt-tfxt/htnljcnirset-gii2312*'><title>' ,擁就知灌 </tLtie><£tyi*>htMu沖tn <Font: 12pi ridl;tvittllgn:c«iiliir;bckgrDundfl b*drp jFarnul rllMr gin: t;pdddlngz*;llst-5tjflp:n4 nody,fflrn,tfpositLon:rlatl<ie>ldtext align:l*Fl (border:color :*UUca

3、:4cti4e color(color*ayyv:i>ddi.nq:4pM 1即址Jilgn«ifiqr<Hdryln; V spKjnunr|lti: l>BMwidth: 6*Qp x;ituriju tu; >tnu j Fttnu b t .titnBllkFnHt-Ei» :1iipKlt(n4p<idi lrft;V|px;text Align;l?ftlnput<borderifspadding:i (height: 19px:font :I6px;Rurgin:V B M-px;text 41LgnzlPtt'tK

4、t-lnUpnl:!Wpx;>_£ ipt vrwidth :U1 IpK;height:3 Dps;display:inilae-block jiuri r ight:5px ;ljckgrountl: url.bt4tlt,con/r/w*fV/cithe/u«M/l"u/i我們的瀏覽器,正是把這堆源代碼,翻譯成我們可視的生動地頁面的。就像 VBA樣,這堆代碼是什么語言呢,就是通常所說的,超文本標記語言。為啥叫標記語言,因為它只能用于展示,展示我們所看到的網(wǎng)頁頁面。不是 編程語言哦。為啥叫超文本呢,大家仔細看,這堆源代碼有什么特征呢,就是有很多<

5、>這樣的文本,一般而言,我們把 <>叫做標簽,細心的同學可以發(fā)現(xiàn),標簽都是 成對出現(xiàn)的,例如“ <title>百度一下,你就知道</title> ”。第一個叫做開始標簽,第二個多帶了個/叫結(jié)束標簽。標簽之間就是網(wǎng)頁的文本,例如這個 例子,就是我們網(wǎng)頁標題的文本“百度一下,你就知道”。所以,標簽的作用就 是,給文本打上標記,告訴瀏覽器,怎么顯示這個文本。例如本例,要求瀏覽器 把“百度一下,你就知道”顯示成網(wǎng)頁的標題。HTML文檔二文本+標簽,所以就超文本啦。邕百令玉你就知if賈總之,HTML就是用來描述網(wǎng)頁的語言,像上面所說的 <title>

6、這樣的標簽, 是有一整套的,呵呵。我們的教程,并不是為了教大家,怎么去做網(wǎng)頁,設(shè)計網(wǎng)頁,因此,大家僅 僅需要,大致的了解一些 HTML系列的文本標記語言的基礎(chǔ)即可,知道常用的幾 個標簽,有什么用即可。一、網(wǎng)頁數(shù)據(jù)提取常見的HTMI標簽/元素上面說了,標簽是用來描述網(wǎng)頁的。瀏覽器讀取HTML文檔,識別標簽,并按標簽要求以網(wǎng)頁進行顯示文本。大部分標簽都是成隊出現(xiàn)的。起始標簽和結(jié)束標簽之間的所有文本,都叫做 元素。也就是這個格式就是:<起始標簽:也叫元素名 >元素的容 <結(jié)束標簽:/+元素名>標簽是可以擁有屬性的,因此起始標簽,有時候格式如下:<元素名屬性名稱=”屬性值

7、” >屬性提供了元素的一些附加信息啦,后面我們講具體標簽,大家就會見到屬 性怎么用。另外,注意,元素是可以擁有元素的,即某個元素的容有時候是一個子元素。元素這東西,比較抽象,我們可以把它且當作一個對象來理解,例如工作簿 對象,每個工作簿的名稱都不一樣(屬性),每個工作簿里面都有工作表(子元 素),每個表都有名稱(屬性),里面填寫的容也不一樣(元素的容)。下面講講常見的和我們網(wǎng)頁數(shù)據(jù)提取要常見的元素 /標簽。(一)整體框架結(jié)構(gòu):每個網(wǎng)頁文檔,都是有個大致的框架,框架如下:<html><head> <!-注釋:文檔頭部,文檔相關(guān)消息,并不提供文檔容 ->&

8、lt;title>網(wǎng)頁標題</title>v/head><body> <!-注釋:文檔主體->網(wǎng)頁文檔主體v/body>v/html>把上面這段文本保存在TXT文件里面,然后另存.html格式,就可以得到最 基礎(chǔ)的頁面。Firefox 網(wǎng)羔標盂r 遞:file:/C:/OkumentsiDandaOiSettings 0文件(日躺査著M 嚮助田)網(wǎng)頁文檔主體<html> d注釋元素一>head>瑁-注釋:文檔頭部文網(wǎng)頁標題/head><body >門一注釋:文檔主休一 a 網(wǎng)頁文檔主體<

9、/body>從上面的框架代碼,我們可以看出,一般的頁面,都有html元素,其一般含兩個元素,一個是head元素,一個是body元素。Head元素僅僅說明文檔的 相關(guān)消息,并不展示文檔實體,body元素才是真正展示文檔主體的,所有要在 頁面展示的元素,都要在body內(nèi)進行書寫。后面的元素的測試,都是以替換掉 body元素的文本“網(wǎng)頁文檔主體”進行書寫,后續(xù)不再復(fù)述這個框架。(二)段落vp>特別是提取小說,新聞等頁面的消息,文本都是一段一段的,這樣的頁面, 一般是通過vp>標簽實現(xiàn)的。這個沒啥好說的,自己動手試看看就知道。 C- tS *文件日 編輯疋)榕式9查看0)稱助(出瞬一

10、5訕乙一注曹雯看熏部,文檔梶 內(nèi)容聯(lián)三6title>r段落測試文檔</head>_<bo(iy> 一注釋文檔主體一暮二<P><P>印> 段藩三如</body>所以,當運用ie/webbrowser方式提取這類網(wǎng)頁的時候,歷遍段落p元素即可。(三)超<a>超是我們最常見的頁面元素,基本的門戶都有他,點了以后,可以跳轉(zhuǎn)到另 一個頁面。一般語法格式:<a href= ” 跳轉(zhuǎn)的 URL” target= ” _blank /_self ” >顯示的超文本 </a>Target屬性,表示的是,當

11、我們點擊超,是在原頁面進行跳轉(zhuǎn)(_self )還是新建頁面進行跳轉(zhuǎn)(_blank)。測試做個ET的超吧。hr 9 l ox. 囲J超琳迎炭站”j ilti/z/C/CciiuiiieTti and SttlnAd niin ihti d:or;tTli 11exceltipJ £: tile:/C:/Docunients%20and%20SttingsfAdministTator/%E6%Al%BC%Eg%WcWA2/%l* 中口豐丁、r毎賦也<htinl> V注釋;文檔脈元素<h&ad> 4注蒔:文檔頭部.文檔相關(guān)消意井不提慎交播吟容2 <tl

12、tle>超錐接測試文檔</title ></head><body> “-注釋:文檔主體一ahif target-" blank1'exceltip</a></body>c/html>(四)圖像<img>圖像標簽用法和超類似,語法:<img src= ” url ” alt= ” 文本” >alt屬性代表的是,當圖片無法加載的時候,替換顯示的文本。我們做個加載 ET 的 LOGO的頁面玩玩()。v/tr> <tr><td>第二行第一個單元格</td

13、><td>第二行第二個單元格</td></tr>v/table>C? r9 wfile :7; C: - Documents and情一行第r單訣第一行第二個單元格第行第一個單兀格第行第個單鈕FirefoxgJlkIWJ11411 fZFdL" M Jf *h丈他D 編輯(E)重看世幫助何 Ch函數(shù)* VBA<html> f注釋;注t<head> <1注釋以-c titles無序列表測試文能</titles</head><body> d注釋:戈<ul>日卜函數(shù)切l(wèi)b

14、 <li>VBA</li=>切uIa</body>2、有序列表<ol><ol><li>圖書<ol><li>VBA</li><li> 函數(shù) </li></ol></li><li>視頻<ol><li>基操 </li><li>圖表 </li><li> 數(shù)透</li></ol></li> </ol>3、自定義列表<

15、;dl><dl><dt> 第一節(jié)課 v/dt><dd>網(wǎng)絡(luò)通訊 </dd><dt> 第二節(jié)課 v/dt><dd>HTML</dd></dl>w序刃諷試文桔 C- tS *® file:/q第一節(jié)課 網(wǎng)絡(luò)通訊第二節(jié)課HTMLJ ffe:/C!/Etocument5%2<land%J0£«ttin文粗日錨(E童看也翹馴出 有呼列表;則血乂怕</title ></head><body> P-注釋:文檔主體-<d

16、l>wd憐第一節(jié)課w/dt<dd> 網(wǎng)絡(luò)通<dd>HTML</dd> </dl></body>“htmlA(七)表單和表單控件除了表格,表單也是我們在網(wǎng)頁數(shù)據(jù)提取,頁面操控最常見到的元素。例如我們注冊用戶,例如我們的微博登陸,例如我們的百度搜索,其實都是表單。我們先來看一個例子:vp>請在文本框輸入要搜索的關(guān)鍵字,后按提交,將提交百度進行搜索v/p>vform method="get" action=".baidu./s"><in put n ame="w

17、d" type="text" value="exceltip"><in put type="submit" value="提交"></form>1:!三flhGi1斗1.'c: *Dnairr>ents ar ri settnAdnnErraroSCLj' ?化li請在文本框輸入要遐索的關(guān)鍛圭"后按捋交,捋提交百度講行掙索它畔(£音司Q ««Q11牛=請在文不框輸入要櫻索的關(guān)犍寧.后按提交.樓提交百度囲證索 vfo

18、rm method=*get" adion=httD:ZAtfwwbaidiLCOfn/A<lnput name='wi r tpe='text*>< input type=hsuhmir value=, fit交 </form></body例如在文本框輸入“蘋果”后,按提交按鈕:Firefox 章匚九尸芋虧”BaiSls 述網(wǎng)頁貼吧知道m(xù)m年果蘋果(中國)官方在線商店- AddIe Store (中國)r-nnl宀I將跳轉(zhuǎn)至百這個表單模擬的是百度搜索,在文本框輸入關(guān)鍵字后,按提交, 度的搜索結(jié)果的界面。呵呵,奇妙吧。如何實現(xiàn)的呢?

19、細心的同學會發(fā)現(xiàn)吧,表單 form這個元素,有“ method”和“ action ”兩個屬性,action屬性指定的就是,提交表單后,向這個屬性指定URL發(fā)送http請求(呵呵,涉及到第一節(jié)課的知識啦),method這個屬性設(shè)定的就是,要按照 get或者post等方式發(fā)送http請求。復(fù)習下第一節(jié)課吧,采用 get的方式呢,參數(shù)將在URL后面加個?號,然后發(fā)送,采用post的方式呢,將在消息主體里面 投遞查詢參數(shù)。那發(fā)送http請求的參數(shù)從哪里來的?就是從表單元素含的各種下屬元素,提取其name屬性的值,作為參數(shù)名,然后提取該元素的 value屬性作為參數(shù)值(value屬性的值有時候是由我們

20、輸入的,例如本例,雖然我們指定了默認的 value屬性的值為exceltip,但是我們可以手動輸入,把它修改成“蘋果”)。然 后瀏覽器就用參數(shù)名=參數(shù)值和&進行連接(還是上節(jié)課的知識)串起來。就如本 例,提交后,觀察URL為:.baidu./s?wd=蘋果,wb就是第一個in put元素的屬 性值,蘋果就是我們輸入的,賦予第一個in put元素的value屬性的值。下面,我們講講表單主要的含子元素吧。1輸入標簽(<input>)其語法是:<input type= 類型 name素名稱id= 元素id value= 元素值/> 其類型由type屬性定義,常見的有:

21、text (文本框)、Radio (單選按鈕)、 Checkboxes (復(fù)選框)、submit (提交按鈕)、hidden (隱藏)、reset (重置)和 password (密碼框)等。其中注意,其中單選框和復(fù)選框的是否選中,由checked屬性指定,如果值是” checked ”則選定。不多說了,看例子吧。(文本框和提交 按鈕就不做了,上面都舉例了。密碼框同,類似的)vform><in put n ame="ch1" type="checkbox" value="excel" checked="check

22、ed">表格設(shè)計<in put n ame="ch2" type="checkbox" value="word">文檔處理<in put n ame="ch3" type="checkbox" value="ppt" checked="checked"> 幻 燈片</br><in put n ame="rd" type="radio" value="

23、100" checked="checked">vipvinput name="rd" type="radio" value="10">普通會員</br><in put type="reset" value="重置"></form>注意,當表單提交的時候,發(fā)送http請求時,單選框和復(fù)選框,僅發(fā)送checked屬性為” checked”的元素。一樣是把標記了 checked的元素的name屬性值和value屬性值串起來。

24、2、下拉列表<select>其語法:vselect multiple="multiple"name=S稱 size=顯示菜單條目數(shù) >如果存在multiple="multiple"的屬性設(shè)定,則允許菜單多選,否則單選。Size是設(shè)置可見的菜單條目數(shù)。其下級元素,option代表的是其每個菜單項目, 語法為:<option value= 值 selected="selected">顯示文字 </option>一樣,value屬性接著的就是發(fā)往服務(wù)器的值,當提交的時候,就是將select 的nam

25、e屬性值與用戶選擇的某項option元素的value屬性值連接,進行發(fā)送。Option 元素的 selected<p> 單選選擇列表</p><form><select n ame="sel"><option value="1"><opti on value="2"><opti onvalue="3"<opti on value="4"></select></form><p>

26、; 多重選擇列表,按住shift屬性設(shè)置的是默認選中的菜單項。示例如下:圖書 </optio n>視頻 </optio n>selected="selected"> 動畫 </optio n>圖解 </optio n>或ctrl鍵進行多重選擇</p><form><select multiple="multiple" n ame="sel" size=2>vopti on> excelv/opti on>vopti on> wor

27、dv/opti on>vopti on >ppt</opti on></select>v/form>(八) 框架vframe>標簽和viframe>標簽1、frameset 和 frameFrame是獨立框架,就好像我們的分屏瀏覽一樣,一個屏幕,瀏覽多個畫面 一樣。語法如下:vhtml>vframeset cols="a%,b%,"rows = ” *,100 ”vframe src="頁面 A" />vframe src="頁面 B" /></frames

28、et></html>首先框架必須放置在框架結(jié)構(gòu)標簽里面 (<frameset> ),其rows/columns屬 性的值規(guī)定了框架每行或每列占據(jù)屏幕的面積。另外,frameset和body不能同時使用,除非有noframes,很簡單,因為frame其實就描繪文檔了,所以,一 般不需要再有body進行描繪。另外,框架元素一般放置于head元素內(nèi)。Frame元素的src屬性就是設(shè)定了其框架顯示頁面的URL示例如下:<html> <!-注釋:文檔跟元素->vhead> <!-注釋:文檔頭部,文檔相關(guān)消息,并不提供文檔容-><

29、;title>框架測試文檔</title>vframeset rows="50%,50%">vframe src=".exceltip .n et">vframe src=".baidu."> v/frameset></head></html>2、iframeIframe的框架,就類似畫中畫的效果,在原頁面插入一個頁面。語法如下:viframe src =url scroll in g=yes/no/auto height=xx width=xx>Src設(shè)定框架要

30、顯示的文檔的url , scrolling設(shè)置是否顯示滾動條。Height和widty設(shè)置的就是它的高度和寬度。案例如下:<p>第一個框架</p>viframe src=".w3school."></iframe></br><p> 第二個框架</p>viframe src=".baidu.">v/iframe>圖片第二個框架Bmi越百度Html就大概講這一些吧,呵呵,畢竟我們不是要做網(wǎng)頁,大家大致了解下就 是,還可以參考.w3school.去學習。一般能做到,看得懂

31、網(wǎng)頁的框架結(jié)構(gòu)即可。二、HTML文檔對象模型(HTML DO)認識了網(wǎng)頁文檔上面的各種元素,我們怎么訪問他們呢,是通過什么機制實 現(xiàn)的呢?HTML文檔,向程序們,提供了訪問其元素的端口,這就是 HTML DO,其定 義了一套標準的針對HTML文檔的對象訪問或操作的機制?,F(xiàn)在 DOMt多個版 本,本文還是以最基礎(chǔ)的 DOM 1( 98年頒布)這個版本。1、VBA訪問IE網(wǎng)頁文檔的程序模板講訪問前,我們先簡要講講,如何用 VBA調(diào)用IE,直接給個模板吧,詳細的 IE對象的屬性和方法等,我們后面的課會再講:Sub test()Dim ie, dmt創(chuàng)建一Set ie = CreateObject(&

32、quot;l ntern etExplorer.Applicatio n")個IE對象With ie.Visible = True '顯示它.n avigate ".baidu."'加載某個頁面Do Un til .ReadyState = 4 '等待頁面加載完畢DoEve ntsLoopSet dmt = .docume nt '將IE瀏覽器加載的頁面文檔,賦予dmt變'開始操縱頁面,或者提取數(shù)據(jù)啦End WithEnd Sub通過上面這個模板,我們就可以創(chuàng)建一個IE對象,并將其頁面文檔對象賦予dmt變量,這樣,我們通過d

33、mt變量,就可對頁面元素,進行后續(xù)的訪問以及 操作。2、HTML DOI對象和我們 EXCEL的對象集合的層次結(jié)構(gòu)類似( WORKBOOKS-WORKSHEETS-CELLS等),HTMLDOM網(wǎng)頁文檔也組織了一個對象集合的分層次模型。另外,從上節(jié)標簽和元素的學習,大家也可以大致的得知,元素是可以擁有元素的,所以,這個分層的模型完全是合理的。HTML DO的對象模型類似如下圖:但是,VBA直接支持調(diào)用的對象有限,如下:對象描述Docume nt代表整個HTML文檔,可被用來訪問頁面中的所有元素An chors代表a元素集合Body代表body兀素Forms代表form兀素集合Frames代表f

34、rame 兀素或iframe 兀素集合Images代表img兀素集合Lin ks代表li nk元素集合Opti ons代表voption 兀素集合(select兀素里面可以直接使用)Cells代表td元素集合(table元素里面可以直接使用)Rows代表tr 元素集合(table元素里面可以直接使用)All對象集合,提供對文檔中所有 HTML元素的訪問。VBA支持直接調(diào)用對象的元素,調(diào)用就非常方便了,可以用序號調(diào)用,例如forms(O),也可以按名稱/ID調(diào)用,例如forms( “名稱/ID ”)。其他沒法直接調(diào)用對象的元素,可以間接從通用all對象集合中去調(diào)用該元 素或該元素對應(yīng)的dom對象

35、,或者還可以從文檔樹模型去調(diào)用。如下闡述。3、文檔樹在HTML DOI中,文檔的每一部分都是節(jié)點,整個文檔被定義為一個文檔節(jié) 點,每個標簽是一個元素節(jié)點,包含在元素中的文本是文本節(jié)點,每一個元素的 屬性是一個屬性節(jié)點。形象的比喻做一棵樹吧,根節(jié)點就是html,主干就是body等,枝干就是body 含的各種元素節(jié)點,葉子和花就是元素節(jié)點關(guān)聯(lián)的元素的屬性(屬性節(jié)點)或含 文本(文本節(jié)點)。自己畫的圖太丑了,直接引用 w3school的圖吧:當HTML DOM在解析網(wǎng)頁文檔的時候,就按整個文檔的結(jié)構(gòu)生成一棵樹,全 部保存在存中,我們可以隨時訪問任何節(jié)點??傊W(wǎng)頁文檔,可以說是由元素組合而成的,也可

36、以說是由節(jié)點連接而成 的樹構(gòu)造的。節(jié)點是文檔樹結(jié)構(gòu)中特有的名詞,元素是節(jié)點,但是節(jié)點不一定是 元素,節(jié)點還有文檔節(jié)點、文本節(jié)點、屬性節(jié)點等;元素是元素節(jié)點的擴展,元 素可以擁有屬性還有文本。初學者不是很必要糾結(jié)元素和節(jié)點的區(qū)別,這個需要 甚至數(shù)據(jù)結(jié)構(gòu)、類和繼承等知識。可大致理解為,同一個html dom對象,提供的兩個不同接口。有興趣的朋友,可以按 F8運行下面這個程序,然后本地窗口 觀察bd這個dody對象,你會發(fā)現(xiàn),他既有支持 node (節(jié)點)的相關(guān)屬性和方 法,也提供了 element (元素)的相關(guān)屬性和方法。Sub tftslO盤Dim i豈血爲bdSet i 亡=GreateOt

37、jigcternetExplorr” ApplWith ie-V*i s i Lie = True :龍示它.niVi git4 "http: /wWf. b魚i dii. COm*7 '加転?zāi)?D&- Until RftftdyState = 4 '等特頁面加義完 DoEventsLoopS&t dmt . doooment '將廟瀏覽器加我的頁3Stt Ld = dml. bodyEnd 彷 thEnd Svb表達式情類型4+ omaiLLoadVari aikt/Obj e ctou t er HTML* String;crater Te

38、x t"擺gtrin苗-1+1 owner D ocum entOb i ect/肛 MID o cumeikt卜廚P宜f總豆七El總n matIHTMLE 1 ent/KTMLHtmlElem ent|VBAProj«c 1.11圧| par總直tHo迅色IMTMED OMN o de/KTMLMtmlEleni entP ar entT lE di t Ho l IHTMLE1 es en tpr ftvi ousS iblirIHTMLD OMHo de/MTMLHe adElemreadySttt# *ccVari ftKl/StringSub test()Dim

39、ie, dmt, bd創(chuàng)建一個IESet ie = CreateObject("l nternetExplorer.Applicatio n")對象With ie.Visible = True '顯示它.n avigate ".baidu."'加載某個頁面Do Un til .ReadyState =DoEve nts:4 '等待頁面加載元畢LoopSet dmt = .docume nt '將IE瀏覽器加載的頁面文檔,賦予dmt變量Set bd = dmt.body 'End With將文檔的body賦予bd變量

40、End Sub4、如何通過文檔樹查找所需的網(wǎng)頁元素打個比方吧,當我們要掏大樹上的鳥窩,有幾種方式呢?(1)首先,當我們可以目測到,鳥窩在哪個節(jié)點的時候,我們可以用梯子, 爬上去,直接掏。因此,當我們可以很清晰的觀測到,節(jié)點的某些屬性時,就可 以直接定位它。元素節(jié)點的主要的定位屬性有:id、name和索引號。還記得嗎, 元素起始標簽的語法: 標簽id="xx" name="xx" value= ” xx”,當初一定 很疑惑吧,為啥要有名字或id等屬性,現(xiàn)在明白了吧,和我們的和學號一樣, 為了比較容易的找到我們。那索引號是什么呢,就例如我們從樹根出發(fā),清點樹

41、上的果子,給每個果子 編號,這樣我們就很容易知道,哪個號的果子成熟了,或者被蟲子咬了。一樣的, 我們可以按源代碼書寫的順序,給每類的元素的成員進行編號(類似每類元素, 形成一個數(shù)組,從0開始編號)。通過元素類別和編號,我們可以很容易的找到 它。另外,例如我們中學的老師,上課時,要抓人提問,可以用學號,也可以通 過小組,哪一排,第幾個學生,起來提問。因此,索引號,也有整個文檔的,和 同類元素之分。殊途同歸,無論你點這個學員的學號,還是從他的組別的座位號 去找他,都是可以的。所以,按統(tǒng)計方式或者起始節(jié)點的不同,索引號也會不同。剛剛說的查找工具(也就是打比方里面的梯子)有以下這些:getElemen

42、tByld( “元素的id屬性”)或all( “元素的id屬性”):返回擁 有指定id的元素集合getElementsByName( “元素的 name屬性”)或 all( “元素的 name屬性”): 返回擁有指定名稱的元素的集合getElementsByTagName( “標簽名稱”)或 all.tags( “標簽名稱”):返回 該類標簽的元素集合。all(索引號):返回指定索引號的元素節(jié)點。(2)其次,當我們僅聽到鳥鳴聲,卻不知道鳥窩在哪里的時候,有時候, 我們只能順藤摸瓜,開始爬樹,沿著樹干進行判斷,最后攀爬到鳥窩處?;蛘撸?可能大概知道個方位,先架梯子,到某個主干,再從那里開始查找。

43、因此,當我 們找不到清晰的屬性去定位網(wǎng)頁元素時,我們可以從body元素/節(jié)點開始,一級級去尋找,也可以先定位到它的毗鄰節(jié)點/元素,再通過判斷,去查找它的精確 位置。從節(jié)點方面而言,樹形的模型的節(jié)點有個特征,除了根節(jié)點,每個節(jié)點均只 有一個父節(jié)點(parentNode),有一個或者多個子節(jié)點(childNodes,類似一個 對象集合或?qū)ο髷?shù)組,從0開始編號)。因此,通過節(jié)點的親屬關(guān)系,進行判斷 查找,我們就可以一步步的在父子節(jié)點中切換,獲取所需的元素。節(jié)點有一些屬性,可以利于我們的查找判斷,如下:nodeName(節(jié)點名稱):元素節(jié)點的名稱為其標簽名,屬性節(jié)點的名稱為其 屬性名稱;nodeVal

44、ue (節(jié)點值):文本節(jié)點的值為其包含的文本,屬性節(jié)點的值為其包 含的屬性值;nodeType (節(jié)點類型):元素節(jié)點為1、屬性節(jié)點為2、文本節(jié)點為3、注釋 節(jié)點為8文檔節(jié)點為9另外,從元素方面而言,要定位元素的父元素可以通過 parentElement屬性, 定位元素的子元素集合可以通過 children屬性,判斷其標簽的名稱(tagname), 他的值(value),含文本(innertext )等方式來進行查找。最后,定位節(jié)點/元素的下一個同級兄弟可以通過 nextSibling 屬性,定位 上一個同級兄弟可以用previousSibli ng屬性。示例的話,后面一起展示。先學懂方法吧。

45、5、網(wǎng)頁元素分析工具工欲善其事,必先利其器,很多高手已經(jīng)提供給我們很多好用的網(wǎng)頁元素的 分析工具,我們怎么用他們呢?講兩個工具, 一個是網(wǎng)頁精靈(按鍵精靈論壇的 作品),一個是firebug。首先是網(wǎng)頁按鍵精靈。如附件,操作如下圖,輸入網(wǎng)址,按“網(wǎng)頁分析”,然后按F9,將鼠標指向需要分析的頁面元素,例如文本框,則得出元素相關(guān)的 屬性。下方得出的有,標簽的名稱,元素的id,元素的name元素的索引號(第 幾個in put標簽,從0開始編號)。復(fù)習下上面說的概念?就想象網(wǎng)頁文檔是個 班級,標簽就是學習小組,其中in put這個學習小組里面,有個人的名字 name 是wd,他的工號id是kw,它在小

46、組里面座位號是0。我們,就是用這些標示, 來找到這個元素的。另外,在firefox 瀏覽器,還可以使用firebug ,直接對頁面元素單擊右鍵, 使用“使用firebug查看元素”的菜單。這樣可以直接觀察到該元素的網(wǎng)頁源代 碼,然后進行分析。新闔網(wǎng)頁貼吧知道MP3 圖片視麵地圖(|橫消3轉(zhuǎn)切(I)WJ(C)粘貼回MKQ)全選為此擁索活加關(guān)鍵字也).顯:字熱再.童毒元素(Q上E hao123 I 更多>>農(nóng)把百廉題詢卓直刃擺 I AT舌念 I Ahnirt RAiclii可使用Fi住bug查看元素|陽壇 CookiesP< >蕖輯 inputs kw.s_ipt span

47、 r5_ipt_wr form div-frri divsm t»dy html* <p id«'nv'?-<diw id=G iorm action='/s' nsme-'f:*<5 par cla«-'5_ipt_v.r'><£inputclass ="5_ipV type="teytJ maKlength=-100, nmme=*wd" autacomplete="offT>6、常見HTML DOM對象的屬性、方法以及

48、示例(1) 通用的屬性和方法i.四個常用的通用屬性對象.innerHtml :對象部的HTML弋碼對象.OuterHtml :對象的HTML弋碼,包括對象本身的 HTMI標簽對象.inn erText :對象部的文本對象.OuterText :對象的文本,包括對象本身的文本舉例,我們?nèi)ゲ蹲桨俣仁醉?,那個提交搜索的表單。這個表單的名稱是” f”,然后查詢它的innerHtml和OuterHtml。Sub test()Dim ie, dmt, anSet ie = CreateObject("l nternetExplorer.Applicatio n")'倉U建一個I

49、E對象With ie.Visible = True '顯示它.n avigate ".baidu."'加載某個頁面等待頁面加載完畢Do Un til .ReadyState = 4DoEve ntsLoopSet dmt = .document ' 將IE瀏覽器加載的頁面文檔,賦予 dmt變量Set an = dmt.forms("f")Debug.Pri nt "i nn erHtml:", an .i nn erhtmlDebug.Pri nt "OuterHtml:", an. Out

50、erHtmlEnd WithEnd Sub觀察一下立即窗口輸出的區(qū)別,很容易就知道inner和outer的區(qū)別了。ii. 一個常用的通用方法fireevent(發(fā)送事件)HTML DOM對象,和我們EXCEL對象,都具有屬性、方法和事件。前面所述 的innerhtml那些都是屬性,方法就是我們要給這個對象執(zhí)行什么動作,比如點擊網(wǎng)頁上一個按鈕,按鈕這個對象就被“ click ”了,click就是按鈕對象的一 個方法。另外,網(wǎng)頁對象也像我們的工作表一樣,也支持識別事件,例如,當按 鈕被點擊了,系統(tǒng)就會觸發(fā)“ oncilck ”(被點擊了這個事件),然后依據(jù)網(wǎng)頁源 代碼里面設(shè)定好處理步驟去處理這個事

51、件。主要的事件,整理如下:事件適用元素何時觸發(fā)onl oadBody 和 frame文檔加載時onchange表單元素當元素改變時on submit表單元素當表單被提交時on reset表單元素當表單被重置時on select表單元素當元素被選取時on blur表單元素和超元素當元素失去焦點時on focus表單元素和超元素當兀素獲得焦點時onkeydow nBody和表單兀素當鍵盤被按下時on keypressBody和表單兀素當鍵盤被按下后又松開時onkeyupBody和表單兀素當鍵盤被松開時on click大部分元素當鼠標被單擊時on dblclick大部分元素當鼠標被雙擊時onm ou

52、sedow n大部分元素當鼠標按鈕被按下時onm ousemove大部分元素當鼠標指針移動時onm ouseout大部分元素當鼠標指針移出某元素時onm ouseover大部分元素當鼠標指針懸停于某元素之上時onm ouseup大部分元素當鼠標按鈕被松開時那fireevent這個方法又是何用呢,他的作用就是,代替我們的一些操作, 直接激發(fā)某些對象的某些事件。例如我們附件的fireevent示例.html,點擊文檔主體的”點我一下”,將 彈出對話框。下面,我們用程序模擬,這個點擊事件的觸發(fā)。新建一個 excel, 放置于和fireevent 示例.html同文件夾下的目錄里。|曲曲|魯測試立君_

53、 _ |點蕊一下Windows Internet宜I -你點我了T確定Sub test()Dim ie, dmt, fm創(chuàng)建Set ie = CreateObject("l ntern etExplorer.Applicatio n")一個IE對象With ie.Visible = True '顯示它.n avigate ThisWorkbook.Path & ” fireeve nt示例.html"加載某個頁面Do Un til .ReadyState = 4 '等待頁面加載完畢DoEve ntsLoopSet dmt = .docume

54、nt ' 將IE瀏覽器加載的頁面文檔,賦予 dmt 變量觸發(fā) body 的點擊事件End WithEnd Sub這樣,程序就模擬了我們點擊了 body后激發(fā)的事件。一樣,我們也可以用 ,這個方法取激發(fā)事件,殊途同歸。Fireevent主要用于,有的表單的校驗機制非常強,需要光標聚焦了,文本 change 了等等,才能提交表單,這些事件的模擬只能靠fireevent 了,其他方法就很難替代了。(2) 表單和表單控件對象表單form對象,有一個方法比較重要,就是 submit,這個方法提供了表單 的提交的動作。如果我們捕捉頁面的提交按鈕非常困難時,有時候只要對表單, 執(zhí)行submit方法,

55、表單也是可以提交的,不需去點擊提交按鈕。表單控件,文本輸入類控件,最常用就是value的屬性了,通過這個屬性,可以往文本框里面添加文本。單選框、復(fù)選框,常用的就是checked屬性了,如果為true就是被選中了, 或者直接使用click方法也行。下拉列表呢,如果是單選列表框,可通過 selected In dex 屬性去設(shè)置選中項 (下拉選項,從1開始編號,如2就是選擇下拉列表的第二個選項),也可以通 過value屬性,直接把value指定為要選定的option的value即可,但多選列 表框不可用這兩個屬性。另外,所有類別的列表框,都可以通過其含對象集合 options(),設(shè)置某個opti

56、ons(x) 的selected 屬性為true,來設(shè)置選中項。還是以百度首頁為示例,我們用程序模擬鍵入查詢數(shù)據(jù)“exceltip ”,然后提交查詢?yōu)檠菔景伞ub test()Dim ie, dmt, fm創(chuàng)建Set ie = CreateObject("l ntern etExplorer.Applicatio n")一個IE對象With ie.Visible = True '.n avigate ".baidu."'Do Until .ReadyState = 4DoEve ntsLoopSet dmt = .docume nt變量

57、Set fm = dmt.forms("f")' dmt.all("kw").Value = "exceltip"' 它,并鍵入exceltip索引號捕捉它,并模擬按鈕的點擊'fm.submit '模擬表單的提End With顯示它加載某個頁面等待頁面加載完畢將IE瀏覽器加載的頁面文檔,賦予 dmt用表單的名稱f,捕捉表單對象用搜索欄的id ” kw”捕捉用“百度一下”按鈕的in put交,不一定要 clickEnd Sub(3) Table 對象表格對象,也是我們提取網(wǎng)頁數(shù)據(jù),最常打交道的對象了。其含

58、rows對象集合,可以使我們訪問表格的每行,每個row對象還含cells對象集合,使我們 可以訪問其每行的每個單元格,讀取每個單元格的innertext屬性即可獲取我們 所需每個單元格的文本。另外,常用的屬性還有l(wèi)ength,這個類似我們VBA里面的count,都是返回 某個對象的數(shù)量。我們以提取東方財富網(wǎng)的限售股解禁清單的table為例,URLdata.eastm on ey./dxf/default.html。Sub test()Dim ie, dmt, tb, i&, j&Set ie = CreateObject("l nternetExplorer.Appl

59、icatio n")'倉U建一個IE對象With ie.Visible = True '顯示它.n avigate "data.eastm on ey./dxf/default.html"'力卩載某個頁面Do Un til .ReadyState = 4'等待頁面加載完畢DoEve ntsLoopSet dmt = .document ' 將IE瀏覽器加載的頁面文檔,賦予dmt變量Set tb = 通過索引號捕捉表格對象For i = 0 歷遍其每個行For j = 0 To tb.Rows(i).Cells.Le ngth - 1 '歷遍每行的每個單元格Cells(i + 1, j + 1) = tb.Rows(i).Cells(j).i nn ertext'將其innertext寫入單元格NextNextEnd WithEnd Sub通過上面的代碼,這個解禁清單就被我們提取下來了。字粵豐獲Hmt甘曰貝出130«3盟甲絲曲曲巴1S去三201i-DflDLZimqq:36欄業(yè).RSbF IP口 :悟 叔ZOBE-DaOL3軒曲"稅曲戶日哲如舞-QBPL1呻和砰F腔巴rrfflr

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論