我抓取URL,为了避免抓到同一个URL我将URL的hashCode都取出来做比较,但是如果一个URL的内容改变(网页修改过),它的hashCode会不会改变呢?

解决方案 »

  1.   

    不会,url只有一个字符串。没有什么别的东西。
      

  2.   

    我的URL数量非常大,不想一个一个比较,想用哈希表的方式来提高比较效率(以便决定是否抓取),另外需要实现的还有该网页别修改了就需要重新抓取,请问该如何做?
      

  3.   

    搂住也在抓取URL呢,我也在研究,呵呵。共同学习!
      

  4.   

    呵呵,共同学习。再详细说一下我的目的:我想通过哈希表的形式来判断一个网页是否已经被抓取过(省去了逐个URL比较);再有就是如何判断一个网页是否被修改过以决定是否重新抓取?
      

  5.   

    UP,顺便补充一下:
    1.我取了URL的Hashcode做为Oracle的一个字段(来判断该网页是否已经被抓取过,请问该字段应该用什么数据格式声明(Oracle中)?
    2.另外HashCode做为int型,其范围为(-2147483648至2147483647),如果URL数量特别大的时候会不会有重复的HashCode呢?不了解其哈希函数的设定,希望高手指点一下
    3.如何用java取一个网页的修改时间?便于更新谢谢各位指导,敬礼呵呵
      

  6.   

    再UP一下,自己弄明白了oracle的number类型原来可以存储负数而且不占字节的,例如number(3)可以存储-123,不过还是不明白为什么,BS自己一下不求甚解。现在求高手指点一下,如何用java获得网页修改时间,再次敬礼哈
      

  7.   

    是不能用hashcode来判定一个网页是否被抓取过的。
    因为两个对象不同,但他们的hashcode可能相同,也就是说,有时他们会被散列到一个桶里,尽管这种可能性比较小
      

  8.   

    alhu0470() ,我猜测得到URL的HashCode的哈希函数是由URL这个字符串决定的......刚才我对同一个URL取多次hashCode(),返回的值也是相同的(同一个程序中)
    也许是我考虑不周全,如果两个URL存在冲突,处理冲突后第二个URL会被给定另外一个值(再次散列或者开放定址);如果过一段时间再次对第二个URL取hashCode,会不会和上次取得那个值相同呢?好晕好晕还是帮俺想想怎么用java的到网页的修改时间吧,唉
      

  9.   

    Up,顺便说一下:一个字符串以字符串对象取HashCode和以URL对象取HashCode得到的结果是不一样的,所以哈希函数不仅仅是对URL这个字符串计算,而且”类“也对哈希函数起作用,呵呵,也算学到了点东西。大虾们大侠们高人们,指导一下俺怎么用java取网页修改时间吧
      

  10.   

    几天没看,还是没人帮俺
    要不不取修改时间了,对Html内容取hashCode来判断是否改变过?有没有人做过类似的东西,介绍一下经验呗,3Q3Q3QQQ