当前位置: 首页 > news >正文

爬虫url去重策略

爬虫url去重策略

1、将访问过的url保存到数据库中

      最简单的方式,但是用的很少

 

2、将访问过的url保存到内存(set)中,只需要O(1)的代价就可以查询url

      这样内存的占用会越来越大。

      当有1亿条url时,假设每个url占用50个字符(这是保守估计了),

            100000000*2byte*50个字符/1024/1024/1024=9G

       即当url有1亿条的时候,就会占用9G内存

       然而,对于小型爬虫来说,1亿条数据并不算多

 

3、url经过md5等方法哈希后保存到set中

      md5编码可以将字符缩减到固定的长度

      比如md5一般的编码长度时128bit=16byte,即一个url占用16byte,而前面2的方式占用的时50*2=100byte

      相当于进行了成倍的压缩,所以占用的内存也会成倍下降

 

      scrapy采用的就是这个方式

 

4、用bitmap方法,将访问过的url通过hash函数映射到某一位

      但是bitmap的哈希冲突会比较大,所以这种方法用的也是比较少的

 

5、bloomfilter方法对bitmap进行改进,多重hash函数降低冲突

      采用哈希的话,1亿个url对应1 000000000bit=1000000000/8byte=12500000byte=12500000/1024 KB=12207 KB

=12207/1024 MB = 12M

      所以理想情况下1亿个url用哈希的话占用内存12M,当时实际肯定要比这个大,因为会有很多冲突,但是不论怎么大也会比前几种好几个G的要好太多

相关文章:

  • 爬虫中的深搜和广搜
  • Objective-C
  • MyOS(四):让内核突破512字节的限制
  • Go语言实现并发(协程)
  • 汇编语言相关知识
  • 面向对象的意义
  • 文本大数据挖掘项目(Go语言)
  • Python网络编程
  • CUDA与cuDNN
  • AI中的搜索(一)——启发式搜索 ((贪婪)最佳优先搜索 (Greedy)Best-First Search、A* 、迭代加深搜索 和 IDA* )
  • AI中的搜索(二)——对抗搜索(最小最大搜索Minimax、Alpha-Beta剪枝搜索、蒙特卡洛树搜索MCTS)
  • Web1.0 与 Web2.0 时代
  • HTTP服务器开发项目(Python)
  • IO多路复用(Select,Poll,Epoll)
  • Reactjs jsx
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Android系统模拟器绘制实现概述
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • iOS 系统授权开发
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java IO学习笔记一
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Js基础——数据类型之Null和Undefined
  • Js基础知识(四) - js运行原理与机制
  • k8s如何管理Pod
  • Making An Indicator With Pure CSS
  • Netty 4.1 源代码学习:线程模型
  • Python学习笔记 字符串拼接
  • Python语法速览与机器学习开发环境搭建
  • Quartz初级教程
  • spark本地环境的搭建到运行第一个spark程序
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • vue学习系列(二)vue-cli
  • 笨办法学C 练习34:动态数组
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 回顾2016
  • 讲清楚之javascript作用域
  • 入门级的git使用指北
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 原生 js 实现移动端 Touch 滑动反弹
  • 责任链模式的两种实现
  • 【干货分享】dos命令大全
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​secrets --- 生成管理密码的安全随机数​
  • ​ubuntu下安装kvm虚拟机
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617