使用VB6创建和访问Dom树
关键字:VB,DOM,HTML,爬虫,IHTMLDocument
我们知道,在VB中一般大家会用WebBrowser来获取和操作dom对象。
但是,有这样一种情形,却让我们纠结不已:
我们需要做爬虫,然后爬虫不需要太高的效率,但是我们被复杂的正则表达式给弄的头晕眼花。
不知道何去何从。
今天,下定决心研究下html的解析,终于掌握了对IHTMLDocument等接口对象的使用。
源代码放在:http://www.extencent.com
具体的文章将会放在博客园以及CSDN博客。主要是考虑到贴吧对代码的支持特别的弱。
示例代码中使用了WebCode这个类,这个类的代码可以在以下两个地方找到:
网站 | 网址 |
---|---|
我的代码分享站 | http://www.extencent.com/ |
CSDN代码片 | https://code.csdn.net/snippets/686971 |
本次分享的是这样的代码:
Private Sub btnTryLuck_Click()
'html代码
Dim htmlCode As String
'html Dom树对象
Dim myhtml As New HTMLDocument
'html IHTMLElementCollection 对象集合
Dim tables As IHTMLElementCollection
'html HTMLTable 表
Dim table As HTMLTable
'html HtmlRow 行
Dim row As HTMLTableRow
'html HTMLTableCell 单元格
Dim cell As HTMLTableCell
'define temp variables
Dim i As Long
'获取html代码
htmlCode = mWeb.GetHttpCode("http://kaijiang.zhcw.com/zhcw/html/ssq/list.html", "smart")
'加载html代码到dom树(通过这个赋值的方法,就完成了DOM树的构建)
'真的比写正则表达式要方便
myhtml.body.innerHTML = htmlCode
'这个时候,如果你对JavaScript操作熟悉就更好了
'我们通过getElementsByTagName这样的操作
'来获取含有彩票中奖信息的表格,非常方便
'不过注意,因为是根据TagName获取的,所以是一个集合
Set tables = myhtml.getElementsByTagName("table")
'判断集合长度超过零,说明有数据,这个时候才进行下一步操作
If tables.Length > 0 Then
'大家记住了,这里操作的都是对象,所以要用Set来进行赋值。
'这里,我们获取到了第一个表格对象
'因为经过观察,中奖信息就在第一个表格中
Set table = tables(0)
'如果这个表格有超过3行,才继续提取信息
'为什么?因为第一行,第二行都是表格标题部分
'这个大家可以去Chrome上面看DOM树。
If table.rows.Length > 3 Then
'我们从序号2开始(也就是第三行,别忘了是从0开始的)
For i = 2 To table.rows.Length - 2
'这里同样是Set,获取了某一行
Set row = table.rows(i)
'这里,将第3个(序号为2)单元格中的文本输出
Debug.Print row.cells(2).innerText
Next i
End If
End If
End Sub
'以上,
【VB6】使用VB6创建和访问Dom树【爬虫基础知识 】的更多相关文章
-
js基础例子dom+原型+oop基础知识记录01
//oo:概念是计算机中对于现实世界的理解和抽象的方法 //由计算机利用编程技术发展到现在的产物 //面向对象几要素 //对象:由属性和方法组成的集合 //属性:保存数据,存储在对象内存空间中的唯一的 ...
-
JS操作DOM对象——JS基础知识(四)
一.JavaScript的三个重要组成部分 (1)ECMAScript(欧洲计算机制造商协会) 制定JS的规范 (2)DOM(文档对象模型)重点学习对象 处理网页内容的方法和接口 (3)BOM(浏览器 ...
-
Linux驱动之设备树的基础知识
前期知识 1. 如何编写一个简单的Linux驱动(一)--驱动的基本框架 2. 如何编写一个简单的Linux驱动(二)--设备操作集file_operations 3. 如何编写一个简单的 ...
-
Treap树的基础知识
原文 其它较好的的介绍:堆排序 AVL树 树堆,在数据结构中也称Treap(事实上在国内OI界常称为Traep,与之同理的还有"Tarjan神犇发明的"Spaly),是指有一个随 ...
-
c语言-树的基础知识
第一.树的定义: 1.有且只有一个称为根的节点 2.有若干个互不相交的子树,这些子树本身也是一颗树 第二.专业术语: 树的深度:从根节点到最低层,节点的层数 ,称之为树的深度. 根节点是第一 ...
-
DOM树节点关系
DOM是JS中专门操作HTML页面内容的 他的三种基本使用方法是: 1. document.getElementById(''): ——>选取html页面中带有Id的属性名: 2.docum ...
-
DOM树操作
DOM 操作 访问与树关系(节点) 绘制 DOM 树: childNodes, attributes 从一个中心元素访问其所有的直系亲属元素 访问父节点: parentNode 访问上一个兄弟节点: ...
-
从Chrome源码看浏览器如何构建DOM树
.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } p { font-size: 1 ...
-
JavaScript之DOM、DOM树
一 DOM JavaScript操作网页的接口,全称为"文档对象模型"(Document Object Model). 有这几个概念:文档.元素.节点 整个文档是一个文档节点 每个 ...
随机推荐
-
常用JS表单验证方法
/*输入:str返回:如果全是空返回true,否则返回false*/function isNull(str) {if (str == "") return true;var reg ...
-
MVC 4 用Nuget安装组件后的常见错误
1,[A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 [B]System.Web.WebPages.Razor.Config ...
-
【原创】小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载五(给按钮加图标)
在范例5-4所使用的导航栏中,已经为按钮加入了图标的样式,但是当时并没有介绍按钮的图标究竟是怎么一回事.下面截取范例5-4中导航栏部分的代码: <divdata-role="foote ...
-
.Net知识点总结(一)
1.文件上传:Jquery.uploadify 它依赖于flash 舍去起上传 功能 改用SWFupload 他是第三方的插件 2.验证码激活的时候,邮箱开始是写死的,但是为了以后更改邮箱 ...
-
java 图片文件格式转换(多页tif转jpg 、jpg转tif)
package util; import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; ...
-
十个JAVA程序员容易犯的错误
十个JAVA程序员容易犯的错误 1. Array 转 ArrayList 一般开发者喜欢用: List<String> list = Arrays.asList(arr); Arrays. ...
-
c++參数传递
定义: 形參:指出如今Sub 和Function过程形參表中的变量名.数组名,该过程在被调用前.没有为它们分配内存.其作用是说明自变量的类型和形态以及在过程中的作用.形參能够是除定长字符串变量之外的合 ...
-
java下载远程文件到本地
java下载远程文件到本地(转载:http://www.cnblogs.com/qqzy168/archive/2013/02/28/2936698.html) /** * 下载远程文 ...
-
php 关于laravel5.7框架
一.配置 首先说下配置,安装node.js .npm .cmd 命令行 node -v .npm -v 若已安装出现版本号,若无自行百度 安装compaser 通过compaser命令安装lara ...
-
java异常Exception
学习笔记: 一.程序的异常:Throwable 严重问题:Error ,我们不处理.这种问题一般很严重,不如内存溢出 问题:Exception 编译问题:不是RuntimeException异常.必须 ...