Heritrix1.14源码分析(10) Heritrix中的Http Status Code(Http状态码)

来源:互联网 发布:js怎么取子节点 编辑:程序博客网 时间:2024/05/21 09:54

 以前在做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属性值说明1S_UNATTEMPTED0初始状态2S_DNS_SUCCESS1DNS获取成功3S_DOMAIN_UNRESOLVABLE-1DNS获取失败,该状态的URL会继续被抓取4S_CONNECT_FAILED-2连接HTTP失败,该状态的URL会继续被抓取5S_CONNECT_LOST-3连接HTTP掉线,该状态的URL会继续被抓取6S_TIMEOUT-4连接HTTP超时,该状态的URL会继续被抓取6S_RUNTIME_EXCEPTION-5运行意外,该状态的URL会记录在runtime-errors.log日志中7S_DOMAIN_PREREQUISITE_FAILURE-6运行先决条件(也就是DNS)失败8S_UNFETCHABLE_URI-7非法的URL,URL不符合规则。Heritrix也自定义了规则去限制URL9S_TOO_MANY_RETRIES-8多次尝试都是失败,Heritrix可以让未成功的URL尝试多次10S_DEFERRED-50该URL准备先获取先决条件URL(也就是DNS)11S_UNQUEUEABLE-60没有通过调度器(Frontier)12S_ROBOTS_PREREQUISITE_FAILURE-61获取DNS失败,被爬虫协议(robots.txt)拒绝13S_OTHER_PREREQUISITE_FAILURE-62获取DNS失败的其他原因14S_PREREQUISITE_UNSCHEDULABLE_FAILURE-63获取DNS失败,该Host不在范围中(也就是用户定义的Url抓取范围)15S_GETBYNAME_SUCCESS1001通过URL获取IP成功16S_SERIOUS_ERROR-3000严重错误,比如内存溢出17S_DEEMED_CHAFF-4000完全无用,可忽视的URL18S_TOO_MANY_EMBED_HOPS-4001超出层数限制,也就是抓取深度,这里是抽取出来的连接19S_TOO_MANY_EMBED_HOPS-4002超出层数限制,也就是抓取深度,这里是嵌套的连接20S_OUT_OF_SCOPE-5000URL超出范围21S_BLOCKED_BY_USER-5001被用户拒绝,heritrix可以配置很多规则(Rule)去过滤一部分Url22S_BLOCKED_BY_CUSTOM_PROCESSOR-5002在预处理模块被阻止23S_BLOCKED_BY_QUOTA-5003超过抓取成本,Heritrix可以配置抓取一个URL的成本24S_BLOCKED_BY_RUNTIME_LIMIT-5004超过抓取时间,Heritrix可以配置抓取一个URL的用时25S_DELETED_BY_USER-6000被用户删除26S_PROCESSING_THREAD_KILLED7000heritrix可以多线程抓取,用户可以删除线程,当前状态就表示运行该URL的线程被删除27S_ROBOTS_PRECLUDED-9998被爬虫协议(robots.txt)拒绝28   29