首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 Linux 上构建 Web spider(1)简介

在 Linux 上构建 Web spider(1)简介

spider 是一个为实现特定目的以特定方法在 Internet 上爬行的程序。其目的可能是为了搜集信息也可能是为了理解 Web 站点的结构和有效性。spider 是现代搜索引擎(例如 Google 和 AltaVista)的基础。这些 spider 会自动从 Web 上搜索数据并将数据传递给其他应用程序,这些应用程序会对 Web 站点的内容进行索引,以便获得最好的搜索条件集。
Web spider 作为 agentWeb spider 和 scraper 是软件 Robot 或 agent(Alan Kay 在 20 世纪 80 年代发明了这个词)的另外一种形式。Alan 将 Agent 理解为计算机世界中用户的一个代理 (proxy)。Agent 可以被赋予一个目标并在其域中为实现这个目标而工作。如果受困,它可以从用户那里获取建议并继续完成自己的目标。
现在,agent 已经按照属性(例如自治性、自适应性、通信和协作等)进行了分类。另外一些属性,例如移动性甚至个性化,还在研究之中。本文中的 Web spider 属于名为 Task-Specific Agent 的这一类别。

Web scraper 是一种与 spider 类似的技术,不过它具有更多合法性问题。scraper 是一种 spider,其目标是为了从 Web 上获取特定的内容,例如产品的成本或服务。scraper 的一种用途是为了获得有竞争力的价格,从而确定给定产品的价格,以便能够制定出自己产品的合理价格或相应地进行宣传。scraper 还可以从很多 Web 站点上搜集大量数据并将这些信息提供给用户。
生物学动机         当考察自然界中真正的蜘蛛时,您会从它与环境的交互性(而绝非孤立地)去考察它。蜘蛛会看到并感受到自己身旁的路,并会有目的地从一个地方移动到另外一个地方。Web spider 也会以类似的方式进行操作。Web spider 是一种使用高级语言编写的程序。它通过使用网络协议与环境进行交互,例如对 Web 使用超文本传输协议(HTTP)。如果 Web spider 需要与您进行通信,那么它可以使用简单邮件传输协议(SMTP)来发送 e-mail 消息。
不过 Web spider 并不限定于使用 HTTP 或 SMTP。有些 spider 使用 Web 服务,例如 SOAP 或可扩展标记语言远程过程调用(XML-RPC)协议。其他 spider 会使用网络新闻传输协议(NNTP)对新闻组进行遍历,或者寻找 RSS(Really Simple Syndication)提要中有趣的新条目。尽管自然界中的大部分蜘蛛都只能看到明暗强度和动作的变化,但是 Web spider 却可以使用很多种协议来看和感知。
spider 和 scraper 的应用程序 Web spider 的 “眼和腿”Web spider 查看并在 Internet 上移动的主要手段是 HTTP。HTTP 是一个面向消息的协议,其中客户机连接到一台服务器并产生请求,服务器响应此请求。每个请求和响应都是由一个头和主体构成的,头提供了状态信息以及主体内容的描述。
HTTP 提供了 3 种主要的请求。第一种是 HEAD,它请求的是服务器上某资源的信息。第二种是 GET,它请求的是服务器上的某资源,例如文件或图像。最后一种是 POST,它允许客户机通过 Web 页面与服务器进行交互(通常是通过一个 Web 表单)。

Web spider 和 scraper 是非常有用的应用程序,因此可以找到它们的很多种应用,其中有好有坏。下面让我们来看一下使用这些技术的几个应用程序。
搜索引擎 Web 爬虫  Web spider 可以使 Internet 的搜索变得非常简单而有效。搜索引擎使用了很多 Web spider 在 Internet 上搜索 Web 页面,返回它们的内容,并对其进行索引。在这个过程完成之后,搜索引擎就可以快速搜索本地索引来确定哪些结果最适用于该次搜索。Google 还会使用 PageRank 算法,一个 Web 页面在搜索结果中的排名是基于链接到此 Web 页面的其他页面的多少。这就像是一个投票系统,获得最多票数的页面在整个结果中的排名也最高。
对于 Internet 进行这样的搜索,其代价非常昂贵,Web 内容与索引程序进行通信所需要的带宽以及对结果进行索引所需要的计算成本都很高。为此需要很多存储空间,但是当我们考虑到 Google 可以为 Gmail 用户提供 1000 MB 的存储空间时,显然可以看出存储空间已经不是什么主要问题了。
Web spider 可以使用一组策略来最小化对 Internet 的消耗。Google 要对 80 亿 Web 页面进行索引,这一挑战的难易程度可见一斑。这种行为策略定义了爬虫会将哪些页面带入索引程序、以什么样的频率回到 Web 站点上再次对它进行检查,以及一种礼貌原则。Web 服务器可以使用一个名为 robot.txt 的文件来执行爬虫,它会告诉爬虫不能搜索的内容。
企业 Web 爬虫 与标准的搜索引擎 spider 一样,这种 Web spider 对大众不能使用的内容进行索引。例如,公司通常有一些内部 Web 站点只能由公司的员工使用。这种 spider 被限定于本地环境。由于它的搜索是受限的,因此通常会有更多计算能力可用,进行专门的和更加完整的索引操作也是可能的。Google 则更进一步,为了对个人计算机的内容进行索引,它专门提供了一个桌面搜索引擎。
专用爬虫 爬虫也有一些非传统的用途,例如对内容进行归档或生成统计数据。归档爬虫会简单地对 Web 站点进行遍历,将其网站的本地内容存储到一个长期的存储介质上。这可以用来进行备份,或者在更重要的情况中,用来获取 Internet 内容的快照。统计数据对理解 Internet 的内容或其中的缺陷方面很有用处。爬虫可以用来确定有多少 Web 服务器在运行、有多少给定类型的 Web 服务器在运行、可用 Web 页面的数量,甚至失效链接的个数(这会返回 HTTP 404 错误,表明页面没有找到)。
其他有用的专用爬虫包括 Web 站点检查器。这些爬虫会查找缺少的内容、验证所有的链接,并会确保超文本标记语言(HTML)是有效的。
E-mail 收集爬虫 现在要介绍黑暗面了。不幸的是,一小撮坏家伙却会破坏我们大家使用的整个 Internet。这种爬虫会在 Web 站点上搜索 e-mail 地址,然后生成我们每天不得不处理的大量垃圾邮件。据 Postini 报告,到 2005 年 8 月,Postini 用户的 e-mail 消息中有 70% 都是不想要的垃圾邮件。
E-mail 收集可能是最容易的一种爬行行为,在本文中最后一个爬虫例子中我们会看到这一点。
现在我们已经了解了一些 Web spider 和 scraper 的基本知识,接下来的 4 个例子显示了如何使用流行的脚本语言(例如 Ruby 和 Python)来为 Linux 构建 spider 和 scraper。
返回列表