【VB6】使用VB6创建和访问Dom树【爬虫基础知识 】
使用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 ...
- WebKit Inside: DOM树的构建
当客户端App主进程创建WKWebView对象时,会创建另外两个子进程:渲染进程与网络进程.主进程WKWebView发起请求时,先将请求转发给渲染进程,渲染进程再转发给网络进程,网络进程请求服务器.如 ...
- DOM树操作
DOM 操作 访问与树关系(节点) 绘制 DOM 树: childNodes, attributes 从一个中心元素访问其所有的直系亲属元素 访问父节点: parentNode 访问上一个兄弟节点: ...
- 从Chrome源码看浏览器如何构建DOM树
.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } p { font-size: 1 ...
随机推荐
- JS和Android交互
//本地webview写法 webview = (WebView) findViewById(R.id.webview); webview.loadUrl("http://192.168.1 ...
- Surprise团队第一周项目总结
Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...
- APP邂逅即时通讯云,让你的手机APP聊起来
#推荐活动# #线下沙龙# 明天下午在IC咖啡 —— <APP邂逅即时通讯云,让你的手机APP聊起来>, http://url.cn/Y8sYo5
- 关于django xadmin的学习改造(菜单名称,更改默认前缀数据库)
路径xadmin-master\demo_app\app\models.py class c(models.Model): ip_address = models.CharField(max_leng ...
- codeforces A. Difference Row
link:http://codeforces.com/contest/347/problem/A 开始看起来很复杂的样子,但是刚写下样例,就发现因为中间的都消去了,其实起作用的就是最大值和最小值=_= ...
- BZOJ 1801中国象棋 DP
1801: [Ahoi2009]chess 中国象棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1426 Solved: 826[Submit][ ...
- Git学习笔记(Mac Linux系统)
最近参与学校一个比赛,和队友一起做一个小项目,需要将代码传到Coding(国内git代码托管平台),因此这几天才正式入手git版本控制系统,在这里我就记录一下最近的学习git心得体验,一来分享一下自己 ...
- netflix:Conductor微服务编排引擎
项目地址: https://github.com/Netflix/conductor Conductor 是 Netflix 受需要运行全球流媒体业务流程的启发,构建的基于云的微服务编排引擎. Con ...
- rabiitmq集群完整安装
通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收. ...
- maven3.2.3+eclipse4.4+JDK1.8+win8.1_64bit环境搭建
--------------------------------------- 博文作者:迦壹 博客标题:win8.1_64bit+eclipse4.4+maven3.2.3+JDK1.8环境搭建 博 ...