![]() |
1
12
听起来你在寻找一种强有力的方法来衡量两页纸的相似性。 考虑到页面的结构不会改变那么多,我们可以将问题减少到测试页面上的文本是否大致相同。当然,用这种方法 the problems alluded to by nickf 关于一个摄影师的页面仍然存在,但如果你主要关心雅虎!新闻之类的应该没问题。 要与页面进行比较,可以使用机器学习中的一种方法,称为“字符串内核”。这是早起 paper 最近的一组 slides 在R包和A上 video lecture . 非常粗略地说,一个字符串内核查找两个文档共有多少个单词、两个单词对、三个单词等。如果a和b是两个文档,k是字符串内核,那么k(a,b)的值越高,两个文档越相似。 如果您设置了阈值t,并且只说两个文档对于k(a,b)是相同的,那么您应该有一个合理的好方法来做您想要做的事情。当然,您必须调整阈值以获得应用程序的最佳结果。 |
![]() |
2
5
通过使用某种相似性度量(如 cosine similarity . 然后您必须定义一个最小阈值,您可以使用它来接受两个文档是否相同。例如,在应用余弦度量时,我会选择一个最接近1的值,因为对于完全不同的值,它的范围是-1,对于完全相同的值,它的范围是1。 |
![]() |
3
5
对于这类问题,我发现在学术论文中搜索比询问StackOverflow要好得多,在处理细节时,专家通常比人群聪明得多。 每个网络爬虫或搜索引擎都有这个问题并解决了它。使用基于内核的方法可能是一种很好的方法 like the accepted answer is suggesting 但是你可能想从简单的技术开始,这些技术是众所周知的很好的工作。之后,您可以转到内核方法,并测试它们是否能改善您的结果。 你最好的选择是阅读 Henzinger's 2006 paper 'Finding near-duplicate web pages: a large scale evaluation of algorithms' 你可能会把生成拉宾指纹作为第一步 'Fingerprinting by random polynomials' Rabin 1986 . |
![]() |
4
2
我用vgrep来做那种事。 它是一个鲜为人知的工具,称为视觉grep,它依靠先进的技术,如灵敏的视觉设备和视觉皮层,可以很快地同时确定页面的相同性,而且它非常准确和有效(应该是因为它已经开发了很长时间)。 标记社区wiki,以防幽默警察今天外出:—)。 |
![]() |
5
2
取决于你在做什么,你可能对 TemplateMaker . 你给它一些字符串(比如网页),它会标出那些变化的位。 在你 雅虎!新闻 例如,您只需获取一次页面,然后告诉模板创建者学习它。然后你再把它拿回来告诉它去学那个。 当你很高兴你的模板创建者每次都知道相同的内容时,你可以再取一个页面,问模板创建者它是否与其他模板匹配。(它会让你 有 如果您对此感兴趣,请更改。) |
![]() |
6
1
可以使用Web浏览器组件呈现两个页面的屏幕截图,然后比较图像。可能是最简单的选择。 |
![]() |
7
0
如果你不知道你要比较的页面的结构,那么这可能是非常棘手的。也就是说,一台机器怎么能告诉你一个有两张不同图片的页面是一样的——如果它是一个有广告的新闻网站,那么它应该是一样的,但是如果它是一个摄影师的作品集,那么它肯定是不同的。
如果您知道页面的结构,那么我将手动选择页面的各个部分(使用ID、CSS选择器、xpath等)进行比较。例如,只比较
实际上,有一种服务可以做类似的事情。它叫 Rsspect (由Qwantz Fame的Ryan North撰写),它可以检测到任何网站的变化,并从中创建一个RSS源,即使你不控制页面。 |
![]() |
8
0
您可以为它们中的每一个生成一个MD5散列,然后进行比较。就像你说的,很简单。 您要寻找的是一种比较两个页面的技术,这些页面具有可以更改的任意元素。这是个难题。
您违反了屏幕抓取的第一条规则:页面本身就是不稳定的。所以这是个棘手的问题。您的解决方案永远都不够强大,无法解释您的源数据将受到的各种各样的细微变化,除非您还可以直接控制源页面,并可以针对这些问题设计解决方案。 祝你好运!我在试图解决这个问题的系统方面有经验,这确实是一个难以破解的难题。 |
![]() |
9
0
这样做的方法是不要比较整个页面,因为正如你所说,一个人也不会被它欺骗。假设你对雅虎的新闻报道感兴趣!佩奇,那么你应该看看新闻部分。然后您可以做任何事情,在新版本和旧版本之间进行哈希或文字比较。 |
![]() |
10
0
我想到的第一个想法是用beautifulsoup(python)将页面处理成XML文档,在它们上运行diff,并计算不同的行数。如果计数为>x%,则它们是不同的。不是很健壮,可能容易出错,但这是我在测试中所做的快速黑客攻击。
您可能需要查看此页面,其中讨论比较两个XML文档:
一个HTML文档可以被强制转换成一个有漂亮汤的XML文档,然后使用上面列出的技术进行比较。 |
![]() |
11
0
我也有类似的问题。我试图为用户提交的链接目录设计一个安全的链接系统。用户可以在博客或新闻网站上发布页面,并将链接提交到索引。一个人会验证链接是否合适,然后将页面添加到索引中。 问题是想出一种自动化检查的方法,以确保链接随着时间的推移仍然是适当的。例如,是否有人在几周后修改了网页并插入了种族歧视?新闻网站是否开始告诉人们“你必须订阅阅读这个故事”? 最后,我提取了段落<p>元素,并将缓存副本与当前逐字比较。简单来说:
在那之后,一系列的分拣员会在处理其他单词(亵渎等)时忽略“如果可以,或者可以”和“的普通单词。 这导致了一个评分系统,除了忽略小的编辑和修订(打字错误、句子结构等),但很快就会发现内容是否需要再次检查。然后返回一个分数,超过阈值的分数将被放入一个队列中,供人重新验证。 这也有助于解释网站的重大整容变化。我不相信它完全靠自己来运作,但在人类的帮助下,它可以很好地完成它的工作。诚然,就方法论而言,该系统的效率并不如以前那么高。 |
![]() |
12
0
您可以尝试使用HTTP头,例如if-modified-since,或者其他一些与缓存相关的头。另外,查看一个站点地图文件,看看搜索引擎需要多久检查一次,可能会有所帮助。
我的另一个尝试(可能是结合使用)是列出
编辑:您也可以比较
|
![]() |
13
0
我最近遇到了这个问题,并在这里研究了一个javascript解决方案: https://github.com/kennychua/pdiffy/ 它允许您比较页面的图像(最好是无损PNG格式),它将告诉您图像是否不同,如果不同,它将突出显示不同之处。 它还可以忽略像您描述的时间戳问题这样的区域 |
![]() |
Dsujan · 从第二个文件中获取更改行的差异 7 年前 |
![]() |
Damian Nadales · 让vc修订版其他窗口删除它获取的文件 7 年前 |
|
book · bash:如何打印diff命令输出? 7 年前 |
![]() |
lombocska · Liquibase diff-驱动程序问题 7 年前 |
![]() |
bitifet · 如何创建类似VCS的冲突合并文件? 7 年前 |