`
wb17534806
  • 浏览: 11628 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

关于网络机器人(蜘蛛程序)的一些分析

阅读更多

什么是网络机器人

网络机器人又称为Spider程序,是一种专业的Bot程序。用于查找大量的Web页面。它从一个简单的Web页面上开始执行,然后通过其超链接在访问其他页面,如此反复理论上可以扫描互联网上的所有页面。

基于因特网的搜索引擎是Spider的最早应用。例如搜索巨头Google公司,就利用网络机器人程序来遍历Web站点,以创建并维护这些大型数据库。

网络机器人还可以通过扫描Web站点的主页来得到这个站点的文件清单和层次机构。还可以扫描出中断的超链接和拼写错误等。

网络机器人的结构分析

    Internet是建立在很多相关协议基础上的,而更复杂的协议又建立在系统层协议之上。Web就是建立在HTTP ( Hypertext Transfer Protocol ) 协议基础上,而HTTP又是建立在TCP/IP ( Transmission Control Protocol / Internet Protocol ) 协议之上,它同时也是一种Socket协议。所以网络机器人本质上是一种基于Socket的网络程序。

如何解析HTML

因为Web中的信息都是建立在HTML协议之上的,所以网络机器人在检索网页时的第一个问题就是如何解析HTML。在解决如何解析之前,先来介绍下HTML的几种数据。

文本:除了脚本和标签之外的所有数据

注释:程序员留下的说明文字,对用户是不可见的

简单标签:由单个表示的HTML标签

 开始标签和结束标签:用来控制所包含的HTML代码

我们在进行解析的时候不用关心所有的标签,只需要对其中几种重要的进行解析即可。

超连接标签

超连接定义了WWW通过Internet链接文档的功能。他们的主要目的是使用户能够任意迁移到新的页面,这正是网络机器人最关心的标签。

 

图像映射标签

图像映射是另一种非常重要的标签。它可以让用户通过点击图片来迁移到新的页面中。

表单标签

表单Web页面中可以输入数据的单元。许多站点让用户填写数据然后通过点击按钮来提交内容,这就是表单的典型应用。

表格标签

表格HTML的构成部分,通常用来格式化存放、显示数据。

Spider程序结构

网络机器人必须从一个网页迁移到另一个网页,所以必须找到该页面上的超连接。程序首先解析网页的HTML代码,查找该页面内的超连接然后通过递归和非递归两种结构来实现Spider程序。

递归结构

递归是在一个方法中调用自己本身的程序设计技术。虽然比较容易实现但耗费内存且不能使用多线程技术,故不适合大型项目。

非递归结构

这种方法使用队列的数据结构,当Spider程序发现超连接后并不调用自己本身而是把超连接加入到等待队列中。当Spider程序扫描完当前页面后会根据制定的策略访问队列中的下一个超连接地址。

虽然这里只描述了一个队列,但在实际编程中用到了四个队列,他们每个队列都保存着同一处理状态的URL

等待队列 在这个队列中,URL等待被Spider程序处理。新发现的URL也被加入到这个队列中

处理队列 Spider程序开始处理时,他们被送到这个队列中

错误队列 如果在解析网页时出错,URL将被送到这里。该队列中的URL不能被移入其他队列中

完成队列 如果解析网页没有出错,URL将被送到这里。该队列中的URL不能被移入其它队列中

如何构造Spider程序

在构造Spider程序之前我们先了解下程序的各个部分是如何共同工作的。以及如何对这个程序进行扩展。

流程图如下所示:

(下载区)

如何提高程序性能

Internet中拥有海量的Web页面,如果开发出高效的Spider程序是非常重要的。下面就来介绍下几种提高性能的技术:

Java的多线程技术

线程是通过程序的一条执行路线。多线程是一个程序同时运行多个任务的能力。它是在一个程序的内部进行分工合作。

优化程序的通常方法是确定瓶颈并改进他。瓶颈是一个程序中最慢的部分,他限制了其他任务的运行。据个例子说明:一个Spider程序需要下载十个页面,要完成这一任务,程序必须向服务器发出请求然后接受这些网页。当程序等待响应的时候其他任务不能执行,这就影响了程序的效率。如果用多线程技术可以让这些网页的等待时间合在一起,不用互相影响,这就可以极大的改进程序性能。

数据库技术

Spider程序访问一个大型Web站点时,必须使用一种有效的方法来存储站点队列。这些队列管理Spider程序必须维护大型网页的列表。如果把他们放在内存中将会是性能下降,所以我们可以把他们放在数据库中减少系统资源的消耗。

 

 

 

  • 大小: 9.7 KB
0
0
分享到:
评论
3 楼 a_10jqka_2010 2010-01-29  
博主,说话很诚恳,这让我敬重。
至于你说得阶段,不知是指什么层次?不知是指什么方面?假如博主,也对技术感兴趣,不妨做个小应用。我先说个引子,还请斧正。像你在JavaEye上博客,就可以放一个小的网络机器人,当发现有人留言时,让你的机器人自动留言,当有人只看博文,还没留言时,也可以让你的机器人,发出友善的留言邀请。这些功能,都可以自己试着实现,那么你说的阶段,不也就在非察觉中到来了吗?
可能我说的这个引子的应用,已在许多平台应经实现,但毕竟自己写出来的东西,用起来感觉还是不一样的。


2 楼 wb17534806 2010-01-25  
a_10jqka_2010 写道
大家的思路怎么都这样,难道就没有想过做点索引追踪的事情?别光站在巨人的肩膀上,同时还要用自己的眼光向前看呀!



说真的,我还没到那个阶段!
1 楼 a_10jqka_2010 2010-01-25  
大家的思路怎么都这样,难道就没有想过做点索引追踪的事情?别光站在巨人的肩膀上,同时还要用自己的眼光向前看呀!

相关推荐

    网络机器人Java编程指南

    该书从Internet编程的基本原理出发,深入浅出、循序渐进地阐述了网络机器人程序Spider、Bot、Aggregator的实现技术,并分析了每种程序的优点及适用场合。本书提供了大量的有效源代码,并对这些代码进行了详细的分析...

    网络机器人Java编程指南.rar

    网络机器人,也称为Web爬虫或网页蜘蛛,是自动化浏览互联网并抓取页面信息的程序。在Java编程中,构建网络机器人是一项常见的任务,尤其对于数据挖掘、搜索引擎优化(SEO)以及网站分析等领域。本指南将深入探讨如何...

    网络爬虫(机器人蜘蛛)完整源代码(C#)

    网络爬虫,也被称为机器人或蜘蛛,是一种自动化程序,用于在网络上遍历网页并抓取信息。在IT领域,网络爬虫被广泛应用于数据挖掘、搜索引擎优化、市场分析等多个场景。本资源提供了一个使用C#语言编写的网络爬虫的...

    网络机器人(报教自摸)的安装程序

    网络机器人,也称为网络爬虫或网页蜘蛛,是用于自动浏览互联网并收集信息的软件工具。在本场景中,"报教自摸"可能是指一个特定的网络机器人应用,其功能可能包括教育领域的数据采集、分析或者教学资源的搜索。安装...

    搜索引擎-网络蜘蛛程序源代码

    再者,网络蜘蛛程序,也称为网络爬虫或网络机器人,是搜索引擎获取网页信息的主要手段。它自动遍历互联网上的网页,抓取内容并存储到索引库中。一个典型的网络蜘蛛程序会包含URL管理器(用于存储待抓取和已抓取的URL...

    网络抓取蜘蛛源程序

    在实际应用中,网络抓取蜘蛛程序通常需要具备以下核心功能: 1. **URL管理**:跟踪已访问和待访问的URL,防止重复抓取和无限循环。 2. **HTTP请求**:发送GET或POST请求到目标URL,获取网页内容。 3. **网页解析**...

    网络机器人java编程指南电子版

    该书从Internet编程的基本原理出发,深入浅出、循序渐进地阐述了网络机器人程序Spider、Bot、Aggregator的实现技术,并分析了每种程序的优点及适用场合。本书提供了大量的有效源代码,并对这些代码进行了详细的分析...

    网络机器人Java编程指南 相对高清

    该书从Internet编程的基本原理出发,深入浅出、循序渐进地阐述了网络机器人程序Spider、Bot、Aggregator的实现技术,并分析了每种程序的优点及适用场合。本书提供了大量的有效源代码,并对这些代码进行了详细的分析...

    C#-Spider网络爬虫网络机器人网络蜘蛛多线程下载HTTP协议[归类].pdf

    网络爬虫,也称为网络机器人或网络蜘蛛,是一种自动化程序,用于在网络上抓取网页内容。它们通过跟踪网页之间的链接来遍历互联网,对于搜索引擎优化、监控竞争对手网站、离线浏览以及网页分析等具有重要意义。在C#中...

    C#网络蜘蛛

    使用C#写的网络蜘蛛,具有很高...由于专门用于检索信息的“机器人”程序就象蜘蛛一样在网络间爬来爬去,反反复复,不知疲倦。所以,搜索引擎的“机器人”程序就被称为“蜘蛛”程序。 关键词:网络蜘蛛 起源 原理 优化

    网络蜘蛛java编程指南电子书

    网络蜘蛛,也称为网络爬虫或网络机器人,是自动遍历互联网并抓取网页信息的程序。这些程序在大数据分析、搜索引擎优化、市场研究等领域发挥着至关重要的作用。 本书可能涵盖了以下几个核心知识点: 1. **基础知识*...

    网络游戏-用于链接精确抓取的网络机器人算法.zip

    首先,我们要理解网络机器人,也称为网络爬虫或蜘蛛,是一种自动浏览互联网并抓取网页信息的程序。在网络游戏中,这种技术可以帮助开发者、分析师或者玩家收集大量游戏相关的数据,如玩家行为、游戏排名、市场动态等...

    网络机器人java编程指南

    网络机器人,也常被称为搜索引擎爬虫或网络蜘蛛,是互联网上的自动程序,它们通过遍历网页来收集信息,为搜索引擎建立索引,或者用于数据挖掘和其他自动化任务。本指南将深入探讨如何使用Java这一强大的编程语言来...

    蜘蛛程序,google抓取,简单

    标题中的“蜘蛛程序,google抓取,简单”指的是网络爬虫技术,它是搜索引擎的重要组成部分,尤其是Google这样的全球知名搜索引擎。网络爬虫,也被称为网页蜘蛛或机器人,是一种自动浏览互联网并抓取网页信息的程序。...

    网络机器人编程java指南

    网络机器人,也称为网络爬虫或网络蜘蛛,是自动化地在网络上抓取信息的程序。本指南针对那些希望掌握如何使用Java来编写高效、智能的网络爬虫的开发者。 在Java编程中,网络机器人编程涉及的核心知识点包括: 1. *...

Global site tag (gtag.js) - Google Analytics