2017-11-02 16 views
0

나는 nutch를 사용하고 있습니다. 나는 인터넷에서 많은 웹 사이트를 크롤링했습니다. 세그먼트의 html 콘텐츠를 가져오고 싶습니다. 따라서, 나는 다음과 명령으로 덤프했습니다 다음nutch에서 html 파일을 덤프하는 방법

./nutch mergesegs crawl/merged crawl/segments/* 

과 :

./nutch readseg -dump crawl/merged/* dumpedContent 

을 지금. dumpedContent : dump 및 .dump.crc 파일이 두 개 있습니다.

덤프 크기가 ​​너무 큽니다 (82GB).

원본 웹 페이지 각각을 하나의 파일로 덤프하는 방법은 무엇입니까? 또는 작은 파일을 덤프하는 방법?

답변

0

세그먼트를 먼저 (mergesegs)로 병합하기 때문에 커다란 파일이 생성됩니다. 각 세그먼트를 자체 파일로 덤프 할 수 있습니다.

현재 SegmentReader 클래스는 각 개별 URL을 분리 된 파일로 분리하는 것을 지원하지 않으며 지원하지 않을지 확실하지 않습니다. 정말 큰 크롤링의 경우 이는 분명히 문제가됩니다. 아무래도 -dump 옵션은 항상 크롤링 된 URL에 일부 메타 데이터를 첨부하므로 HTML 콘텐츠뿐만 아니라 일부 메타 데이터도 가져올 수 없습니다. 예 :

Recno:: 0 
URL:: http://example.org 

CrawlDatum:: 
Version: 7 
Status: 33 (fetch_success) 
Fetch time: Wed Oct 25 16:32:14 CEST 2017 
Modified time: Thu Jan 01 01:00:00 CET 1970 
Retries since fetch: 0 
Retry interval: 2592000 seconds (30 days) 
Score: 0.0 
Signature: null 
Metadata: 
    _ngt_=1508941926882 
    _repr_=http://example.org 
    _pst_=success(1), lastModified=0 
    _rs_=478 
    Content-Type=text/html 
    nutch.protocol.code=200 

Content:: 
Version: -1 
url: http://example.org 
base: http://example.org 
contentType: text/html 
metadata: X-Cache=HIT Connection=close Date=Wed, 25 Oct 2017 14:30:53 GMT nutch.crawl.score=0.0 nutch.fetch.time=1508941934366 Accept-Ranges=bytes nutch.segment.name=20171025163209 Cache-Control=max-age=600 Content-Encoding=gzip Vary=Accept-Encoding,Cookie Expires=Wed, 25 Oct 2017 14:40:53 GMT Content-Length=20133 X-Cache-Hits=1 _fst_=33 Age=78 Content-Type=text/html; charset=UTF-8 
Content: 
... 

원시 HTML을 얻으려면이 파일을 처리해야합니다.

다른 옵션은 내용을 -addBinaryContent 플래그로 Solr/ES에 색인화하는 것이며 Solr/ES에 저장된 페이지의 원시 내용을 갖습니다. 이점은 특정 URL을 쿼리 할 수 ​​있다는 것입니다. 따라서 Solr/ES에서 원하는 형식/파일로 데이터를 추출 할 수 있습니다.

bin/nutch commoncrawldump 기능을 사용하면 다른 형식으로 콘텐츠를 출력 할 수 있습니다. 이제 1 URL을 1 파일 관계로 할 수 있는지 여부는 확실하지 않습니다.

+0

답변 해 주셔서 감사합니다. Solr에서이 크롤링 된 데이터의 색인을 생성했습니다. './nutch solrindex http : // localhost : 8983/solr/crawl/crawldb -linkdb 크롤링/linkdb 크롤링/세그먼트/*' html 파일은 어디에 있습니까? 나는 이유를 파싱하기 위해 모든 html 파일을 필요로한다. html 파일을 추출하는 데 도움주세요. – Rahman

+0

사용중인 Nutch 버전을 지정하지 않았고'solrindex'는 더 이상 사용되지 않습니다. 대신'./bin/nutch index '를 사용해야합니다. '-addBinaryContent' 플래그를'index' 명령에 지정해야합니다. './bin/nutch index'의 출력을보고 사용 가능한 옵션을 확인하십시오. –

+0

나는'nutch 1.4'를 사용하고 있는데,이 명령으로 모든 데이터가 성공적으로 색인되었다. 이제 솔로로 검색 할 수 있습니다. 하지만 난 그냥 HTML 파일이 필요합니다. 나는'-addBinaryContent' 플래그에 대해 아무것도 모릅니다. html 파일을 추출하라는 명령을 내게 주시겠습니까? – Rahman

0

Nutch SegmentReader는 모든 HTML 콘텐츠를 하나의 파일로 덤프하는 좋은 방법입니다. 이는 일반적으로 시작 URL (및 링크와 링크)에서 HTML 콘텐츠를 저장하는 데 사용됩니다.

그러나 구문 분석이 필요하고 별도로 저장해야하는 경우 writing plugins을 참조하십시오. 파싱 ​​대상에 따라 저장할 위치와 대상을 정의 할 수 있습니다. 필자는 최근에 이것을 시도했으며 디렉토리 폴더에 별도의 HTML 페이지를 저장할 때 효율적입니다. 희망이 도움이됩니다.