网页表格抓取(基于MSHTML设计开发的原理、程序结构和网页元素属性表格化显示)
优采云 发布时间: 2022-01-16 16:27网页表格抓取(基于MSHTML设计开发的原理、程序结构和网页元素属性表格化显示)
罗进才
【摘要】介绍了基于MSHTML设计开发的网页信息表格提取程序的原理、程序结构和工作流程。使用网页信息提取、网页元素分析、采集配置管理三个功能模块,提取网页信息。其内部相关信息的提取、解析、排序和表格展示,创新性地采用二进制检查机制确认网页属性值和树形路径值,可以实现对指定信息的准确提取。本文还说明了程序的操作步骤和实际效果。
【关键词】MSHTML信息自动提取网页元素属性并以表格形式展示
[CLC 编号] G64 [文档识别码] A [文章 编号] 2095-3089 (2017)10-0229-02
介绍
当今是网络飞速发展、信息量迅速膨胀的信息时代。人们通过信息相互交流,了解世界。信息中有很多有价值的信息元素,这些有价值的信息元素大多以网页的形式存在,其内容和格式差异很大。通过浏览器浏览阅读是没有问题的,但是如果需要保存和整理某类感兴趣的信息及其内部相关信息,常用的工具一般都有一些不足,比如网络蜘蛛等爬虫工具. 无法实现内部相关信息的提取。因此笔者使用MSHTML语言设计了一个网页内部表格抽取自动程序,
1.程序设计思路
1.1 采集原理
众所周知,网页是用 HTML 语言描述的。采集网页信息的本质是从网页的HTML代码中提取出我们需要的信息。如果直接从代码中提取,就只能使用正则表达式等文本匹配的方式来采集。这会导致以下问题:一是使用不方便。用户不仅需要了解 HTML,还需要了解正则表达式。另外,他们需要在大量的 HTML 代码中找到需要的信息,然后再考虑如何匹配;二是容错性差。,如果代码稍有偏差,会导致文本匹配失败,比如遇到制表符、回车、空格等。
经过长期研究,作者发现MSHTML可以有效解决这些问题。MSHTML是微软公司的一个COM组件,它将所有元素及其属性封装在HTML语言中,可以通过它提供的标准接口访问指定网页的所有元素。
MSHTML 提供丰富的 HTML 文档接口,包括 7 种 IHTMLDocument、IHTMLDocument2、…、IHTMLDocument7 等。其中,IHTMLDocument只有一个Script属性,用于管理页面脚本; IHTMLDocument2接口与C#的HtmlDocument类非常相似(即直接通过Web Browser控件获取的Document属性); IHTMLDocument3 与 Visual Basic 6.0 相同。一个类似于文档对象的接口,基本上可以使用的方法都在里面。 MSHTML 还提供了 IHTMLElement 接口,封装了 HTML 元素的完整操作。通过IHTMLElement可以准确判断HTML元素节点的类型,获取HTML元素节点的所有属性。
1.2 二进制校验机制
通过比较元素属性值,基本可以判断一个元素节点是否为采集的节点。由于网络中网页信息属性值相同的元素节点比例较高,相同属性值不能唯一指定节点为采集,还需要其他约束。通过分析发现,MSHTML还提供了访问当前节点的父节点的功能。我们可以通过回溯父节点来获取该节点在 HTML 文档树中的路径。这样,通过同时比较网页元素的属性值和树形路径值,就可以准确判断该节点是否为需要采集的节点。
使用属性值和树路径值进行元素验证的双重检查机制是作者的创新。该技术不仅可以大大提高采集节点的准确率,保证程序运行的效果,而且由于程序中使用了智能判断语句,保证了程序的运行效率,同时考虑到用户具有良好的用户体验。
1.3主要功能设计
网页信息列表提取程序可以实现网页信息的可配置采集,并将信息列表保存。程序主要分为三个功能模块:
1.网页信息提取功能模块。提供信息提取功能的主界面,输入采集网址,采集页码,启动采集。
2.网页元素分析功能模块。将html代码解析成网页元素列表,自动生成采集项的DOM树路径,方便脚本编写。
3.采集配置管理功能模块。用于管理采集配置,提供添加、编辑、删除等功能。
3.程序的主要功能实现方法
3.1采集配置管理
采集配置信息存储在数据库中,主要由一对主从表记录。主表记录了对应的网站采集配置名、域名、翻页设置、加载等待设置等信息。记录 采集 项的名称、ID、ClassName、TagName 和表格中网页元素的 DOM 树路径。
3.2 网页元素分析
该函数的目标是将网页的 HTML 代码解析为 HTML DOM 网页元素,并列出它们的各种属性值。通过遍历网页的元素,找出想要的采集数据项和下一页的web元素,记录在采集配置表中,同时添加DOM树采集 项的路径自动记录在配置表中。
3.2 自动提取网页信息
该函数将网页中需要采集的数据项采集转换成数据表,最后以XML文档的形式保存。该程序的工作原理如下:
Step1:遍历网页中的所有元素,count变量记录网页元素的个数。
Step2:将每个元素与采集配置中的采集项配置进行比较,判断该元素是否为采集元素。tab_item是一个adotable变量,记录了当前页面的采集配置,webbro.OleObject.document.all.item(i)变量是网页元素,itembyscript()函数会判断是否网页元素需要采集。
Step3:如果元素需要采集元素,进一步判断数据列缓存行中是否有采集项的数据。如果没有,则将采集 中的数据存入行,如果有,则通过addrec() 函数将采集 中的数据行存入XML 文档。
4.运行测试
4.1 读页
本示例将使用厦门本地知名论坛小鱼社区的帖子进行测试。网页中的html代码会被解析成网页元素列表,并显示在“元素”页面中。
图1 读取页面信息
4.2 配置采集
将操作界面切换到“元素”页面,可以看到网页元素列表,在列表中找到需要采集的网页元素。setup采集 配置如下:
(1) 翻页。首先找到“下一页”链接的网页元素,其tagname属性值为“A”,innertext属性值为“下一页”。设置为“下一页” 采集 项。
(2)作者。所属的网页元素,classname属性值为“readName b”,tagname属性值为“DIV”。
(3)Body.所属页面元素,classname属性值为“tpc_content”,tagname属性值为“DIV”。
(4)DOM树路径。DOM路径是通过网页元素列表自动生成的。
4.3查看采集结果
图 2 采集 结果的表格显示
5.结束语
随着互联网的快速发展,人们对网页元素的需求越来越转向个性化分类和精准提取。之前对所有内容的粗暴的采集方法已经不能满足现在的需求。研究是积极的。
网页信息表格提取程序通过网页信息提取、网页元素分析、采集 配置管理。克服了以往网页信息爬取工具无法提取内部相关网页信息的缺点,使程序的适用性和扩展性显着提高,程序创新性地采用了二进制校验机制来确认网页属性值和树路径值。可以实现对指定信息的准确提取,大大提高了程序结果的准确性。
网页信息表格提取程序虽然在准确性、适用性和可扩展性方面取得了进步,但仍存在一些不足,希望以后能找到更好的解决方案。
1.部分操作界面的用户自动化程序不足,操作比较复杂。
2.海量数据不兼容,处理效率低。由于程序的采集页面使用了WebBrowser技术,采集的效率较低,在处理大数据时会出现效率低的问题。有必要寻找更好的技术方法进行优化。
参考:
[1] 方勇,李寅生. 一种基于DOM状态转移的隐藏网页信息提取算法[J]. 计算机应用与软件, 2015, (09): 17-21.
[2] 张建英,王家梅,棠雪,胡刚。易文网络信息采集技术研究[J]. 网络安全技术与应用, 2014, (12): 6-8.@ >
[3] 孙宝华. 企业社交媒体主题信息抽取算法研究[J]. 煤炭, 2014, (01): 72-76.
[4] 金涛.网络爬虫在网页信息提取中的应用研究[J]. 现代计算机(专业版),2012,(01):16-18.@>
[5]朱志宁,黄庆松.快速中文网页分类方法的实现[J].山西电子科技, 2008, (04):7-9.
[6] 高军,王腾蛟,杨冬青,唐世伟。基于Ontology的Web内容两阶段*敏*感*词*提取方法[J]. 中国计算机学报, 2004, (03): 310-318.@>