做过一段时间数据搜索,近期面试,面试官问我做的爬取数据的深度最多有多少,我的理解就是对当前页面的链接往下深入,好像不是他问的答案还问我怎么排重的,就是说重覆的内容不要,我一般都进页面找规律,用正则匹配,没弄过排重,说对内容进行比较,问我怎么比较,我就说做个循环,对取到的内容进行比较,也答的不对还有我一般用什么获取过滤需要的信息,我就是用的正则啊还有遍历文件夹,文件夹里面还有文件夹如何遍历如何提高获取需要信息的效率没答上来还问我每天获取的信息量是多少,这东西能定么,当初做的时候是按公司要求的,没定量还问数据量大如何解决
请教高手,我答的是不是过于浅了,应该怎么弄,这些我做的不是很多,问的我都不好意思了

解决方案 »

  1.   

    他说的深度问题应该是指你所能爬到的网站整个目录以及文件树结构的深度。一个站点的所有网页和目录是一个树结构。每个页面中,肯定还包含大量的内链接,外链接,图片等等,那么这些是否都需要爬过来?排重问题,可以开个内存数据库,边抓边写入,写入的key为md5值,当你每抓一个内容的时,就将当前抓到的内容md5后在内存数据库中搜索是否存在。以这样hash方式去搜索效率并不低。不存在就写入,存在就丢弃。便利文件夹,文件夹中还有文件夹,这就是搜索深度的问题了。这个我不明白有啥可回答的,应该是根据自己的业务需要来决定深入到什么程度。
    人家是专业做搜索的,可能确实比较有经验。所以用词专业术语较多。
      

  2.   

    做爬虫,肯定不能用php这种效率低下的语言来做。python和perl都比php强,当然最好还是用c。
      

  3.   

    恩,谢谢呵,我当时就php熟,所以就用的php做的,也没特别要求语言提高获取需要信息的效率怎么答,我都没个方向