FetchDns

  • 'dns:' URI들을 관장하는 processor

기존 설정 값

<bean id="fetchDns" class="org.archive.modules.fetcher.FetchDNS">
  <!-- <property name="acceptNonDnsResolves" value="false" /> -->
  <!-- <property name="digestContent" value="true" /> -->
  <!-- <property name="digestAlgorithm" value="sha1" /> -->
 </bean>
  • [property에 대한 설명]
    1. acceptNonDnsResolves : DNS lookup이 실패했을 경우 대비책을 적용할 것인지에 대한 여부. 로컬의 hosts 파일을 읽는다거나 다른 메커니즘을 따른다.
    2. digestContent : 응답으로 회수된 content-body를 바로 해싱할 것인지에 대한 여부
    3. digestAlgorithm : 위 해싱 알고리즘을 적어줌


Posted by Righ
,

Preconditions

  • fetch를 하기 전 사전 조건(DNS lookup 또는 robots.txt 정책 준수)이 제대로 되어 있는지 확인한다.

기존 설정 값

<bean id="preconditions" class="org.archive.crawler.prefetch.PreconditionEnforcer">
  <!-- <property name="ipValidityDurationSeconds" value="21600" /> -->
  <!-- <property name="robotsValidityDurationSeconds" value="86400" /> -->
  <!-- <property name="calculateRobotsOnly" value="false" /> -->
 </bean>
  • [property에 대한 설명]
    1. ipValidityDurationSeconds : dns 기록이 유효하다고 판단할 최소 시간을 적어준다. 저장된 dns ttl 값이 이 값보다 큰 경우엔 dns-ttl 값으로 대체한다.
    2. robotsValidityDurationSeconds : fetch한 robots.txt 가 유효하다고 판단할 최소 시간을 적어준다. 0일 경우는 robots.txt 정보가 만료되지 않을 것.
    3. calculateRobotsOnly : robots 상태를 체크만 하고 실제 exclusion을 적용하진 않는다. true로 할 시에는 배제된 uri들이 주석처리되어 crawl.log에 남지만 fetch는 된다.


Posted by Righ
,

Preselector

  • queue에서 대기하던 uri를 pop한 후 먼저 처리할 사항을 설정하는 부분이다.

기존 설정 값

 <!-- first, processors are declared as top-level named beans -->
 <bean id="preselector" class="org.archive.crawler.prefetch.Preselector">
  <!-- <property name="recheckScope" value="false" /> -->
  <!-- <property name="blockAll" value="false" /> -->
  <!-- <property name="blockByRegex" value="" /> -->
  <!-- <property name="allowByRegex" value="" /> -->
 </bean>
  • [property에 대한 설명]
    1. recheckScope : queue에 push하기 전에 scope를 체크하였으나 pop 후 다시 체크가도록 설정하는 부분. crawl 중간에 scope 설정을 바꿀 경우 사용하는 옵션이다.
    2. blockAll : 모든 uri를 block 처리한다. 특정 host에 대한 진행을 기각처리하고 싶을 때 사용한다.
    3. blockByRex : 정규식에 매칭되는 uri는 block 처리한다.
    4. allowByRex : 정규식에 매칭되는 uri외의 uri들을 block 처리한다.


Posted by Righ
,

CandidateProcessors

  • 포함할 CandidateChain에 포함할 processor들을 표시한다.

기존 설정 값

 <!-- now, processors are assembled into ordered CandidateChain bean -->
 <bean id="candidateProcessors" class="org.archive.modules.CandidateChain">
  <property name="processors">
   <list>
    <!-- apply scoping rules to each individual candidate URI... -->
    <ref bean="candidateScoper"/>
    <!-- ...then prepare those ACCEPTed to be enqueued to frontier. -->
    <ref bean="preparer"/>
   </list>
  </property>
 </bean>
  • [process 진행 과정 설명]
    1. 각각의 candidate URI에 rule을 적용하여 filtering 한다. -> cadidateScoper
    2. 이 filtering 된 URI들(ACCEPTed)을 queue에 저장한다. -> preparer


Posted by Righ
,

CostAssignmentPolicy

  • queue 내에서의 우선순위를 의미하는 cost를 각 크롤링된 uri에 부여한다.

기존 설정 값

 <!-- COST ASSIGNMENT POLICY -->
 <!--
 <bean id="costAssignmentPolicy" 
   class="org.archive.crawler.frontier.UnitCostAssignmentPolicy">
 </bean>
 -->
  • 현재 class인 UnitCostAssignemtPolicy는 모든 CrawlURI에 같은 값인 1을 부여한다.


Posted by Righ
,