我是一名学习计算机编程的中学生,我对谷歌和雅虎等搜索引擎有一些疑问。
据我所知,这些搜索引擎包括:
搜索算法&码 (示例:search.py文件,接受来自Web界面的搜索查询并返回搜索结果)
用于查询和显示结果的Web界面
我感到困惑的是Web爬虫部分。
谷歌和雅虎的网页抓取工具是否会立即搜索WWW上存在的每个网页?或者他们: 首先下载WWW上的所有现有网页,将它们保存在庞大的服务器上,然后搜索这些保存的页面?
如果是后者,那么谷歌搜索结果中出现的搜索结果就不会过时,因为我想搜索WWW上的所有网页需要花费大量的时间吗?
PS。还有一个问题:实际上......网络抓取工具究竟是如何检索WWW上存在的所有网页的?例如,它是否搜索了所有可能的网址,例如www.a.com,www.b.com,www.c.com等等? (虽然我知道这不可能是真的)
或者有没有办法访问万维网上的所有现有网页? (抱歉问这么愚蠢的问题..)
谢谢!
答案 0 :(得分:1)
抓取工具搜索页面,下载并保存(部分内容)以供日后处理。所以,是的,你认为搜索引擎返回的结果很容易过时。几年前他们确实已经过时了。只有相对最近谷歌和其他人开始通过与大型内容提供商(如Twitter)合作,直接和频繁地从他们那里获取数据进行更多的实时搜索,但他们在2011年7月再次离线实时搜索。否则他们会注意到通常网页会发生变化,因此他们知道哪些网页比其他网页更容易抓取。他们有特殊的系统,例如Caffeine web indexing system。另请参阅他们的博文Giving you fresher, more recent search results。
所以会发生什么:
发现要抓取的页面只需从页面开始,然后是以下链接到其他页面并跟踪其链接等。除此之外,他们还有其他方式来了解新网站 - 例如,如果人们使用他们的公共DNS服务器,他们将了解他们访问的页面。在G +,Twitter等上分享链接
无法知道所有现有网页的内容。可能有一些没有从任何地方链接,没有人公开分享到它们的链接(并且不使用他们的DNS等),所以他们无法知道这些页面是什么。然后是Deep Web的问题。希望这会有所帮助。
抓取并不是一件容易的事(例如雅虎现在通过微软的Bing外包爬行)。您可以在Page和Brin自己的论文中阅读更多相关内容:The Anatomy of a Large-Scale Hypertextual Web Search Engine
有关存储,架构等的更多详细信息,例如您可以在High Scalability网站上找到:http://highscalability.com/google-architecture