武汉今朝互动信息技术有限公司
联系人:江经理 刘经理
电话:027-84795342
手机:15377660719 18602712650
邮箱:ask1@cn86027.cn
传真:027-84795342
网址:www.cn86027.cn
地址:武汉市汉阳大道139号汉商大厦写字楼1803-1804室
最近在整理一些爬虫的经验,这里列了个粗略的大纲,并列了一些问题,对爬虫有兴趣的朋友可以参考下,对着这些问题,也方便大家梳理爬虫知识,规划爬虫学习路径等。在后续文中,也许我会找一些相关主题,展开写一些文章。
笔者之前写过一点和搜索相关的文章,一篇是适合大众的搜索技巧分享,不吹牛地说,如果那些爬虫模块和问题,你都深入思考过,也自己实现过,找个年薪百万地机会应该是有的,只要找机会有点耐心。搜索引擎其实挺大的,要做好搜索难度更高。搜索行业不仅仅存在技术壁垒,还存在资金壁垒和数据壁垒等。
我已经很久没怎么做搜索相关的事情了,本身也不是在大的搜索公司工作,所以目前也不靠搜索吃饭。这里写点搜索方面的技术分享,希望对有志从事搜索技术研发的读者朋友有帮助。
搜索引擎的分类方法很多,一般分为网页搜索和垂直搜索。谷歌、百度是搜索搜索,腾讯视频,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,但是网页却空空如也,怎么办?