1
fishsjoy 2013-02-27 13:13:52 +08:00 1
bloom filter
|
2
xingzhi 2013-02-27 13:15:37 +08:00 1
hashMap是可以,但相对而言耗内存。
如ls所说,用布隆过滤器较好。 吴军的书 《数学之美》中有详细的介绍。 |
3
twm 2013-02-27 13:15:45 +08:00 1
做一个redis集群,或者memcache集群,bdb也行,抓取过的就扔进去,每次要抓取的时候检查一下。
|
4
xingzhi 2013-02-27 13:17:38 +08:00
很久前收藏的一篇文章, 你可以看看:
http://www.xiuwz.com/site/tech-bloom-filter/ |
6
forest520 2013-02-27 13:47:37 +08:00
@fishsjoy
@xingzhi @twm 很多情况下,一个相同的网页可以有很多不同的URL地址,譬如加上一些识别来源的动态参数等,这种情况有什么办法识别是重复的URL?比如: item.taobao.com/item.htm?spm=1020.3.9.79.4L0esQ&id=15480553483&from= item.taobao.com/item.htm?id=15480553483 其实是一个网页。 |
7
xingzhi 2013-02-27 13:57:22 +08:00
@forest520
我觉得这个就没有万能的解决方案了,得视网站而定。 如你举的例子,可以先找出taobao究竟是以什么参数来决定这个页面的。 这里是id, 那就在获取url后,抽取出id来进行二次判断。 |
8
laskuma OP @xingzhi 还想再问一个问题 如何获取tinyurl的真实url呢? 我在java下用getresponcecode拿到的是200不是301= =
|
9
crazybubble 2013-03-01 16:44:31 +08:00
@laskuma python里的方法是,urllib2.urlopen("http://bit.ly/XKqphv").geturl()
|
10
crazybubble 2013-03-01 16:58:00 +08:00
@laskuma java里你可以用HttpURLConnection建立链接,然后getURL()
|
11
laskuma OP @crazybubble 机制不同 获取的还是tinyurl
|
12
binux 2013-03-01 21:17:29 +08:00
真没必要用什么bloom filter,就算你爬一千万个页面,那已经很厉害了,哈希一下全放数据库里,MYSQL什么就行,内存数据库都不需要,每次查一下,没任何问题。
|
14
crazybubble 2013-03-01 21:33:19 +08:00 1
@laskuma ...这就奇怪了,我试了下tinyurl,能得到原地址
|
15
clowwindy 2013-03-01 21:34:37 +08:00 1
hash 一下存 redis
|
16
laskuma OP @crazybubble http://tinyurl.com/at3p3en 能帮忙测试下吗?我这个网址不行
|
17
laskuma OP @crazybubble 解决了。。我一connect()就立刻call 的get url。所以给出的还是原来的url 谢谢了!
|