基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET
基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET
VIPS: a Vision-based Page Segmentation Algorithm.pdf下载
这篇论文的主要思想:
从人类的角度来看,当一个用户观察web页面的时候,它总是会自然而然的把一个语义块作为一个单一对象来看待,而不会管web页面的内部结构是如何描述的。因此一些视觉因素,比如背景颜色、字体颜色和大小、边框、逻辑块和逻辑块之间的间距等等可用来分辨语义块,充分的利用web页面的视觉提示,并结合DOM树进行页面语义分块,可以达到更加理想的效果。VIPS算法的首先从DOM树中提取出所有的合适的页面块,然后根据这些页面块检测出它们之间的所有的分割条,包括水平和垂直方向。最后基于这些分割条,Web页面的语义结构将被重新构建。对于每一个语义块又可以使用VIPS算法继续分割为更小的语义块。
vips算法流程图
其中,节点分割依据有:
1、DOM结点本身的属性。比如当前DOM结点的标签,结点的背景色,当前结点所代表的页面块的大小,形状。
2、当前DOM结点的孩子结点。比如孩子结点的标签,孩子结点所代表的区域的背景色,前景色,区域的大小以及不同类型的孩子的数目等等。
节点的分割原则如下:
1、标签提示
一些标签如<HR>通常用来从视觉上分隔不同主题的内容, 因此如果DOM结点中包含这些标签,该结点允许被继续分割;
如果inline结点的孩子结点存在line-break结点,那么该结点 将被倾向于被分割;
2、色彩提示
如果当前结点的孩子结点中有一个结点的背景色与它的背 景色不同,分割该DOM结点。同时,具有不同背景色的节 点在本次循环中不再被分割。分割由下一次迭代完成
3、文本提示
如果当前结点的大部分孩子结点都是文本结点或者是虚拟 文本结点,不再继续分割该结点
4、尺寸提示
对不同的结点类型预定义一个门槛尺寸(结点的大小与整个 页面大小的比较),如果结点的相对尺寸小于门槛大小,那 么分割就停止分割条检测步骤如下:
1、初始化分隔条列表。最早的分隔条列表中仅仅存在一个分隔条,起始和终止坐标为(Pbe,Pee),分别对应整个Web页面的起始坐标和终止坐标
2、页面块被包含在分隔条中,此时,该分隔条将从页面块的边缘裂变为多个分隔条
3、页面块与分隔条发生部分重合,那么根据页面块的边界重新调整分隔条的参数
4、页面块跨越分隔条,那么此时移除该分隔条
5、移除页面边缘的分隔条分割条检测步骤图
语义块重构过程:
从最小权重的分隔条开始,该分隔条两侧的页面块将合并在一起组成一个新的页面块。该合并过程不停的进行迭代,直到遇到权重最高的分隔条为止。对于每一个新的语义块,相应的DOC也被相应设置,参见下图:
另外,分隔条用于区别不同语义的页面块,因此基于给定分隔条两边的语义块的在视觉上的差异,设置分隔条的权重。如果分隔条的权重越重,该分隔条两侧的页面属于不同语义块的可能性就越大。分割块权重的设置有以下几个原则:
1、分隔条两边的页面块的距离越远,该分隔条的权重 就越高
2、如果某个分隔条是通过检测HTML标签获取的,比 如<HR>,那么该分隔条的权重就越高
3、 如果分隔条两侧的页面块的背景色是不相同的,那 么该分隔条的权重将相应增高
4、 对于水平分隔条而言,如果分隔条两侧的页面块的 字体属性,比如字体大小,字体重量是不同的,那 么该分隔条的权重将增加。而且如果分隔条上侧的 页面块的体小于分隔条下侧的页面块的字体,那 么分隔条的权重将增加
5、对于水平分隔条而言,当分隔条两侧的页面块的结 构非常相似,比如文本,那么该分隔条的权重将递减
基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET的更多相关文章
- 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET
解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET 解决基于BAE python+bottle开发上的一系列问题 分类: python ...
- JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET
JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET JS获取整个HTML网页代码 分类: Android提高 2012-01-12 23:27 1974人 ...
- 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET
基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...
- 基于Microsoft Azure、ASP.NET Core和Docker的博客系统
欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统 2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...
- 基于视觉的 SLAM/Visual Odometry (VO) 开源资料、博客和论文列表
基于视觉的 SLAM/Visual Odometry (VO) 开源资料.博客和论文列表 以下为机器翻译,具体参考原文: https://github.com/tzutalin/awesome-vis ...
- 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网" ...
- 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些 ...
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取
区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...
- 搞IT,算法编程不错的学习网址 & 一些专栏博客大神的地址(汇总)
博客专栏大神 王晓华(算法的乐趣) 算法系列:http://blog.csdn.net/orbit/article/category/830251 PostgreSQL深入理解内核系列:http:// ...
随机推荐
- codeforces 645E . Intellectual Inquiry
题目链接 如果不考虑重复的元素, 那么我们可以很容易的发现, 长度为n的字符串它的子串数量是 $ 2^n $ . 我们设每个到位置i, 答案的数量为f[i]. 然后我们考虑重复的, 我们发现, 每加入 ...
- 宏定义&CodeBlocks&Glib
一.gcc的参数中-Dmacro 等价于代码里 #define macro -Dmacro=value 等价于代码里 #define macro value -Uma ...
- J2SE知识点摘记(十二)
1. File类 下面的构造方法可以用来生成File对象 File(String directoryPath) geName()用于返回文件名,getParent()返回父目录名,exist ...
- Cortex-M3 .s启动文件分析
1. 基本概念(CMSIS): Cortex Micro-controller Software Interface Standard,微控制器软件接口标准. 2. CMSIS标准的文件结构: a) ...
- POJ 2686 Traveling by Stagecoach 壮压DP
大意是有一个人从某个城市要到另一个城市(点数<=30) 然后有n个马车票,相邻的两个城市走的话要消耗掉一个马车票. 花费的时间呢,是马车票上有个速率值,用边/速率就是花的时间. 问最后这个人花费 ...
- 雕爷牛腩这样判断零售未来-搜狐IT
雕爷牛腩这样判断零售未来-搜狐IT 雕爷牛腩这样判断零售未来
- Gallery平滑移动
看了些网上的方法弄了下平滑移动的效果,虽说最后是实现了,实现后发现也不是我想要的效果,对于我幸苦写过的代码先存放在这上面了 package com.layout; import android.con ...
- The Water Problem(排序)
The Water Problem Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- .net网站开发(前端):4.MVC HtmlHelper
通过前面三节,已经大概理解MVC是怎样运作的了.MVC的一个特点就是可以很方便地控制视图效果,数据交互也很灵活.先讲一下视图控制的,HtmlHelper,看到Help就知道它是不知疲惫的好人啦(有点像 ...
- [置顶] PHP如何扩展和如何在linux底层对php扩展?
虽然大部分php工程师都不需要知道php的C代码核心是如何运作的,有些人可能知道有个dl()函数.或者使用过一些第三方的类库,这些正是本文的重点之一. 希望对那些想把php带向更 ...


