在搜索引擎爬虫中讲述个人的理解和观点
来源:可可网络
2021-01-19
我很久没有做很多与搜索相关的工作,本身也没有在大的搜索公司工作,所以现在也不通过搜索吃饭。在此写下搜索方面的技术共享,希望对对开发搜索技术感兴趣的读者朋友有帮助。
搜索引擎的分类方法有很多种,一般分为网络搜索和垂直搜索。谷歌,百度搜索,腾讯视频,QQ音乐是垂直搜索。
我们不想在这里谈论如何分类,但我想谈谈搜索引擎分为几个模块,每个模块的主要困难在哪里,哪些深入研究具有市长/市场竞争力,哪些工作在各公司容易找到机会。
这里将搜索引擎的主要模块分为爬虫模块、网页处理、索引模块、搜索模块和排序模块。考虑到文章篇幅,这篇文章先讲述爬行动物的部分,然后再展开另一部分。
爬行动物
爬行动物需要解决应用范围、更新率、时效性等几个问题。两个问题是矛盾的。如果在几秒钟内重新捕获不更新的主页,不仅会浪费带宽,还会受到根据对方网站允许的捕获频率捕获其他内容的影响。
一些工程挑战:如何存储数百甚至千亿规模的网页?如何压缩存储?如何对这组数据进行高校分析?例如,分析需要重新抓住哪些页面,分析哪些网站死了,分析标题,分析文本,分析链接农场,计算PageRank等。工程面临着阅读GFS、Bigtable、MapReduce相关论文的诸多挑战。
另一个工程挑战是如何实时计算简化的PageRank。Pagerank通常需要离线计算,因此一次计算可能需要几天。判断网页是否重要,等不了几天。否则搜索引擎的时效性就会下降。
另外,还有发掘和判断哪些网站是作弊网站,哪些网站质量不好,哪些页面值得高频,是否有Sitemap,如何利用RSS抓住,如何使爬虫系统变得比较友好的方法。这些都是爬行动物工程师需要经常思考的问题。
笔者参与了以前开发的爬行动物系统,每天捕获的规模在1亿到10亿之间。呆过的两三家公司都收到大大小小站长的电话反馈或投诉。这方面像百度一样成熟的爬行动物系统,只能被起诉。但是当我玩网络爬虫的时候,基本上是PC搜索时代。百度的流量很值钱。百度的爬虫出了什么问题,普通站长也不会为难你。但是如果是不太为人知的搜索引擎公司,那就麻烦了。请随时将IP或spider Agent添加到Robots文件的Not Allow列表中。爬行动物有一些挑战。例如,网络搜索的及时性如何?新电视剧出来了,能及时收录吗?能不能建立一个收录的平台,让每个家庭自愿访问?论坛上的帖子更新了,能及时收录吗?突然新闻着火了,怎么在几秒内收录完索引?微博发生了,微博的内容怎么抓?公共号码着火了。那能弄到公众号吗?
如何浏览海外网站?IP不够怎么办?无法访问IP怎么办?什么是代理?怎么买代理人?或者直接挖代码IP?
另一个挑战是,一个网站以前没有被抓住,突然谈论合作,或者突然允许在一个网站上抓住数亿个网页的规模。几天内就能全部抓住。我该怎么办?火力全开,Anti Spier的战略很高级,怎么办?好不容易抓到了,结果抓到的主页出了问题,比如文章变成了图片,该怎么办?有时文字响应代码为200,但网页为空。我该怎么办?