经过整个春节的放肆,终于回归了,说实话,春节真心比上班累。

9.1 爬虫及爬行方式

  (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历。

  (2) 爬行方式:Web机器人会获取Web页面,然后获取这个页面指向的所有Web页面,再指向这个站点所指向的页面,依次类推。

  (3) 从哪儿开始:根集

  爬虫在开始访问的URL初始集合被称为根集。通常一个好的根集会包括一些大的流行Web站点、一个新创建的列表和一个不经常被链接的的无页面列表.

  (4) 链接的提取:爬虫在在Web上移动时,会不断对HTML进行解析,它会对每个链接进行解析,并将这些链接添加到需要爬行的页面列表上去,最终爬虫会将这些相对URL转换为绝对URL。

  (5) 避免环路:爬虫会根据链接在Web页面间不停跳转,在跳转期间要防止其 访问A页面-》访问B页面-》访问C-页面-》访问A页面  的循环状态(文件系统同样会存在该情况)。

    后果:1.消耗网络带宽,导致无法获取其他页面。

         2.爬虫环路不断访问页面的过程中,另一端的服务器也在遭受打击,可能会造成击垮站点,阻止所有正常用户访问站点。

  (6) 爬虫对对访问地址的管理技术

    1.树和散列表:通过搜索树或散列表来记录已访问的URL,这样加速了访问速度。

    2.有损的存在位图:将URL转换为一定长度的数组,这个数组中有个相关的“存在位”,在爬过URL时会将该“存在位”置位,爬虫在再次访问该URL时会发现已访问。

    3.检查点:将已访问的URL列表保存到硬盘上,以防止机器人崩溃。

    4.分类:为每个机器人分配一个特定的URL“片”,由其负责爬行。

  (7) 别名与机器人回路:由于URL的默认端口是否隐藏即会造成回路存在。

  (8) 避免循环和重复

    1.规范URL

    2.广度优先的爬行

    3.节流(限制机器人从一个网站获取的页面数量)

    4.限制URL大小(环路会使URL长度增加,限制URL长度可有效防止无限循环)

    5.URL/站点黑名单

    6.模式检测(通过重复组件的环路模式进行检测,可拒绝继续环路访问)

    7.内容指纹(通过对URL站点内容相同的校验,得出是否访问过,并是否继续访问)

    8.人工监视

9.2 机器人的HTTP

  机器人同样遵循手HTTP规范的规则,

  1.识别请求首部

  建议机器人实现者发送基本首部信息:

  • User-Agent:机器人名称
  • From:机器人的用户/管理者的邮箱
  • Accept:告知服务器可以发送哪些媒体类型
  • Referer:提供包含当前请求URL的文档URL

  2. 虚拟主机  

  在默认情况下,大多数服务器都会默认的配置一个特定的站点,因此,不包含host的爬虫访问提供两个站点的服务器发出请求时,会造成返回值失误。

  3.条件请求

  机器人只有在内容发生变化时才重新获取内容是有意义的,因此,有些机器人实现了条件HTTP请求,他们会对时间戳或者实体签进行比较,之后确认是否继续获取。

  4.对响应的处理

    1.状态码

    2.实体

  5.User-Agent导向

   很多站点会为不同的用户代理进行内容优化,并尝试对浏览器类型进行检测,以确保支持各种特性,当机器人进行访问时,站点会为机器人提供出错页面而不是请求页面。

   站点管理者应该设计一个处理机器人请求的策略。

9.3 行为不当的机器人

  • 失效机器人(造成服务器过载,拒绝为其他人服务)
  • 失效的URL(如果一个网页经过大量修改,而机器人依然访问之前记录的该网页内容,机器人会对大量不存在的URL发起请求)
  • 很长的错误URL(URL过长会降低Web服务器性能)
  • 爱打听的机器人(请求私有文档,敏感数据)
  • 动态网关访问

9.4 拒绝机器人访问

  服务器文档中提供一份Robots.txt,其中标明机器人可以访问服务器的哪些部分,机器人请求时从Web站点首先请求该文档,然后继续访问数据。

  Robots.txt具有特有格式及参数,学习不认真,略了。

HTTP权威协议笔记-9.Web机器人的更多相关文章

  1. HTTP权威协议笔记-5.Web服务器

    5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...

  2. HTTP权威协议笔记-7.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  3. HTTP权威协议笔记-6.代理

    6.1 Web的中间实体 Http的代理服务器即是客户端的服务器又是服务器的客户端. 它介于服务器与客户端之间,当客户端发送请求报文经过它时,它会像服务器一样正确的处理请求和返回响应,同时,代理服务器 ...

  4. HTTP权威协议笔记-10.HTTP-NG

    1.HTTP发展中存在的问题 复杂性   其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能      高延时.低吞吐 ...

  5. HTTP权威协议笔记-8.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  6. HTTP权威协议笔记-7.缓存

    7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. ...

  7. HTTP权威协议笔记-4.连接管理

    4.1 TCP连接 TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下: 浏览器解析主机名. 查询这个主机名的IP地址(DNS) 获得端口号. 浏览器对服务器该端口号发起连接. ...

  8. HTTP权威协议笔记-3.Http报文

    3.1 报文流 http使用流入和流出来描述事物处理方向,报文包含:起始行.首部和主体. 3.2 起始行 起始行包含:请求行和回应行. 3.2.1请求行 请求行包含:方法.请求URL(描述了对哪个资源 ...

  9. 【读书笔记】《HTTP权威指南》:Web Robots

    一.概述 Web机器人(Web Robots)是一种Web客户端的软件程序,它自动发起一系列的Web事务,从而在没有人工参与的状态下完成各种Web数据的搜集和处理. 典型的Web机器人有: 股票绘图机 ...

随机推荐

  1. Tcl之looping

    1 While loop while test body The while command evaluates test as an expression. If test is true, the ...

  2. eclipse中代码整体左右移动的方法

    1.向左:将要移动的代码选中,然后按TAB键2.向右:将要移动的代码选中,然后按shift+tab键 kettas:  2009-8-21

  3. wing ide破解

    LicenseID='CN123-12345-12345-67891' # RequestCode='RL634-8363J-X7E8K-95XD3' RequestCode = 'RW61C-NN6 ...

  4. poj2385 - Apple Catching【动态规划】

    Description It is a little known fact that cows love apples. Farmer John has two apple trees (which ...

  5. 30.IK中文分词器的安装和简单使用

    在之前我们学的都是英文,用的也是英文的standard分词器.从这一节开始,学习中文分词器.中国人基本上都是中文应用,很少是英文的,而standard分词器是没有办法对中文进行合理分词的,只是将每个中 ...

  6. 19.理解slop

    主要知识点: slop的含义(内在原理) slop的用法     一.slop的含义是什么?     query string(搜索文本)中的几个term,要经过几次移动才能与一个document匹配 ...

  7. mysql参数设置与查看

    查看默认的参数设置(包含读取到的参数文件中的设置) mysqld --verbose --help   查看默认的参数设置(不包含参数文件中的设置) mysqld --no-defaults --ve ...

  8. 【ACM】hdu_2004_成绩转换_201307261516

    成绩转换Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  9. 学习webpack过程并上传到github

    使用工具:sublimeText+node+git 1,一个包的文件结构,生成初始文件 在node 命令行窗口中创建demo_a文件夹 使用命令 npm init 初始化包,生成package.jso ...

  10. 通过JS的事件处理取得radio的值

    转自:http://blog.sina.com.cn/s/blog_50a1e17401017pik.html 提前知识准备: 在一个HTML文档中,每个元素都可以设置ID和NAME属性. 其中ID属 ...