关于搜索引擎爬虫,说说个人的一些理解、观点
我已经很久没怎么做搜索相关的事情了,本身也不是在大的搜索公司工作,所以目前也不靠搜索吃饭。这里写点搜索方面的技术分享,希望对有志从事搜索技术研发的读者朋友有帮助。
目前成都创新互联公司已为上1000家的企业提供了网站建设、域名、网页空间、网站托管维护、企业网站设计、东乡族网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
搜索引擎的分类方法很多,一般分为网页搜索和垂直搜索。谷歌、百度是搜索搜索,腾讯视频,QQ音乐是垂直搜索。
咱们这里不想聊怎么分类,而是想聊聊搜索引擎分为几个模块,各个模块的主要难点在哪里,哪些深入研究是有市场竞争力的,哪些工作是容易在各个公司找机会的。
这里我把搜索引擎主要模块划分为爬虫模块,网页处理,索引模块,检索模块,排序模块。考虑到文章篇幅,这篇文章先讲讲爬虫的部分,后续再一次展开其他部分。
爬虫
爬虫要解决几个问题:覆盖率,更新率,时效性。两个问题是有矛盾的,不更新的网页几秒钟去重新抓一次,不仅浪费带宽,而且在对方网站能够容许的抓取频率下,抓别的就受影响了。
几个工程挑战:怎么存储几百甚至千亿规模的网页?存储怎么去做压缩?怎么对这些数据集进行高校分析?比如分析哪些网页需要重新抓取,分析哪些网站死了,分析标题,分析正文,分析链接农场,计算PageRank等。工程挑战很多,这方面可以去阅读GFS, Bigtable, MapReduce 相关的论文。
还有一个工程挑战是,怎么去实时计算一个简化的pagerank ? 因为pagerank 正常是需要离线计算的,一次计算大概需要几天的时间。而判断一个网页是否重要,容不得等上几天的时间,否则搜索引擎的时效性就会比较差。
另外,怎么去挖掘和判断哪些网站是作弊网站,哪些网站的质量很差,哪些网页值得高频抓取,是否有Sitemap,如何利用RSS来抓取,怎么做到爬虫系统比较友好? 这些都是爬虫工程师经常要思考的问题。
笔者之前参与开发过的爬虫系统,每天抓取的规模都在1-10亿之间。呆过的两三家公司,都接到大大小小站长的电话反馈或者投诉。这方面就是百度这样成熟的爬虫系统,也难免会被投诉。不过我做网页爬虫那会,基本还是PC搜索时代,百度的流量很值钱,百度的爬虫出了什么问题,一般的站长也不会为难你。但是如果是不太知名的搜索引擎公司,就比较麻烦了,随时封你IP,或者加你的spider Agent 到Robots 文件的Not Allow 列表里。
爬虫还有几个挑战,比如,网页搜索的时效性怎么搞?新一集电视剧出来了,能不能及时收录?能不能搞一个收录平台,让各家都主动接入?论坛有帖子更新了,能及时收录么?突然一条新闻火了,怎么在几秒钟内收录并且索引完毕?微博起来了,微博的内容怎么抓取?公众号火了,那能不能抓取公众号?
海外的网页怎么抓取?IP不够用怎么办?IP无法访问怎么办?代理是什么?怎么买代理?或者怎么自己挖掘代码IP?
另一个挑战是,一个网站之前没抓过,突然谈了个合作,或者突然允许抓取了,一个站点上亿的网页规模,要几天内全部抓取完毕,怎么办?火力全开,人家anti-spider 的策略很高级,怎么办?好不容易抓回来了,结果抓取的网页是有问题的,比如文字变成了图片,怎么办?有时候文字response code 是200,但是网页却空空如也,怎么办?
新闻标题:关于搜索引擎爬虫,说说个人的一些理解、观点
转载注明:http://hbruida.cn/article/cgsjjg.html