VBA处理网页基础二Word文档格式.docx

上传人:b****5 文档编号:19814713 上传时间:2023-01-10 格式:DOCX 页数:29 大小:895.50KB
下载 相关 举报
VBA处理网页基础二Word文档格式.docx_第1页
第1页 / 共29页
VBA处理网页基础二Word文档格式.docx_第2页
第2页 / 共29页
VBA处理网页基础二Word文档格式.docx_第3页
第3页 / 共29页
VBA处理网页基础二Word文档格式.docx_第4页
第4页 / 共29页
VBA处理网页基础二Word文档格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

VBA处理网页基础二Word文档格式.docx

《VBA处理网页基础二Word文档格式.docx》由会员分享,可在线阅读,更多相关《VBA处理网页基础二Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。

VBA处理网页基础二Word文档格式.docx

结束标签:

/+元素名>

标签是可以拥有属性的,因此起始标签,有时候格式如下:

元素名属性名称=”属性值”>

属性提供了元素的一些附加信息啦,后面我们讲具体标签,大家就会见到属性怎么用。

另外,注意,元素是可以拥有元素的,即某个元素的内容有时候是一个子元素。

元素这东西,比较抽象,我们可以把它且当作一个对象来理解,例如工作簿对象,每个工作簿的名称都不一样(属性),每个工作簿里面都有工作表(子元素),每个表都有名称(属性),里面填写的内容也不一样(元素的内容)。

下面讲讲常见的和我们网页数据提取要常见的元素/标签。

(一)整体框架结构:

每个网页文档,都是有个大致的框架,框架如下:

<

head>

--注释:

文档头部,文档相关消息,并不提供文档内容-->

<

网页标题

/head>

body>

文档主体-->

网页文档主体

/body>

/html>

把上面这段文本保存在TXT文件里面,然后另存.html格式,就可以得到最基础的页面。

从上面的框架代码,我们可以看出,一般的页面,都有html元素,其一般内含两个元素,一个是head元素,一个是body元素。

Head元素仅仅说明文档的相关消息,并不展示文档实体,body元素才是真正展示文档主体的,所有要在页面展示的元素,都要在body內进行书写。

后面的元素的测试,都是以替换掉body元素内的文本“网页文档主体”进行书写,后续不再复述这个框架。

(二)段落<

p>

特别是提取小说,新闻等页面的消息,文本都是一段一段的,这样的页面,一般是通过<

标签实现的。

这个没啥好说的,自己动手试看看就知道。

所以,当运用ie/webbrowser方式提取这类网页的时候,历遍段落p元素即可。

(三)超链接<

a>

超链接是我们最常见的页面元素,基本的门户网站都有他,点了以后,可以跳转到另一个页面。

一般语法格式:

ahref=”跳转的URL”target=”_blank/_self”>

显示的超链接文本<

/a>

Target属性,表示的是,当我们点击超链接,是在原页面进行跳转(_self)还是新建页面进行跳转(_blank)。

测试做个ET的超链接吧。

(四)图像<

img>

图像标签用法和超链接类似,语法:

imgsrc=”url”alt=”文本”>

alt属性代表的是,当图片无法加载的时候,替换显示的文本。

我们做个加载ET的LOGO的页面玩玩。

(五)表格<

table>

表格是我们网页最常见的,也是我们网页数据提取,最需要打交道的,其实它非常简单,框架如下,每行用<

tr>

,每个单元格用<

td>

tableborder="

1"

>

border设置表格边框样式-->

第一行第一个单元格<

/td>

第一行第二个单元格<

/tr>

第二行第一个单元格<

第二行第二个单元格<

/table>

(六)列表

很多时候,数据也经常以列表形式存在的,列表有三种:

无序、有序和自定义。

分别框架如下:

1、无序列表<

ul>

li>

函数<

/li>

VBA<

/ul>

2、有序列表<

ol>

图书

/ol>

视频

基操<

图表<

数透<

3、自定义列表<

dl>

dt>

第一节课<

/dt>

dd>

网络通讯<

/dd>

第二节课<

HTML<

/dl>

(七)表单和表单控件

除了表格,表单也是我们在网页数据提取,页面操控最常见到的元素。

例如我们注册用户,例如我们的微博登陆,例如我们的XX搜索,其实都是表单。

我们先来看一个例子:

