• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 如何找出两个HTML文档中不同的部分并能够定位出来?

如何找出两个HTML文档中不同的部分并能够定位出来?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了找出空缺部分的图形,找出缺少的部分,怎样找出隐藏的文档,怎样找出word文档,如何找出未保存的文档等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何找出两个HTML文档中不同的部分并能够定位出来?
描述:

标题说的可能有点抽象,举个例子说明下。
网页A(部分):

<div>
  <span>pageA</span>
  <div>XXXXX</div>
  <span>2013-11-21</span>
</div>

网页B(部分):

<div>
  <span>pageB</span>
  <div>XXXXX</div>
  <span>2013-11-20</span>
</div>

网页C(部分):

<div>
  <span>pageC</span>
  <div>YYYYY</div>
  <span>2013-11-19</span>
</div>

人工对比下可以发现网页A与B对比的话,.title和.lastupdate这两个span里的值不一样。我需要实现的就是能够通过代码识别出这两个位置,并且能够根据这个位置在网页C中提取出pageC和2013-11-19

p.s. 本问题不指定某个特殊语言,主要是探讨下思路。回答最好不要过于依赖某个语言自己独有的包或者类库。
再p.s. 我自己打算最终用node.js或者php实现。如果回答是别的语言的话我会自己“翻译”的,不用担心~


基于回答补充以下内容:
1.不同的定义仅局限在内容的不同,保证被比较的两者整个网页大体的结构是稳定一致的。
2.网页内可能会存在不规则的标签,包括但不限于未闭合的标签(如漏写一个)、自己定义一个标签类别()


解决方案1:

https://github.com/chrisboulton/php-diff

解决方案2:

首先,解析 HTML 有两种办法:

一种是基于事件回调的:比如 python 的 HTMLParser 和 PHP 的 SimpleXML。它在遇到 starttag、endtag 以及遇到 text node 时就调用你指定的函数。

第二种是建立起一个完整的 DOM 树,让你进行 DOM 操作。


现在的问题就是应该怎么定义“不同”。

如果你指的只是 text node 的 text content 不同,而 node tree 的结构完全相同的话,就很容易了,此时你可以使用第一种解析 HTML 的方法;只需要把第一个页面所有的 text node 按顺序存下来;然后把第二个 HTML 的所有 text node 与之一一比对就 ok 了。

如果页面结构都不同的话,就会复杂些。这种情况下可以用第二种解析 HTML 的方法建立起 DOM 树;然后可以一层一层递归地比对innerHTML:具体来说,比如你先比对<body>的 innerHTML。如果不一致的话,就一一比对其下所有元素的innerHTML。然后把其中innerHTML相同的节点忽略;对innerHTML不相同的节点再递归地进行处理。如果遇到某个元素在两个文档里的childNode数量不一的情况……那就看你想怎么办了。


好吧以上其实全部是我在意淫,毫无依据。就当抛砖引玉吧。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何找出两个HTML文档中不同的部分并能够定位出来?

相关文章

  • 2017-06-07 mysql正则表达式域名正则表达式
  • 2017-06-07 api动态缓存最佳实践?
  • 2017-06-07 只能移动智能手机发送和接收超声波
  • 2017-06-07 DjangoORM查询每个用户的最后一条评论
  • 2017-06-07 python多线程Rlock的疑问
  • 2017-06-07 谁有时间能给翻译一下,应该都是CCS的样式属性的中文名称,或者有什么网站有CSS属性的中英对照表也行。
  • 2017-06-07 Laravel使用多个数据库的问题。
  • 2017-06-07 (golang)Gonet/http包里有些没搞清楚~
  • 2017-06-07 (ruby)rails发送邮件遇到问题
  • 2017-06-07 七牛有没有历史版本?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • (python)缓慢执行的代码是怎么写的,比如js是用setinterval吗?有更好的吗?
    • (flask)前台展示、后台数据哪种方式好。放在response还是通过json
    • 如何在JBPM43中updateGroup与User
    • mac上源码编译安装PHP7,但是phpini有问题
    • (python)django做工单系统有什么比较好的解决方案
    • tornado异步数据库orm?
    • github上有什么适合python初学者学习的项目?
    • python爬虫(python)如何将我的这段程序改造成多线程?
    • 如何获取网页加载完成后的最终值
    • 页面抓取(python)关于抓取页面中动态地址的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有