《HTTP权威指南》学习摘要
Web Robot的自活跃(self-animating)用户代理。
Web机器人是在不需要人工干预的情况下,自动进行一系列Web事务处理的软件程序,别名“爬虫“(crawler),”蜘蛛“(spider),”蠕虫“。
- 爬虫及爬行方式,Web法宠是一种机器人,他们会递归地对各种信息性Web站点进行遍历,获取第一个Web页面,然后获取那个页面指向的所有Web页面,然后好似那些页面所指向的所有Web页面,以此类推。递归地追踪这些Web连接的节气人会沿着HTML超链接创建的网络”爬行“,所以将其称为爬虫或蜘蛛。
- 从哪里开始:根集
- 链接的提取和相对链接的标准化
- 避免环路的出现
- 循环(loops)和复制(dups)
- 面包屑留下的痕迹,由于URL的数量巨大,要使用复杂的数据结构以便快速判定那些URL是曾经访问过的。数据结构在访问速度和内存使用方面都应该是非常高效的。下面列出了大规模Web爬虫对其访问过的地址进行管理时使用的一些有用的技术。
- 树和散列表
- 有损的存在位图
- 检查点
- 分类,某些大型Web机器人会使用机器人”集群“,每个独立的计算机都是一个机器人,以汇接方式工作。为每个机器人分配一个特定的URL”片“,有其负责爬行。
- 别名与机器人环路:如果两个URL看起来不一样,但实际指向的是同一资源,就称这两个URL互为”别名“。
- 规范化URL,可以消除URL别名带来的重复空间
- 文件系统连接环路
- 动态虚拟Web空间
- 避免循环和重复
- 规范化URL
- 广度优先的爬行:均匀的分配请求,而不是压在一个单一的服务器上。
- 节流
- 限制URL的大小
- URL/站点黑名单
- 模式检测
- 内容指纹
- 人工监视
- 机器人的HTTP。机器人和所有的其他HTTP客户端程序并没有什么区别,他们都要遵守HTTP规范中的规则。很多机器人都视图只实现请求他们所查找内容所需的最小HTTP集。
- 识别请求首部。在追踪错误爬虫的所有者,以及向服务提供机器人所能处理的内容类型时,请求首部很重要,所以,鼓励机器人实现者们使用如下内容:User-Agent,From,Accept,Refer。
- 虚拟主机。机器人实现者要支持Host首部。
- 条件请求。减少机器人所要获取内容的数量。条件HTTP请求,会对事件戳货实体标签进行比较。
- 对响应的处理。状态码,实体。
- User-Agent导向
- 行为不当的机器人:不守规矩的机器人会造成很多严重问题。这里列出了一些机器人可能会犯的错误。
- 失控机器人,出现死循环,造成服务器大量的负载
- 失效的URL
- 很长的错误URL
- 爱打听的机器人
- 动态网关访问
- 拒绝机器人访问,在Web服务器的文档根目录中提供一个可选的、名为robts.txt的文件。
- 拒绝机器人访问标准。没有正式的标准,都是非正式标准。
- web站点和robots.txt文件
- 获取robots.txt.机器人应该在From首部和User-Agent首部中传输标识信息,以帮助站点管理者对机器人的访问进行跟踪,并在站点管理者要查询,或投诉的机器人时间中提供一些联系信息。
- 响应码,根据不同的响应码,机器人做出不同的行为。
- robots.txt文件的格式。文件采用面向行的语法。有三种形式的行,空行,注释行和规则行。
- User-Agent行,每个机器人记录都以一个或多个下列形式的User-Agent行开始(User-Agent:<robtot-name>或者User-Agent:*)。如果没有访问不受限。
- Disallow和Allow行。紧跟在机器人排斥记录的User-Agent行之后。
- Disallow/Allow前缀匹配。前缀匹配通常都能很好地工作,但有几种情况下它的表达力不够强。如果你希望无论使用什么路径前缀,都不允许爬行一些特别的子目录,那robots.txt是无能为力的。必须将子目录中的每条路劲都分别枚举出来。
- 其他有关robots.txt的知识。机器人不识别的字段多忽略掉,中间不能断行,0.0版的拒绝机器人访问标准不支持Allow行。
- 缓存和robots.txt的过期。机器人会周期性地获取robots.txt文件,并将得到的文件缓存起来。
- 拒绝机器人访问的Perl代码.有几个公共的Perl库可以用来与robots.txt文件进行交互。CPAN公共Perl文档中的WWW::RobotsRules模块就是一个这样的例子。
- HTML的robot-control元标签,eg <META NAME="ROBOTS" CONTENT=directive-list>。机器人的META指令。搜索引擎的META标签
- 机器人的规范
- 搜索引擎
- 大格局。
- 现代搜索引擎的结构。构建一些名为“全文索引”的复杂本地数据库。
- 全文索引。就是一个数据库
- 发布查询请求。用户向Web搜索引擎网关发布一条请求时,会填写一个HTML表单,他的浏览器会用一个HTTP GET或POST请求将这个表单发送给网关。网关程序对搜索请求进行解析,并将Web UI查询转换成搜索全文索引所需要的表达式。
- 对结果进行排序,并提供查询结果。相关性排名(relevancy ranking)
- 欺诈(spoof)。
时间: 2024-11-13 01:16:04