热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

转:网页爬取页面去重策略

网上搜集到的网页去重策略:1.通过MD5生成电子指纹来判断页面是否改变2.nutch去重策略:nutch中digest是对采集的每一个网页内容的32位哈希值,如果两个网页内容完全
网上搜集到的网页去重策略:
1.通过MD5生成电子指纹来判断页面是否改变
2.nutch去重策略: nutch中digest是对采集的每一个网页内容的32位哈希值,如果两个网页内容完全一样,它们的digest值肯定会一样,但哪怕其中之一多或少一个空格,它们的digest值就会不一样。所以,我认为,用digest做id是一个非常不错的选择。
    如果nutch在两次不同的时间抓某个网页,例如还有新浪首页http://www.sina.com.cn,如果在两次抓取这段时间,首页没有什么变化,nutch计算出的两次抓取的首页的digest肯定是一样的,这样,nutch在第二次向solr进行索引时,发现digest在solr的索引库中已存在(id是唯一的),自然就写不进去。这样,避免了索引库的重复记录。
  同时,采用digest作为Id,也避免了一个行业内部网有镜像网站在solr索引库的重复记录。

      总之,采用digest作为Id,防止了nutch在向solr索引库写入时写入重复记录的问题,有天然去重功能。

      但是,还必须解决一个问题:如果nutch在两次不同的时间抓某个网页,如果这个网页有变化,两次的digest值肯定不同,这样,nutch在向solr索引库update时,会将同一个url(如http://www.sina.com.cn)写入两条记录。那么,在搜索界面键入:新浪,肯定会出现两条新浪网站数据。如此类推,nutch采集了同一url网页n 次,就有可能在solr索引库中有n条相似的记录。这样的情况出现让我很抓狂,陷于困局之中。

       其实,这就是对同一个url进行去重的问题。nutch有一个去重的模块org.apache.nutch.indexer.solr.SolrDeleteDuplicates.java,命令为:bin/nutchsolrdedup,分析发现,它是对digest相同的记录进行去重。估计是nutch把url作为solr的主键id,所以没有考虑到对url相同的记录进行去重。代码如下:nutch与起点R3集成之笔记

转自:http://blog.sina.com.cn/s/blog_623584750101eeb4.html


推荐阅读
author-avatar
mobiledu2502907897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有