使用LabVIEW实现网页数据提取和交互
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
解决之道
• IE控件 - Microsoft Internet Controls • IE的自动化对象 - InternetExplorer.Application • WebBrowser - .NET控件 • HTML文档对象模型 – HTML DOM
4
IE控件、 IE的自动化对象
• 自动控制服务器与自动控制器
• 高级应用
▫ 表单的提交方法——Get、Post(向网络服务器发送参数) ▫ XMLHttpRequest ——可以同步或异步返回 Web 服务
器的响应,并且能以文本或者一个 DOM 文档形式返回 内容。
14
▫ 支持自动控制的应用程序称为自动控制服务器 (Automation servers)或者自动控制对象 (Automation objects)。
▫ 能够操作服务器对象的应用程序称为自动控制器 (Automation controllers)。
▫ 有些应用程序只能当服务器或控制器,有些则既可以当 服务器也可以当控制器。
8
Demo1-取得网页控制权并获取全部内容
• 控制IE浏览器
▫ 设置IE浏览器为默认浏览器 ▫ 输入指定网址URL ▫ 执行本Demo
9
Demo2-取得网页控制权并获取全部内容
• 控制WebBrowser控件
▫ 输入指定网址URL ▫ 执行本Demo
10
Demo3-网页内的对象控制与交互之表格
1
使用 LabVIEW 控制IE或WebBrowser 实现网页数据的提取和交互
By GSD:attraction - 张生斌 2013.1.1
2
可能会遇到的问题
• 网页能否被程序控制,程序和网页如何通信? • 如何下载网页中我们所关注的数据? • 如何用程序修改网页中表单的内容,实现交互? • 这些事情用LabVIEW做可以吗,如何实现?
• 解决方案
▫ Internet Explorer作为控制对象 ▫ LabVIEW用作控制器
5
WebBrowser 控件
• WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增。WebBrowser 类使用 户可以在窗体中导航网页。
• 解决方案
▫ WebBrowser作为控制对象 ▫ LabVIEW用作控制器
6
HTML DOM-HTML文档对象模型
• 获取网页数据必须使用HTML对象库
▫ Microsoft HTML Object Library
• HTML对象库提供了大量的对象
▫ 这些对象和各类HTML标记相对应,如熟悉的 “<a>”、 “<Table>”、“< body>”和“<form>” 标记。
11
Demo4-网页内的对象控制与交互之表单
• getElementByTagName • getElementByName • getElementById
12
Demo5-登陆GSD
13
Morห้องสมุดไป่ตู้ …
• 附几份网络资料
▫ 【HTML对象简介】 ▫ 【HTML文档对象模型(DOM)教程】 ▫ MSDN-关于WebBrowser介绍 ▫ document对象详解 ▫ 网页数据下载与控制
htmlbodydivhellodivbodyhtml在上面的网页例子里html标记是文档的根节点是document的childnodes集合中的一个成员body是根节点的childnodes集合中的一个成员而div和p两个节点则是body的childnodes集合中的两个成员他们同样也可以有自已的childnoes集合不过我们很直观地可以看到它们的下级集合是空的
• 通过HTML文档对象模型
▫ 您可以添加、移除、改变或重排页面上的项目 ▫ 您可以完全控制网页,任意提取所需要的内容
7
HTML文档对象模型举例
HTML——超文本标记语言。在网页上看到的标记,就是根节点或body之下查的标看记常节用点对对象象
(node)。每一个标记节点对象之下都有一个名为ChildNodes的集合,它包含了“直属于 本节点下的标记”,听起来有点抽象——这么说吧,每一层标记对应一种对象,标记内部嵌 套的标记属于其子对象,类似于目录结构。
<HTML> <BODY> <DIV> HELLO </DIV> <P> GSD </P> </BODY>
</HTML>
在上面的网页例子里,HTML标记是文档的根节点,是Document的Childnodes集合中的一 个成员,BODY是根节点的ChildNodes集合中的一个成员,而DIV和P两个节点则是BODY的 ChildNodes集合中的两个成员,他们同样也可以有自已的Childnoes集合——不过我们很直 观地可以看到,它们的下级集合是空的。