本博客属原创文章,欢迎转载!转载请务必注明出处: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状态码)(转)的更多相关文章

  1. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  2. netty源码分析(十八)Netty底层架构系统总结与应用实践

    一个EventLoopGroup当中会包含一个或多个EventLoop. 一个EventLoop在它的整个生命周期当中都只会与唯一一个Thread进行绑定. 所有由EventLoop所处理的各种I/O ...

  3. angular源码分析:angular中脏活累活的承担者之$interpolate

    一.首先抛出两个问题 问题一:在angular中我们绑定数据最基本的方式是用两个大括号将$scope的变量包裹起来,那么如果想将大括号换成其他什么符号,比如换成[{与}],可不可以呢,如果可以在哪里配 ...

  4. angular源码分析:angular中入境检察官$sce

    一.ng-bing-html指令问题 需求:我需要将一个变量$scope.x = '<a href="http://www.cnblogs.com/web2-developer/&qu ...

  5. angular源码分析:angular中各种常用函数,比较省代码的各种小技巧

    angular的工具函数 在angular的API文档中,在最前面就是讲的就是angular的工具函数,下面列出来 angular.bind //用户将函数和对象绑定在一起,返回一个新的函数 angu ...

  6. angular源码分析:angular中的依赖注入式如何实现的

    一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...

  7. php中各种http报错的状态码分析

    HTTP会经常遇见错误,本文主要和大家分享php中各种http报错的状态码,希望能帮助到大家. HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无 ...

  8. Nginx code 常用状态码学习小结

    最近了解下Nginx的Code状态码,在此简单总结下.一个http请求处理流程: 一个普通的http请求处理流程,如上图所示:A -> client端发起请求给nginxB -> ngin ...

  9. 解决爬虫浏览器中General显示 Status Code:304 NOT MODIFIED,而在requests请求时出现403被拦截的情况。

    在此,非常感谢 “完美风暴4” 的无私共享经验的精神    在Python爬虫爬取网站时,莫名遇到 浏览器中General显示  Status Code: 304 NOT MODIFIED 而在req ...

随机推荐

  1. html + css + js注释规范

    添加注释到代码中,是一个很好的习惯,而且极大的提高了代码的可读性 1.HTML <!--commentContent--> 2.CSS //commentContent /*comment ...

  2. Java-数据结构与算法-二分查找法

    1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...

  3. CodeBlocks ubuntu常见问题及小技巧

    1.安装完后没有快捷键的设置: http://blog.csdn.net/sjwbcb/article/details/4797785 感谢这哥,原来是包没有装全. codeblocks用ubuntu ...

  4. Linux内核通杀提权漏洞CVE-2016-5195 - 内核升级方法

    如题,对于脏牛(Dirty COW)漏洞的修复方式已经在上篇文章中有介绍过如何验证,这里对如何升级内核给出修复建议. (注意:为避免不必要的生产风险的发生,请审核自己的实际环境而决定采用什么方法进行升 ...

  5. 爬虫Larbin解析(二)——sequencer()

    分析的函数: void sequencer() //位置:larbin-2.6.3/src/fetch/sequencer.ccvoid sequencer() { bool testPriority ...

  6. C# 公关类(全)

    http://tool.sufeinet.com/CodePreview/CodeView.aspx?action=view&file=FTP/FTPClient.cs

  7. Uubuntu 14.04 LTS反编译apk

    使用apktool反编译apk 1.安装apktool apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境的支持(在此不再赘述Java的安装与配置,详见< ...

  8. Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  9. Xcode使用版本

    Xcode6中创建分类.协议等文件的方法 Xcode 5.1.1 与 Xcode 6.0.1 的共存之路 http://jingyan.baidu.com/article/1612d500457df1 ...

  10. [HDOJ5521]Meeting(最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 给n个点,m个块.块内点到点之间话费的时间ti.两个人分别从点1和点n出发,问两人是否可以相遇, ...