Web 机器人

web机器人是能够在无需人类干预的情况下自动进行一系列Web事物处理的软件,很多机器人能够从额web站点逛到另一个web站点,获取内容,跟踪超链,并对他们找到的数据进行处理,根据这些机器人自动探查web站点的方式,我们将他们成为“爬虫”。

常见的机器人实例:

股票图形机器人每隔几分钟就会想股票市场的服务器发送http get,用于得到数据来构建股票价格趋势图。

比较购物机器人会从在线商店的目录中手机web页面,构建商品及其价格的数据库

爬虫以及爬行方式:

web爬虫是一种机器人,他们会递归地对各种信息性web站点进行遍历,获取第一个web页面,然后获取那个页面所指向的所有web页面,然后是那些页面指向的所有web页面,依次类推,递归地追踪web链接的机器人会沿着HTML超链接创建的网络“爬行”,所以将其成为爬虫。

因特网搜索引擎使用爬虫在web上游荡,并把他们碰到的文档全部拉回来,然后对这些文档进行处理,形成一个可搜索的数据库,以便用户查找包含了特定单词的文档。下面我们来看看爬虫是怎么样工作的。

从哪里开始:根集

根集是蜘蛛的一个起始点,,爬虫开始访问的url初始集合被成为根集,挑选根集的时候,应该从足够多不同的站点选择URL,这样,爬遍所有链接才能最终达到大部分我们所感星期的web页面。

链接的提取以及相对链接的标准化

爬虫在web上移动时,会不停的对HTML 页面进行解析,他要对所解析的每个页面上的url链接进行分析,并将这些链接添加到需要爬行的页面列表中去,随着爬虫的前进,当其发现需要探查的新连接时,这个列表常常会迅速扩张。爬虫要通过简单的html解析,将这些链接提取出来,并将相对的URL转换成觉对形式。

机器人环路:

环路对于机器人的害处;

1 他们会使爬虫陷入可能将其困住的循环之中,使爬虫将时间都耗费在不停的获取相同的页面上。

2爬虫不断的获取相同的页面时,另一端的web服务器也在遭受着打击。

3 即使循环自身不是什么问题,爬虫也是在获取大量重复的页面,爬虫应用程序会被重复的内容所充斥,这样应用程序就会变得毫无用处。

面包屑留下的痕迹

记录曾经到过那些地方并不是一件容易的事情,如果爬行世界范围的一大块web内容,就要做好访问数十亿url准备,记录下哪些URL已经访问过了是件很具有挑战的事情,机器人至少要用到搜索树和散列表,以快速判定某个URL是否被访问过。大量的url会占用大量的存储空间,这里列出一些大规模web爬虫对其访问过的地址进行管理时使用的一些有用的技术:

1树和散列表:用来记录已访问的url,

2有损的存在位图:为了减少空间,一些大型爬虫会使用有损数据结构,比如存在位数组,用一个散列函数将每个url都转换成一个定长的数字,这个数字在数组中有个相关的“存在位”。

3检查点 一定要将已访问url列表保存到硬盘上,以防止机器人崩溃

4 分类 为每个机器人分配一个特定的url片,尤其负责爬行。

别名与机器人环路:

由于url“别名”的存在,即使使用了正确的数据结构,有时很难分辨出以前是否访问过某个页面,如果两个url 看起来不一样,但实际指向的是同一资源,就成这两个url为“别名”

规范化URL 

大多数web机器人都视图通过将url规范化为标准格式来消除上面的那些显而易见的别名,规范化过程如下:

1 如果没有指定的端口,就将主机名中添加80。

2 将所有转义字符%xx都转换成等价字符。

3 删除#标签

文件系统链接环路

文件系统中的符号链接会造成特定的潜在环路,因为他们会在目录层次深度有限的情况下,造成深度无限的假象,符号链接环路通常是由服务器管理者无心的错误造成的。

动态虚拟web空间

恶意的网管可能会有意的创建一些复杂的爬虫循环来陷害那些无辜的,毫无戒备的机器人,

避免循环和重复

没有什么简单明了的方式可以避免所有的环路,实际上,经过良好设计的机器人中要包含一组试探方式,以避免环路的出现。

总的来说,爬虫的自动化程度越高,越可能陷入麻烦之中,可以让机器人有更好表现的一些方式:

1 规范化url   将url转换为标准形式以避免语法上的别名。

2  广度优先遍历  

3 节流  限制一段时间内机器人可以从一个web站点获取页面数量

4 限制url的大小 机器人会拒绝爬行超出特定长度的URL。

5 url 站点黑名单

6 模式检测 

7 内容指纹 一些更负责的web爬虫会使用指纹这种更直接的方式来检测重复,

8 人工监视 

  

时间: 2024-10-03 05:42:23

Web 机器人的相关文章

【HTTP】WEB机器人