请在文本框输入要搜索的关键字,后按提交,将提交XX进行搜索<

/p>

formmethod="

get"

action="

inputname="

wd"

type="

text"

value="

exceltip"

inputtype="

submit"

提交"

/form>

例如在文本框输入“苹果”后,按提交按钮:

这个表单模拟的是XX搜索,在文本框输入关键字后,按提交,将跳转至XX的搜索结果的界面。

呵呵,奇妙吧。

如何实现的呢?

细心的同学会发现吧,表单form这个元素,有“method”和“action”两个属性,action属性指定的就是,提交表单后,向这个属性指定URL发送http请求(呵呵,涉及到第一节课的知识啦),method这个属性设定的就是,要按照get或者post等方式发送http请求。

复习下第一节课吧,采用get的方式呢,参数将在URL后面加个?

号,然后发送,采用post的方式呢,将在消息主体里面投递查询参数。

那发送http请求的参数从哪里来的?

就是从表单元素内含的各种下属元素,提取其name属性的值,作为参数名,然后提取该元素的value属性作为参数值(value属性的值有时候是由我们输入的,例如本例,虽然我们指定了默认的value属性的值为exceltip,但是我们可以手动输入,把它修改成“苹果”)。

然后浏览器就用参数名=参数值和&

进行连接(还是上节课的知识)串起来。

就如本例,提交后,观察URL为:

下面,我们讲讲表单主要的内含子元素吧。

