如何找出两个HTML文档中不同的部分并能够定位出来?-问答-阿里云开发者社区-阿里云

开发者社区> 落地花开啦> 正文

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

2016-06-15 18:40:37 1686 1

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

<div>
  <span class="title">pageA</span>
  <div id="content">XXXXX</div>
  <span class="lastupdate">2013-11-21</span>
</div>

网页B(部分):

<div>
  <span class="title">pageB</span>
  <div id="content">XXXXX</div>
  <span class="lastupdate">2013-11-20</span>
</div>

网页C(部分):

<div>
  <span class="title">pageC</span>
  <div id="content">YYYYY</div>
  <span class="lastupdate">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)
  • 落地花开啦
    2019-07-17 19:40:02

    首先,解析 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:具体来说,比如你先比对

    的 innerHTML。如果不一致的话,就一一比对其下所有元素的innerHTML。然后把其中innerHTML相同的节点忽略;对innerHTML不相同的节点再递归地进行处理。如果遇到某个元素在两个文档里的childNode数量不一的情况……那就看你想怎么办了。
    0 0
相关问答

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 222941浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157041浏览量 回答数 145

28

回答

钉钉开放平台“常见问题常见问题常见问题“重要请关注

竹梅 2015-12-03 00:39:14 92820浏览量 回答数 28

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146742浏览量 回答数 22

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 145581浏览量 回答数 31

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 126127浏览量 回答数 2

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302560浏览量 回答数 249

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 123179浏览量 回答数 97

13

回答

域名解析是正确的,但是网站打不开求助!

游客b4ezpaqg54gdq 2019-07-05 11:50:33 118786浏览量 回答数 13

78

回答

【2013.9.5修正版图文】新手如何使用阿里云(linux)服务器建站(搬站)

姑苏公子 2013-04-11 00:39:13 107723浏览量 回答数 78
+关注
落地花开啦
喜欢技术,喜欢努力的人
0
文章
7824
问答
问答排行榜
最热
最新
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载