<HTTP权威指南>学习摘要 Web Robot的自活跃(self-animating)用户代理. Web机器人是在不需要人工干预的情况下,自动进行一系列Web事务处理的软件程序,别名“爬虫“(crawler),”蜘蛛“(spider),”蠕虫“. 爬虫及爬行方式,Web法宠是一种机器人,他们会递归地对各种信息性Web站点进行遍历,获取第一个Web页面,然后获取那个页面指向的所有Web页面,然后好似那些页面所指向的所有Web页面,以此类推.递归地追踪这些Web连接的节气人会沿着HTML超链接创

Web 结构组件

代理:位于客户端和服务器之间的 HTTP 中间实体 缓存:HTTP 的仓库,使常用页面的副本可以保存在离客户端更近的地方 网关:连接其它应用程序的特殊 Web 服务器 隧道:对 HTTP 通信报文进行盲转发的特殊代理 Agent 代理:发起自动 HTTP 请求的半智能 Web 客户端,如 Web 机器人.网络蜘蛛

atitit.http原理与概论attilax总结

1. 图解HTTP 作者:[日]上野宣 著1 2. HTTP权威指南(国内首本HTTP及其相关核心Web技术权威著作)1 3. TCP/IP详解(中文版) (共3册), 这套丛书还有 <TCP/IP详解 卷2:实现>,<TCP/IP详解 卷3:TCP事务协议.HTTP.NNTP和UNIX域协议>2 4. TCP/IP详解 卷2:实现3 5. <TCP_IP详解 卷3:TCP事务协议.HTTP.NNTP和UNIX域协议——计算机科学丛书>([美]史蒂文斯(Stevens,

HTTP权威指南读书笔记

1.8 web组件结构: 代理 :位于客户端和服务器之间的HTTP中间实体 缓存 :HTTP的仓库,使常用页面的副本可以保存在离客户端很近的地方 网关 :链接其他应用程序的特殊web服务器(如邮件服务) 隧道 :对HTTP通信报文进行盲转的特殊代理 Agent代理:发起自动HTTP请求的半智能web客户端 1.8.1 代理: 原理:代理存在与客户端与服务器之间,接受客户端的HTTP请求并且转发给服务器 1.8.2 缓存: 原理:web缓存是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文

HTTP结构讲解——《HTTP权威指南》系列

HTTP结构 第二部分的5章主要介绍了HTTP服务器,代理,缓存,网关和机器人应用程序,这些都是Web系统架构的构造模块. Web服务器 第五章 Web服务器会对HTTP请求进行处理并提供响应.术语"web服务器"可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备或计算机. 实际的Web服务器会做些什么   建立连接----接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭 接收请求----从网络中读取一条HTTP请求报文 处理请求----对请求报文

33款可用来抓数据的开源爬虫软件工具

要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家. 爬虫,即网络爬虫,是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化. 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件.聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主

《数据挖掘导论》 - 读书笔记(5) - 分类:基本概念、决策树与模型评估 [2016-8-21]

第4章 分类:基本概念.决策树与模型评估 分类任务就是确定对象属于哪个预定义的目标类.分类问题是一个普遍存在的问题,有许多不同的应用.例如:根据电子邮件的标题和内容检查出垃圾邮件,根据核磁共振扫描的结果区分肿瘤是恶性的还是良性的,根据星系的形状对它们进行分析. 本章介绍分类的基本概念,讨论诸如模型的过分拟合等关键问题,并提供评估和比较分类技术性能的方法.尽管本章主要关注一种称作决策树归纳的技术,但是本章讨论的大部分内容也适用于其他的分类技术. 4.1 预备知识 分类任务的输入数据是记录的集合.每

开源爬虫汇总表,83款 网络爬虫开源软件

世界上已经成型的爬虫软件多达上百种,本文对较为知名及常见的开源爬虫软件进行梳理,按开发语言进行汇总,如下表所示.虽然搜索引擎也有爬虫,但本次我汇总的只是爬虫软件,而非大型.复杂的搜索引擎,因为很多兄弟只是想爬取数据,而非运营一个搜索引擎. 开源爬虫汇总表 开发语言 软件名称 软件介绍 许可证 Java Arachnid 微型爬虫框架,含有一个小型HTML解析器 GPL crawlzilla 安装简易,拥有中文分词功能 Apache2 Ex-Crawler 由守护进程执行,使用数据库存储网页信息

读书《HTTP权威指南》

第1 章 HTTP 概述 1.1 HTTP--因特网的多媒体信使 1.2 Web 客户端和服务器 1.3 资源 1.3.1 媒体类型 MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间 由一条斜杠来分隔. ? HTML 格式的文本文档由text/html 类型来标记. ? 普通的ASCII 文本文档由text/plain 类型来标记. ? JPEG 版本的图片为image/jpeg 类型. ? GIF 格式的图片为image/gif 类型. ? Apple 的Quick