WebCollector 2.72 처리 301/302 리 셋,404 Not Found 등 Http 상태

홈 페이지 주소:https://github.com/CrawlScript/WebCollector
WebCollector 의 Http 요청 결 과 는 두 가지 상태 입 니 다.요청 성공 과 요청 실패 입 니 다.이 두 가지 상태의 정 의 는 다음 과 같다.
  • 요청 성공:서버 가 요청 URL 의 상태 와 데 이 터 를 성공 적 으로 되 돌려 주 었 습 니 다.상태 코드 200 이 아니 라 요청 성공 입 니 다.일반적인 경우 301/302/404 가 요청 에 성공 할 수 있 습 니 다.예 를 들 어 404 에 대해 서버 가 현재 URL 이 존재 하지 않 음 을 정확하게 알려 주 었 습 니 다.301/302 에 대해 서버 는 현재 URL 의 방향 을 바 꿔 야 하 며 Http 헤드 에서 Location 헤드 로 방향 을 바 꾸 는 URL 을 알려 줍 니 다.서버 가 당신 의 요청 에 정확하게 응 답 했 습 니 다.우 리 는 모두 요청 이 성공 했다 고 생각 합 니 다.다시 요청 할 필요 가 없습니다.(다시 요청 해서 얻 은 것 은 같은 정보 이기 때 문 입 니 다.)
  • 요청 실패:요청 하지 않 은 상태 입 니 다.시간 초과 요청,반 파충류 체제 로 인 한 403,반 파충류 체제 로 인 한 302(인증 코드 페이지 로 재 설정)등 상황 은 재 요청 을 통 해 정확 한 응답 을 받 아야 한다.

  • WebCollector 는 기본적으로 OkHttpRequester 를 Http 요청 플러그 인(Requester 플러그 인)으로 사용 합 니 다.아래 코드 를 통 해 OkHttpRequester 가 요청 한 상태 코드 집합 을 볼 수 있 습 니 다.
    
    public static void main(String[] args) {
        OkHttpRequester requester = new OkHttpRequester();
        System.out.println(requester.getSuccessCodeSet());
    }

    , ,OkHttpRequester 404、200、301、302 :

    
    [404, 200, 301, 302]

    ,OkHttpRequester 301 302 , Http 。 visit , :

    
    @Override
    public void visit(Page page, CrawlDatums next) {
        //     301  302,    (     next )
        //        meta
        if(page.code() == 301 || page.code() == 302){
            next.addAndReturn(page.location()).meta(page.meta());
            return;
        }
    }

    page.location() Http Location ( URL), next 。 meta( ) 。 , , http://a.com http://b.com http://c.com, , 。 ,http://c.com 。

    
              :
    1.   http://a.com     ,      
    2.   http://a.com,      http://c.com,    ,  http://a.com    (          http://c.com   )
    3.   http://b.com     ,      
    4.   http://b.com,      http://c.com,    ,  http://b.com    (          http://c.com   )

    , Requester , visit , 。 next( ) http://c.com, , 。 , Requester , URL , , URL ( , http://c.com)。

    , 301 302 , ,301 302 , , , ( ) , 301 302 :

    
    public static void main(String[] args) {
        OkHttpRequester requester = new OkHttpRequester();
        requester.removeSuccessCode(301);
        requester.removeSuccessCode(302);
        System.out.println(requester.getSuccessCodeSet());
    }

      , 301 302:

    
    [404, 200]

    Http ( 304), :

    
    public static void main(String[] args) {
        OkHttpRequester requester = new OkHttpRequester();
        requester.addSuccessCode(304);
        System.out.println(requester.getSuccessCodeSet());
    }

    
    [304, 404, 200, 301, 302]

     

    좋은 웹페이지 즐겨찾기