Watson Discovery에서 PowerPoint와 Excel을 크롤링하고 캡처
Watson Discovery에서 웹 크롤링 (1)
Watson Discovery에서 웹 크롤링 (2)
Nutch에서는 웹 크롤링 대신 파일 시스템을 크롤링하도록 설정할 수 있습니다. 또한 Nutch는 내부적으로 오픈 소스 파서 인 Apache Tika를 사용합니다.이 Apache Tika는 PowerPoint 및 Excel을 포함한 다양한 형식의 파일에서 텍스트 및 메타 데이터를
추출할 수 있습니다. 다음은 Nutch에서 파일 시스템을 크롤링하는 단계를 소개합니다.
설정 절차
소스 코드 얻기 및 빌드
Github 상의 소스 코드를 다음과 같이 취득합니다.
git clone https://github.com/schiyoda/nutch-indexer-discovery.git -b file
여기의 절차 과 같이 buildPlugin 까지 진행합니다.
$ ./gradlew
$ ./gradlew setupHbase
$ ./start-hbase.sh
conf/nutch-discovery/nutch-site.xml の修正
$ ./gradlew setupNutch
$ ./gradlew buildPlugin
조금 해설
취득한 소스 코드는 여기 에 있는 것에 대해, 파일 시스템 크롤링을 위해서 다음과 같은 수정을 하고 있습니다.
nutch-site.xml 수정
파일 시스템 크롤링을 위해 plugin.includes에서 protocol-httpclient 대신 protocol-file을 지정합니다. 또한 파일 메타데이터 검색을 위해 parse-metatags, index-metadata 를 추가합니다.
nutch-site.xml <property>
<name>plugin.includes</name>
<!-- do **NOT** enable the parse-html plugin, if you want proper HTML parsing. Use something like parse-tika! -->
<value>protocol-file|urlfilter-regex|parse-(text|tika|js|metatags)|index-(basic|anchor|metadata)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-discovery</value>
</property>
또한 다음 설정을 추가합니다. 각각,
file.crawl.parent: 파일 시스템을 지정된 폴더에서 하위 방향으로 크롤링
file.content.limit: 검색할 파일 크기를 무제한으로 설정
index.metadata: 검색할 메타데이터 지정
nutch-site.xml <property>
<name>file.crawl.parent</name>
<value>false</value>
</property>
<property>
<name>file.content.limit</name>
<value>-1</value>
</property>
<property>
<name>index.metadata</name>
<value>Last-Modified</value>
</property>
hbase-site.xml 수정
크롤링이 중간에 멈추는 오류에 대한 대응
hbase-site.xml <property>
<name>hbase.regionserver.lease.period</name>
<value>1200000</value>
</property>
크롤링 설정
seed/url.txt로 크롤링할 파일 시스템의 최상위 폴더를 나열합니다.
url.txtfile://Users/chiyoda/work/docs/
폴더 이름 끝에/(슬래시)를 붙여야합니다.
build/apache-nutch-2.3.1/runtime/local/conf/regex-urlfilter.txt를 수정하고 기본적으로 활성화되지 않은 파일 크롤링을 활성화합니다. 또한 PowerPoint 또는 Excel이 크롤링 대상이 되도록 수정합니다.
regex-urlfilter.txt# skip file: ftp: and mailto: urls
-^(ftp|mailto):
# skip image and other suffixes we can't yet parse
# for a more extensive coverage use the urlfilter-suffix plugin
-\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|CSS|sit|SIT|eps|EPS|wmf|WMF|zip|ZIP|ppt|PPT|mpg|MPG|xls|XLS|gz|GZ|rpm|RPM|tgz|TGZ|mov|MOV|exe|EXE|jpeg|JPEG|bmp|BMP|js|JS)$
그럼 크롤링 해 보겠습니다.
$ ./crawl
Injecting urls from ./seed/urls.txt
./build/apache-nutch-2.3.1/runtime/local/bin/nutch inject ./seed/urls.txt
InjectorJob: starting at 2018-06-01 15:06:10
InjectorJob: Injecting urlDir: seed/urls.txt
InjectorJob: Using class org.apache.gora.hbase.store.HBaseStore as the Gora storage class.
InjectorJob: total number of urls rejected by filters: 0
InjectorJob: total number of urls injected after normalization and filtering: 1
Injector: finished at 2018-06-01 15:06:14, elapsed: 00:00:03
Generate urls:
./build/apache-nutch-2.3.1/runtime/local/bin/nutch generate -topN 5
GeneratorJob: starting at 2018-06-01 15:06:16
GeneratorJob: Selecting best-scoring urls due for fetch.
GeneratorJob: starting
GeneratorJob: filtering: true
GeneratorJob: normalizing: true
GeneratorJob: topN: 5
GeneratorJob: finished at 2018-06-01 15:06:19, time elapsed: 00:00:03
GeneratorJob: generated batch id: 1527833176-1112895280 containing 1 URLs
Fetch urls:
./build/apache-nutch-2.3.1/runtime/local/bin/nutch fetch -all
FetcherJob: starting at 2018-06-01 15:06:21
FetcherJob: fetching all
FetcherJob: threads: 10
FetcherJob: parsing: false
FetcherJob: resuming: false
FetcherJob : timelimit set for : -1
Using queue mode : byHost
Fetcher: threads: 10
QueueFeeder finished: total 1 records. Hit by time limit :0
fetching file:///Users/chiyoda/work/docs/ (queue crawl delay=5000ms)
-finishing thread FetcherThread1, activeThreads=1
-finishing thread FetcherThread2, activeThreads=1
-finishing thread FetcherThread3, activeThreads=1
크롤링을 여러 번 실행하면 파일이 Discovey에 캡처되었음을 확인할 수 있습니다.
각 폴더의 정보도 일건으로 받아들여 버리는 것 같기 때문에, 검색시에는 이하와 같은 조건 설정을 하는 것이 좋을지도 모릅니다.
title:!"Index of /Users/chiyoda/work/docs"
Reference
이 문제에 관하여(Watson Discovery에서 PowerPoint와 Excel을 크롤링하고 캡처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/schiyoda/items/e4353a567223dfb05bf9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
git clone https://github.com/schiyoda/nutch-indexer-discovery.git -b file
$ ./gradlew
$ ./gradlew setupHbase
$ ./start-hbase.sh
conf/nutch-discovery/nutch-site.xml の修正
$ ./gradlew setupNutch
$ ./gradlew buildPlugin
<property>
<name>plugin.includes</name>
<!-- do **NOT** enable the parse-html plugin, if you want proper HTML parsing. Use something like parse-tika! -->
<value>protocol-file|urlfilter-regex|parse-(text|tika|js|metatags)|index-(basic|anchor|metadata)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-discovery</value>
</property>
<property>
<name>file.crawl.parent</name>
<value>false</value>
</property>
<property>
<name>file.content.limit</name>
<value>-1</value>
</property>
<property>
<name>index.metadata</name>
<value>Last-Modified</value>
</property>
<property>
<name>hbase.regionserver.lease.period</name>
<value>1200000</value>
</property>
file://Users/chiyoda/work/docs/
# skip file: ftp: and mailto: urls
-^(ftp|mailto):
# skip image and other suffixes we can't yet parse
# for a more extensive coverage use the urlfilter-suffix plugin
-\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|CSS|sit|SIT|eps|EPS|wmf|WMF|zip|ZIP|ppt|PPT|mpg|MPG|xls|XLS|gz|GZ|rpm|RPM|tgz|TGZ|mov|MOV|exe|EXE|jpeg|JPEG|bmp|BMP|js|JS)$
$ ./crawl
Injecting urls from ./seed/urls.txt
./build/apache-nutch-2.3.1/runtime/local/bin/nutch inject ./seed/urls.txt
InjectorJob: starting at 2018-06-01 15:06:10
InjectorJob: Injecting urlDir: seed/urls.txt
InjectorJob: Using class org.apache.gora.hbase.store.HBaseStore as the Gora storage class.
InjectorJob: total number of urls rejected by filters: 0
InjectorJob: total number of urls injected after normalization and filtering: 1
Injector: finished at 2018-06-01 15:06:14, elapsed: 00:00:03
Generate urls:
./build/apache-nutch-2.3.1/runtime/local/bin/nutch generate -topN 5
GeneratorJob: starting at 2018-06-01 15:06:16
GeneratorJob: Selecting best-scoring urls due for fetch.
GeneratorJob: starting
GeneratorJob: filtering: true
GeneratorJob: normalizing: true
GeneratorJob: topN: 5
GeneratorJob: finished at 2018-06-01 15:06:19, time elapsed: 00:00:03
GeneratorJob: generated batch id: 1527833176-1112895280 containing 1 URLs
Fetch urls:
./build/apache-nutch-2.3.1/runtime/local/bin/nutch fetch -all
FetcherJob: starting at 2018-06-01 15:06:21
FetcherJob: fetching all
FetcherJob: threads: 10
FetcherJob: parsing: false
FetcherJob: resuming: false
FetcherJob : timelimit set for : -1
Using queue mode : byHost
Fetcher: threads: 10
QueueFeeder finished: total 1 records. Hit by time limit :0
fetching file:///Users/chiyoda/work/docs/ (queue crawl delay=5000ms)
-finishing thread FetcherThread1, activeThreads=1
-finishing thread FetcherThread2, activeThreads=1
-finishing thread FetcherThread3, activeThreads=1
title:!"Index of /Users/chiyoda/work/docs"
Reference
이 문제에 관하여(Watson Discovery에서 PowerPoint와 Excel을 크롤링하고 캡처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/schiyoda/items/e4353a567223dfb05bf9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)