Heritrix源码分析(十) Heritrix中的Http Status Code(Http状态码)(转)
本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/649737
本博客已迁移到本人独立博客: http://www.yun5u.com/
欢迎加入Heritrix群(QQ):109148319,10447185 , Lucene/Solr群(QQ) : 118972724
以前在做Web开发的时候就接触过一些HttpStatus Code,比如404,500.后来接触Heritrix之后才知道HttpStatus Code竟然有如此之多。不一样的HttpStatus Code就代表不一样的Http状态,简单的如成功、失败、重定向等。Heritrix自己也根据自己的需求增加了一些,同时由于Heritrix通过HttpClient去获取网络资源,其中一部分HttpStatus Code也来源于HttpClient,接下来我会逐个介绍。
有兴趣的朋友可以看下源代码中各个HttpStatus Code的不同应用场合和作用,可以说贯穿了真个抓取,设计得相当灵活。如只想大致了解下,可以参考org.archive.crawler.datamodel.FetchStatusCodes,里面有不同的HttpStatus Code以及英文注释。
| 序号 | Heritrix属性 | Heritrix属性值 | 说明 |
| 1 | S_UNATTEMPTED | 0 | 初始状态 |
| 2 | S_DNS_SUCCESS | 1 | DNS获取成功 |
| 3 | S_DOMAIN_UNRESOLVABLE | -1 | DNS获取失败,该状态的URL会继续被抓取 |
| 4 | S_CONNECT_FAILED | -2 | 连接HTTP失败,该状态的URL会继续被抓取 |
| 5 | S_CONNECT_LOST | -3 | 连接HTTP掉线,该状态的URL会继续被抓取 |
| 6 | S_TIMEOUT | -4 | 连接HTTP超时,该状态的URL会继续被抓取 |
| 6 | S_RUNTIME_EXCEPTION | -5 | 运行意外,该状态的URL会记录在runtime-errors.log日志中 |
| 7 | S_DOMAIN_PREREQUISITE_FAILURE | -6 | 运行先决条件(也就是DNS)失败 |
| 8 | S_UNFETCHABLE_URI | -7 | 非法的URL,URL不符合规则。Heritrix也自定义了规则去限制URL |
| 9 | S_TOO_MANY_RETRIES | -8 | 多次尝试都是失败,Heritrix可以让未成功的URL尝试多次 |
| 10 | S_DEFERRED | -50 | 该URL准备先获取先决条件URL(也就是DNS) |
| 11 | S_UNQUEUEABLE | -60 | 没有通过调度器(Frontier) |
| 12 | S_ROBOTS_PREREQUISITE_FAILURE | -61 | 获取DNS失败,被爬虫协议(robots.txt)拒绝 |
| 13 | S_OTHER_PREREQUISITE_FAILURE | -62 | 获取DNS失败的其他原因 |
| 14 | S_PREREQUISITE_UNSCHEDULABLE_FAILURE | -63 | 获取DNS失败,该Host不在范围中(也就是用户定义的Url抓取范围) |
| 15 | S_GETBYNAME_SUCCESS | 1001 | 通过URL获取IP成功 |
| 16 | S_SERIOUS_ERROR | -3000 | 严重错误,比如内存溢出 |
| 17 | S_DEEMED_CHAFF | -4000 | 完全无用,可忽视的URL |
| 18 | S_TOO_MANY_EMBED_HOPS | -4001 | 超出层数限制,也就是抓取深度,这里是抽取出来的连接 |
| 19 | S_TOO_MANY_EMBED_HOPS | -4002 | 超出层数限制,也就是抓取深度,这里是嵌套的连接 |
| 20 | S_OUT_OF_SCOPE | -5000 | URL超出范围 |
| 21 | S_BLOCKED_BY_USER | -5001 | 被用户拒绝,heritrix可以配置很多规则(Rule)去过滤一部分Url |
| 22 | S_BLOCKED_BY_CUSTOM_PROCESSOR | -5002 | 在预处理模块被阻止 |
| 23 | S_BLOCKED_BY_QUOTA | -5003 | 超过抓取成本,Heritrix可以配置抓取一个URL的成本 |
| 24 | S_BLOCKED_BY_RUNTIME_LIMIT | -5004 | 超过抓取时间,Heritrix可以配置抓取一个URL的用时 |
| 25 | S_DELETED_BY_USER | -6000 | 被用户删除 |
| 26 | S_PROCESSING_THREAD_KILLED | 7000 | heritrix可以多线程抓取,用户可以删除线程,当前状态就表示运行该URL的线程被删除 |
| 27 | S_ROBOTS_PRECLUDED | -9998 | 被爬虫协议(robots.txt)拒绝 |
| 28 | |||
| 29 |
Heritrix源码分析(十) Heritrix中的Http Status Code(Http状态码)(转)的更多相关文章
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
- netty源码分析(十八)Netty底层架构系统总结与应用实践
一个EventLoopGroup当中会包含一个或多个EventLoop. 一个EventLoop在它的整个生命周期当中都只会与唯一一个Thread进行绑定. 所有由EventLoop所处理的各种I/O ...
- angular源码分析:angular中脏活累活的承担者之$interpolate
一.首先抛出两个问题 问题一:在angular中我们绑定数据最基本的方式是用两个大括号将$scope的变量包裹起来,那么如果想将大括号换成其他什么符号,比如换成[{与}],可不可以呢,如果可以在哪里配 ...
- angular源码分析:angular中入境检察官$sce
一.ng-bing-html指令问题 需求:我需要将一个变量$scope.x = '<a href="http://www.cnblogs.com/web2-developer/&qu ...
- angular源码分析:angular中各种常用函数,比较省代码的各种小技巧
angular的工具函数 在angular的API文档中,在最前面就是讲的就是angular的工具函数,下面列出来 angular.bind //用户将函数和对象绑定在一起,返回一个新的函数 angu ...
- angular源码分析:angular中的依赖注入式如何实现的
一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...
- php中各种http报错的状态码分析
HTTP会经常遇见错误,本文主要和大家分享php中各种http报错的状态码,希望能帮助到大家. HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无 ...
- Nginx code 常用状态码学习小结
最近了解下Nginx的Code状态码,在此简单总结下.一个http请求处理流程: 一个普通的http请求处理流程,如上图所示:A -> client端发起请求给nginxB -> ngin ...
- 解决爬虫浏览器中General显示 Status Code:304 NOT MODIFIED,而在requests请求时出现403被拦截的情况。
在此,非常感谢 “完美风暴4” 的无私共享经验的精神 在Python爬虫爬取网站时,莫名遇到 浏览器中General显示 Status Code: 304 NOT MODIFIED 而在req ...
随机推荐
- 利用PHP SOAP实现WEB SERVICE
php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soa ...
- JMeter使用指南--转
JMeter使用指南 本文重点介绍JMeter工具在测试中地位以及其中一些难以理解或者手册中含糊不清的感念,读者可以通过本文了解这些概念,然后再根据自己的需要查阅JMeter中各个组件的具体用法来完成 ...
- 8天学通MongoDB——第一天 基础入门
原文地址:http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html 关于mongodb的好处,优点之类的这里就不说了,唯 ...
- lintcode:寻找旋转排序数组中的最小值 II
寻找旋转排序数组中的最小值 II 假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2). 你需要找到其中最小的元素. 数组中可能存在重复的元 ...
- SpringMVC深入探究(1)——DispatcherServlet与初始化主线
在上一篇文章中,我们给出了构成SpringMVC应用程序的三要素以及三要素的设计过程.让我们来归纳一下整个设计过程中的一些要点: SpringMVC将Http处理流程抽象为一个又一个处理单元 Spri ...
- 怎样查看Tomcat动态控制台信息
在web项目调试期间,时常需要查看输出的调试信息,例如当hibernate设置为显示SQL语句时,每次运行的SQL语句会输出到终端,另外有时需要在代码中插入一些输出语句,以方便掌握运行情况,但当插入S ...
- Golang哲学思想
Golang是一门新语言,经过几年发展,慢慢地也已经被许多大公司认可.最大的特点是速度快,并发性好,与网络的功能结合好,是一门服务端语言,号称“网络时代的新语言”:另外还是一个编译型的Python.不 ...
- Struts2笔记——Action校验器
在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验. 对于输入校验struts2提供了两种实现方法: 1.采用手工编写代码实现. 2.基于XML配置 ...
- TCP建立连接的三次握手过程
TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A运行的是TCP客户程序,B运行的是TCP服务器程序.最初两端的TCP进 ...
- 《mysql悲观锁总结和实践》-悲观锁
最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下: 悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持 ...