WarcWriter

  • WARC/1.0 요구사항에 따라 crawl 데이터들을 warc(Web ARChive) 파일로 저장한다.
    warc 포맷은 InternetArchive's ARC File Format의 개정 포맷이며 전통적으로 web crawl을 저장하기 위해 사용된다.

기존 설정 값

<bean id="warcWriter" class="org.archive.modules.writer.WARCWriterProcessor">
  <!-- <property name="compress" value="true" /> -->
  <!-- <property name="prefix" value="WEB" /> -->
  <!-- <property name="suffix" value="${HOSTNAME}" /> -->
  <!-- <property name="maxFileSizeBytes" value="1000000000" /> -->
  <!-- <property name="poolMaxActive" value="1" /> -->
  <!-- <property name="MaxWaitForIdleMs" value="500" /> -->
  <!-- <property name="skipIdenticalDigests" value="false" /> -->
  <!-- <property name="maxTotalBytesToWrite" value="0" /> -->
  <!-- <property name="directory" value="${launchId}" /> -->
  <!-- <property name="storePaths">
        <list>
         <value>warcs</value>
        </list>
       </property> -->
  <!-- <property name="template" value="${prefix}-${timestamp17}-${serialno}-${heritrix.pid}~${heritrix.hostname}~${heritrix.port}" /> -->
  <!-- <property name="writeRequests" value="true" /> -->
  <!-- <property name="writeMetadata" value="true" /> -->
  <!-- <property name="writeRevisitForIdenticalDigests" value="true" /> -->
  <!-- <property name="writeRevisitForNotModified" value="true" /> -->
  <!-- <property name="startNewFilesOnCheckpoint" value="true" /> -->
  • [property에 대한 설명]
    1. compress : warc 파일의 압축 여부 결정 ( 압축 포맷은 gzip )
    2. prefix : warc 파일의 prefix 결정
    3. suffix : warc 파일의 suffix 결정
    4. maxFileSizeBytes : warc 파일 한 개의 최대 사이즈. 이 값을 넘어가면 파일을 분할하여 저장한다.
    5. poolMaxActive : file과의 connection을 관장하는 pool의 최대 개수. 크롤링 중간에 변경 불가능하다.
    6. MaxWaitForIdleMs : 추가적으로 instance를 생성하기 전에 idle writer를 기다리는 최대 시간
    7. skipIdenticalDigests : 이전 fetch의 identical content digest값이 동일한 값을 가지고 있을 때, 이번 fetch의 기록을 생략할 것인지에 대한 여부
    8. maxTotalBytesToWrite : 전체 warc 파일의 제한 사이즈. 이 값을 초과 하면 크롤링도 멈춘다. 0은 no limit를 의미한다.
    9. directory : warc 파일의 기본 path 설정
    10. storePaths : warc 파일을 저장할 경로. 만약 2개 이상의 경로를 설정할 경우 round-robin 방식으로 file들을 저장한다. 경로의 root는 directory에서 설정한 path.
    11. template : warc 파일 이름의 기본 형식
    12. writeRequests : reqeust 타입 기록을 저장할 것인지 여부.
      저장 값 예시 :

      WARC/1.0 WARC-Type: request WARC-Target-URI: http://crawled.com/robots.txt WARC-Date: 2016-07-25T08:01:19Z WARC-Concurrent-To: <urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx> WARC-Record-ID: <urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx> Content-Type: application/http; msgtype=request Content-Length: 243 GET /robots.txt HTTP/1.0 User-Agent: Mozilla/5.0 (compatible; heritrix/3.2.0-SNAPSHOT-20140108-2049 +http://crawling.co.kr) Connection: close Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Host: crawled.kr

    13. writeMetadata : metadata 타입 기록을 저장할 것인지 여부.
      저장 값 예시 :
      WARC/1.0
      WARC-Type: metadata
      WARC-Target-URI: http://crawled.kr/robots.txt
      WARC-Date: 2016-07-25T08:01:19Z
      WARC-Concurrent-To: <urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
      WARC-Record-ID: <urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
      Content-Type: application/warc-fields
      Content-Length: 209
      
      force-fetch:
      via: http://crawled.kr/
      hopsFromSeed: P
      sourceTag: http://crawled.kr/
      fetchTimeMs: 7
      charsetForLinkExtraction: ISO-8859-1
      outlink: http://crawled.kr/favicon.ico I =INFERRED_MISC
      
    14. writeRevisitForIdenticalDigests : 이전 fetch 기록이 동일한 content digest를 가지고 있을 때 revisit 타입의 기록을 저장할 것인지에 대한 여부.
    15. writeRevisitForNotModified : 304-Not Modified 응답을 받았을 경우 revisit 타입의 기록을 저장할 것인지에 대한 여부.
    16. startNewFilesOnCheckpoint : checkpoint에서 file을 끝내고 새로운 파일을 다시 쓸 것인지에 대한 여부.


Posted by Righ
,