使用VB6创建和访问Dom树

关键字:VBDOMHTML爬虫IHTMLDocument

我们知道,在VB中一般大家会用WebBrowser来获取和操作dom对象。 
但是,有这样一种情形,却让我们纠结不已: 
我们需要做爬虫,然后爬虫不需要太高的效率,但是我们被复杂的正则表达式给弄的头晕眼花。 
不知道何去何从。

今天,下定决心研究下html的解析,终于掌握了对IHTMLDocument等接口对象的使用。

源代码放在:http://www.extencent.com 
具体的文章将会放在博客园以及CSDN博客。主要是考虑到贴吧对代码的支持特别的弱。

示例代码中使用了WebCode这个类,这个类的代码可以在以下两个地方找到:

网站 网址
我的代码分享站 http://www.extencent.com/
CSDN代码片 https://code.csdn.net/snippets/686971

本次分享的是这样的代码:

  1. Private Sub btnTryLuck_Click()
  2. 'html代码
  3. Dim htmlCode As String
  4. 'html Dom树对象
  5. Dim myhtml As New HTMLDocument
  6. 'html IHTMLElementCollection 对象集合
  7. Dim tables As IHTMLElementCollection
  8. 'html HTMLTable
  9. Dim table As HTMLTable
  10. 'html HtmlRow 行
  11. Dim row As HTMLTableRow
  12. 'html HTMLTableCell 单元格
  13. Dim cell As HTMLTableCell
  14. 'define temp variables
  15. Dim i As Long
  16. '获取html代码
  17. htmlCode = mWeb.GetHttpCode("http://kaijiang.zhcw.com/zhcw/html/ssq/list.html", "smart")
  18. '加载html代码到dom树(通过这个赋值的方法,就完成了DOM树的构建)
  19. '真的比写正则表达式要方便
  20. myhtml.body.innerHTML = htmlCode
  21. '这个时候,如果你对JavaScript操作熟悉就更好了
  22. '我们通过getElementsByTagName这样的操作
  23. '来获取含有彩票中奖信息的表格,非常方便
  24. '不过注意,因为是根据TagName获取的,所以是一个集合
  25. Set tables = myhtml.getElementsByTagName("table")
  26. '判断集合长度超过零,说明有数据,这个时候才进行下一步操作
  27. If tables.Length > 0 Then
  28. '大家记住了,这里操作的都是对象,所以要用Set来进行赋值。
  29. '这里,我们获取到了第一个表格对象
  30. '因为经过观察,中奖信息就在第一个表格中
  31. Set table = tables(0)
  32. '如果这个表格有超过3行,才继续提取信息
  33. '为什么?因为第一行,第二行都是表格标题部分
  34. '这个大家可以去Chrome上面看DOM树。
  35. If table.rows.Length > 3 Then
  36. '我们从序号2开始(也就是第三行,别忘了是从0开始的)
  37. For i = 2 To table.rows.Length - 2
  38. '这里同样是Set,获取了某一行
  39. Set row = table.rows(i)
  40. '这里,将第3个(序号为2)单元格中的文本输出
  41. Debug.Print row.cells(2).innerText
  42. Next i
  43. End If
  44. End If
  45. End Sub
  46. '以上,

【VB6】使用VB6创建和访问Dom树【爬虫基础知识 】的更多相关文章

  1. js基础例子dom+原型+oop基础知识记录01

    //oo:概念是计算机中对于现实世界的理解和抽象的方法 //由计算机利用编程技术发展到现在的产物 //面向对象几要素 //对象:由属性和方法组成的集合 //属性:保存数据,存储在对象内存空间中的唯一的 ...

  2. JS操作DOM对象——JS基础知识(四)

    一.JavaScript的三个重要组成部分 (1)ECMAScript(欧洲计算机制造商协会) 制定JS的规范 (2)DOM(文档对象模型)重点学习对象 处理网页内容的方法和接口 (3)BOM(浏览器 ...

  3. Linux驱动之设备树的基础知识

    前期知识   1. 如何编写一个简单的Linux驱动(一)--驱动的基本框架   2. 如何编写一个简单的Linux驱动(二)--设备操作集file_operations   3. 如何编写一个简单的 ...

  4. Treap树的基础知识

    原文 其它较好的的介绍:堆排序  AVL树 树堆,在数据结构中也称Treap(事实上在国内OI界常称为Traep,与之同理的还有"Tarjan神犇发明的"Spaly),是指有一个随 ...

  5. c语言-树的基础知识

    第一.树的定义:   1.有且只有一个称为根的节点   2.有若干个互不相交的子树,这些子树本身也是一颗树 第二.专业术语: 树的深度:从根节点到最低层,节点的层数 ,称之为树的深度.  根节点是第一 ...

  6. DOM树节点关系

    DOM是JS中专门操作HTML页面内容的 他的三种基本使用方法是: 1.  document.getElementById(''):  ——>选取html页面中带有Id的属性名: 2.docum ...

  7. WebKit Inside: DOM树的构建

    当客户端App主进程创建WKWebView对象时,会创建另外两个子进程:渲染进程与网络进程.主进程WKWebView发起请求时,先将请求转发给渲染进程,渲染进程再转发给网络进程,网络进程请求服务器.如 ...

  8. DOM树操作

    DOM 操作 访问与树关系(节点) 绘制 DOM 树: childNodes, attributes 从一个中心元素访问其所有的直系亲属元素 访问父节点: parentNode 访问上一个兄弟节点: ...

  9. 从Chrome源码看浏览器如何构建DOM树

    .aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } p { font-size: 1 ...

随机推荐

  1. 新冲刺Sprint3(第六天)

    一.Sprint介绍 商家功能模块继续完善着,加快了工作的步伐. 二.Sprint周期 看板: 燃尽图:

  2. java 队列基础操作

    http://www.cnblogs.com/fuck1/p/5996116.html 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别 ...

  3. Java中封装、继承和多态

    封装: 封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度. 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性. 访问修饰符有public,private,prot ...

  4. 以application/json 方式提交 然后用在php中读取原始数据流的方式获取 在json_encode

    html 如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>& ...

  5. xloader

    [1],先看一下整个系统的结构(软件是灵魂,硬件是驱体,再强大的灵魂力若没有躯体终将是游魂野鬼,再强壮的驱体若没有灵魂终将是植物人) 结构 作用 备注 硬件 一切软件的载体   xloader 引导u ...

  6. Oracle SQL性能优化(转)

    (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table ...

  7. MFC双缓冲绘图(2015.09.24)

    问题引入: 最近在尝试编写贪吃蛇游戏时遇到这么一个问题:当系统以较快频率向窗口发送WM_PAINT消息时,调用OnPaint()函数在窗口中绘制图形就会发生闪烁现象. 问题分析: 当我们把绘图过程放在 ...

  8. Tomcat Start 报错 (COULD NOT DELETE MAY BE LOCKED BY ANOTHER PROCESS)

    jsp文件重命名后发布不起来了,提示文件被占用,原因是当前的java ee项目 与它引用的java项目 依赖了相同的jar包,删除了clean 再发布,问题解决,如有需要再引用回来 http://it ...

  9. PHP中的运算符---算术运算符、逻辑运算符、赋值运算符、比较运算符

    1.算术运算符 常见的算术运算符 运算类型 运算符 举例 结果 取反运算 - -$a 返回$a的负值 加法运算 + $a + $b 返回$a与$b的和 减法运算 - $a - $b 返回$a与$b的差 ...

  10. Chapter 5: Design and implement security

    Configure authentication Authenticating users IIS authentication Anonymous ASP.net impersonation Bas ...