1、输入标签(<

input>

其语法是:

inputtype=类型name=元素名称id=元素idvalue=元素值/>

其类型由type属性定义,常见的有:

text(文本框)、Radio(单选按钮)、Checkboxes(复选框)、submit(提交按钮)、hidden(隐藏)、reset(重置)和password(密码框)等。

其中注意,其中单选框和复选框的是否选中,由checked属性指定,如果值是”checked”则选定。

不多说了,看例子吧。

(文本框和提交按钮就不做了,上面都举例了。

密码框同,类似的)

form>

ch1"

checkbox"

excel"

checked="

checked"

表格设计

ch2"

word"

文档处理

ch3"

ppt"

幻灯片

/br>

rd"

radio"

100"

vip

10"

普通会员

reset"

重置"

注意,当表单提交的时候,发送http请求时,单选框和复选框,仅发送checked属性为”checked”的元素。

一样是把标记了checked的元素的name属性值和value属性值串起来。

2、下拉列表<

select>

其语法:

selectmultiple="

multiple"

name=名称size=显示菜单条目数>

如果存在multiple="

的属性设定,则允许菜单多选,否则单选。

Size是设置可见的菜单条目数。

其下级元素,option代表的是其每个菜单项目,语法为:

optionvalue=值selected="

selected"

显示文字<

/option>

一样,value属性接着的就是发往服务器的值,当提交的时候,就是将select的name属性值与用户选择的某项option元素的value属性值连接,进行发送。

Option元素的selected属性设置的是默认选中的菜单项。

示例如下:

单选选择列表<

selectname="

sel"

optionvalue="

图书<

2"

视频<

3"

selected="

动画<

4"

图解<

/select>

多重选择列表,按住shift或ctrl键进行多重选择<

name="

size=2>

option>

excel<

word<

ppt<

(八)框架<

frame>

标签和<

iframe>

标签

1、frameset和frame

Frame是独立框架,就好像我们的分屏浏览一样,一个屏幕,浏览多个画面一样。

语法如下:

framesetcols="

a%,b%,…"

/rows=”*,100”>

framesrc="

页面A"

/>

页面B"

/frameset>

首先框架必须放置在框架结构标签里面(<

frameset>

),其rows/columns属性的值规定了框架每行或每列占据屏幕的面积。

另外,frameset和body不能同时使用,除非有noframes,很简单,因为frame其实就描绘文档了,所以,一般不需要再有body进行描绘。

另外,框架元素一般放置于head元素內。

Frame元素的src属性就是设定了其框架内显示页面的URL。

文档跟元素-->

框架测试文档

framesetrows="

50%,50%"

"

2、iframe

Iframe的框架,就类似画中画的效果,在原页面插入一个页面。

iframesrc=urlscrolling=yes/no/autoheight=xxwidth=xx>

Src设定框架内要显示的文档的url,scrolling设置是否显示滚动条。

Height和widty设置的就是它的高度和宽度。

案例如下:

第一个框架<

iframesrc="

/iframe>

第二个框架<

Html就大概讲这一些吧,呵呵,毕竟我们不是要做网页,大家大致了解下就是,还可以参考去学习。

一般能做到,看得懂网页的框架结构即可。

二、HTML文档对象模型(HTMLDOM)

认识了网页文档上面的各种元素,我们怎么访问他们呢,是通过什么机制实现的呢?

HTML文档,向程序们,提供了访问其元素的端口,这就是HTMLDOM,其定义了一套标准的针对HTML文档的对象访问或操作的机制。

现在DOM有多个版本,本文还是以最基础的DOM1(98年颁布)这个版本。

1、VBA访问IE网页文档的程序模板

讲访问前,我们先简要讲讲,如何用VBA调用IE,直接给个模板吧,详细的IE对象的属性和方法等,我们后面的课会再讲:

Subtest()

Dimie,dmt

Setie=CreateObject("

InternetExplorer.Application"

)'

创建一个IE对象

Withie

.Visible=True'

显示它

.navigate"

'

加载某个页面

DoUntil.ReadyState=4'

等待页面加载完毕

DoEvents

Loop

Setdmt=.document'

将IE浏览器加载的页面文档,赋予dmt变量

‘开始操纵页面,或者提取数据啦

EndWith

EndSub

通过上面这个模板,我们就可以创建一个IE对象,并将其页面文档对象赋予dmt变量,这样,我们通过dmt变量,就可对页面元素,进行后续的访问以及操作。

2、HTMLDOM对象

和我们EXCEL的对象集合的层次结构类似(WORKBOOKS-WORKSHEETS-CELLS等),HTMLDOM为网页文档也组织了一个对象集合的分层次模型。

另外,从上一节标签和元素的学习,大家也可以大致的得知,元素是可以拥有元素的,所以,这个分层的模型完全是合理的。

HTMLDOM的对象模型类似如下图:

但是,VBA直接支持调用的对象有限,如下:

对象

描述

Document

代表整个HTML文档,可被用来访问页面中的所有元素

Anchors

代表<

元素集合

Body

元素

Forms

Frames

元素或<

Images

Links

link>

Options

元素集合(select元素里面可以直接使用)

Cells

元素集合(table元素里面可以直接使用)

Rows

All

对象集合,提供对文档中所有HTML元素的访问。

VBA支持直接调用对象的元素,调用就非常方便了,可以用序号调用,例如forms(0),也可以按名称/ID调用,例如forms(“名称/ID”)。

其他没法直接调用对象的元素,可以间接从通用all对象集合中去调用该元素或该元素对应的dom对象,或者还可以从文档树模型去调用。

如下阐述。

3、文档树

在HTMLDOM中,文档的每一部分都是节点,整个文档被定义为一个文档节点,每个标签是一个元素节点,包含在元素中的文本是文本节点,每一个元素的属性是一个属性节点。

形象的比喻做一棵树吧,根节点就是html,主干就是body等,枝干就是body内含的各种元素节点,叶子和花就是元素节点关联的元素的属性(属性节点)或内含文本(文本节点)。

自己画的图太丑了,直接引用w3school的图吧:

当HTMLDOM在解析网页文档的时候,就按整个文档的结构生成一棵树,全部保存在内存中,我们可以随时访问任何节点。

总之,网页文档,可以说是由元素组合而成的,也可以说是由节点连接而成的树构造的。

节点是文档树结构中特有的名词,元素是节点,但是节点不一定是元素,节点还有文档节点、文本节点、属性节点等;

元素是元素节点的扩展,元素可以拥有属性还有文本。

初学者不是很必要纠结元素和节点的区别,这个需要甚至数据结构、类和继承等知识。

可大致理解为,同一个htmldom对象,提供的两个不同接口。

有兴趣的朋友,可以按F8运行下面这个程序,然后本地窗口观察bd这个dody对象,你会发现,他既有支持node(节点)的相关属性和方法,也提供了element(元素)的相关属性和方法。

Dimie,dmt,bd

Setbd=dmt.body'

将文档的body赋予bd变量

4、如何通过文档树查找所需的网页元素

打个比方吧,当我们要掏大树上的鸟窝,有几种方式呢?

(1)首先,当我们可以目测到,鸟窝在哪个节点的时候,我们可以用梯子,爬上去,直接掏。

因此,当我们可以很清晰的观测到,节点的某些属性时,就可以直接定位它。

元素节点的主要的定位属性有:

id、name和索引号。

还记得吗,元素起始标签的语法:

标签id="

xx"

value=”xx”...>

,当初一定很疑惑吧,为啥要有名字或id等属性,现在明白了吧,和我们的姓名和学号一样,为了比较容易的找到我们。

那索引号是什么呢,就例如我们从树根出发,清点树上的果子,给每个果子编号,这样我们就很容易知道,哪个号的果子成熟了,或者被虫子咬了。

一样的,我们可以按源代码书写的顺序,给每类的元素的成员进行编号(类似每类元素,形成一个数组,从0开始编号)。

通过元素类别和编号,我们可以很容易的找到它。

另外,例如我们中学的老师,上课时,要抓人提问,可以用学号,也可以通过小组,哪一排,第几个学生,起来提问。

因此,索引号,也有整个文档的,和同类元素之分。

殊途同归,无论你点这个学员的学号,还是从他的组别的座位号去找他,都是可以的。

所以,按统计方式或者起始节点的不同,索引号也会不同。

刚刚说的查找工具(也就是打比方里面的梯子)有以下这些:

getElementById(“元素的id属性”)或all(“元素的id属性”):

返回拥有指定id的元素集合

getElementsByName(“元素的name属性”)或all(“元素的name属性”):

返回拥有指定名称的元素的集合

getElementsByTagName(“标签名称”)或all.tags(“标签名称”):

返回该类标签的元素集合。

all(索引号):

返回指定索引号的元素节点。

(2)其次,当我们仅听到鸟鸣声,却不知道鸟窝在哪里的时候,有时候,我们只能顺藤摸瓜,开始爬树,沿着树干进行判断,最后攀爬到鸟窝处。

或者,可能大概知道个方位,先架梯子,到某个主干,再从那里开始查找。

因此,当我们找不到清晰的属性去定位网页元素时,我们可以从body元素/节点开始,一级级去寻找,也可以先定位到它的毗邻节点/元素,再通过判断,去查找它的精确位置。

从节点方面而言,树形的模型的节点有个特征,除了根节点,每个节点均只有一个父节点(parentNode),有一个或者多个子节点(childNodes,类似一个对象集合或对象数组,从0开始编号)。

因此,通过节点的亲属关系,进行判断查找,我们就可以一步步的在父子节点中切换,获取所需的元素。

节点有一些属性,可以利于我们的查找判断,如下:

nodeName(节点名称):

元素节点的名称为其标签名,属性节点的名称为其属性名称;

nodeValue(节点值):

文本节点的值为其包含的文本,属性节点的值为其包含的属性值;

nodeType(节点类型):

元素节点为1、属性节点为2、文本节点为3、注释节点为8、文档节点为9

另外,从元素方面而言,要定位元素的父元素可以通过parentElement属性,定位元素的子元素集合可以通过children属性,判断其标签的名称(tagname),他的值(value),内含文本(innertext)等方式来进行查找。

最后,定位节点/元素的下一个同级兄弟可以通过nextSibling属性,定位上一个同级兄弟可以用previousSibling属性。

示例的话,后面一起展示。

先学懂方法吧。

5、网页元素分析工具

工欲善其事,必先利其器,很多高手已经提供给我们很多好用的网页元素的分析工具,我们怎么用他们呢?

讲两个工具,一个是网页精灵(按键精灵论坛的作品),一个是firebug。

首先是网页按键精灵。

如附件,操作如下图,输入网址,按“网页分析”,然后按F9,将鼠标指向需要分析的页面元素,例如文本框,则得出元素相关的属性。

下方得出的有,标签的名称,元素的id,元素的name,元素的索引号(第几个input标签,从0开始编号)。

复习下上面说的概念?

就想象网页文档是个班级,标签就是学习小组,其中input这个学习小组里面,有个人的名字name是wd,他的工号id是kw,它在小组里面座位号是0。

我们,就是用这些标示,来找到这个元素的。

另外,在firefox浏览器,还可以使用firebug,直接对页面元素单击右键,使用“使用firebug查看元素”的菜单

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1