面试题之爬虫

爬虫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

假如某一事件有好几家网站进行报道,你是通过是什么来判断这几家网站报导的是同一间事件(也就是所谓的去重)?

你都爬了哪些网站,说说你觉得印象最深刻的或者你觉得最难爬的一个网站?

封锁ip之后怎么处理

爬取过程中的人机验证

Tesseract的工作原理是什么,你是怎么训练你的Tesseract?

原文地址:https://www.cnblogs.com/ycg-blog/p/12660931.html