爬虫url去重方法
- 将访问过的url保存到数据库中,然后爬取前查询校验(效率很低)
- 用python中的set去重,比如100000000个URL需要内存100000000*2byte*50/1024/1024/1024=9G(很占内存)
- URL经过MD5之后保存到set,一般一个MD5占128位=16byte*100000000=1G多(scrapy的方法类似,scrapy是用过sha1)
- 用bitmap方法,将访问过的URL通过hash函数映射到某一位
- bloomfilter方法对bitmap进行改进,多重hash函数降低冲突(URL数据很大时候用)
scrapy_redis去重原理是什么样的
- 原本的scrapy是采用队列的方式实现调度,采用指纹加上set的形式实现去重
- Scrapy-Reids 就是将Scrapy原本在内存中处理的调度(就是一个队列Queue)、去重、这两个操作通过Redis来实现,因为每个scrapy都是个进程,不共享内存空间
- Scrapy-Reids中调度优先爬取就是采用redis中的有序集合来实现,去重仍然采用redis集合
- 更多可见:https://cuiqingcai.com/6058.html
假如某一事件有好几家网站进行报道,你是通过是什么来判断这几家网站报导的是同一间事件(也就是所谓的去重)?
- 可以通过文本相似度来做,具体的话可以利用python的levenshtein,Levenshtein.distance(str1,str2)
- 具体可见:https://blog.csdn.net/xiaodongxiexie/article/details/78221271