java - 如何区分使用Java的站点?

标签 java web-crawler

这里我有从几个不同的导航站点抓取的所有站点,其中一些是重复的,我的意思是,例如:

http://www.hao123.com/index.htmhttp://www.hao123.com

这是两个内容相同的站点,当然还有其他情况,比如少了一个斜线。单独使用 URL,我仍然将它们视为两个不同的站点。

我的问题是:是否有任何有效的方法可以将它们识别为一个站点?谢谢!

最佳答案

据我所知,没有万无一失的方法可以做到这一点。

话虽如此,一种方法可能是从每个 URL 加载内容,然后将 Levenshtein 距离算法应用于同一域名下的所有页面。然后,您可以设置一个阈值,以判断内容在被认为相同之前有多“相似”(好像内容略有变化,我想它的大部分仍然是相同的。)大约是页面长度的 10%可能是该值的一个很好的起点。

这可能相对较慢,具体取决于您拥有的站点数量,但会考虑到每次加载内容的细微差异,而简单的哈希或长度计算不会。

为了使其更加可靠,您可以检查某些内容在您预期的加载过程中是否相同(或不同),例如页面的标题。

关于java - 如何区分使用Java的站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20973502/

相关文章:

java - 通过某个键将 <Long, List<String>> 映射到字符串 Lambda 列表

Java - 卡的总值(value)。将数组的值与另一个数组中的位置进行比较

javascript - 类似于 Node.js 的 Jsoup 库

css - 识别访问网站中隐藏链接的用户

java - Spring Scheduled fixedRate 无法正常工作

java - GSS 异常 : No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)

node.js - Sails.js 静态 html 渲染器

python - scrapy Spider 的输出与 scrapy shell 的输出不同

web-crawler - 抓取整个网络的指南?

java - Spring转换器将null转换为空集合