2015-10-26 75 views
3

我正在玩Apache Nutch,我正在成功爬取網站。我想用Nutch製作一個網站的副本,這樣我就可以離線訪問已抓取的網頁。有沒有辦法做到這一點?我正在尋找類似於接收url的端點,並返回網頁的內容,就像我使用curl獲取url一樣。Nutch - 克隆網站

我知道有更專門的解決方案,如HTTrack,但我想知道是否有可能使用Nutch來做到這一點。

回答

0

我認爲你現在不需要這個,但無論如何我正在把我的答案。當然有可能使用Apache Nutch.After注入種子URL和生成的URL的片段抓取,當執行的取命令 -

$ bin/nutch fetch -all 

HBase的(這是非常常規使用HBase的作爲存儲用於Nutch的)webpage表結構是這樣的 -

webpage : { 
    key : "com.exampe.dev:http/", 
    f : { 
    bas : { 
     timestamp : 1293732801833, 
     value : "http://dev.example.com/" 
    }, 
    cnt : { 
     timestamp : 1293732801833, 
     value : "DOCTYPE html PUBLIC "-//W3C//DTD X...rest of page content" 
    }, 
    fi : { 
     timestamp : 1293676557658, 
     value : "\x00'\x8D\x00" 
    }, 
    prot : { 
     timestamp : 1293732801833, 
     value : "x02\x00\x00" 
    }, 
    st : { 
     timestamp : 1293732801833, 
     value : "x00\x00\x00\x02" 
    }, 
    ts : { 
     timestamp : 1293676557658, 
     value : "\x00\x00\x01-5!\x9D\xE5" 
    } 
    typ : { 
     timestamp : 1293732801833, 
     value : "application/xhtml+xml" 
    } 
    }, 
    h : { 
    Cache-Control : { 
     timestamp : 1293732801833, 
     value : "private" 
    }, 
    Content-Type : { 
     timestamp : 1293732801833, 
     value : "text/html; charset=UTF-8" 
    }, 
    Date : { 
     timestamp : 1293732801833, 
     value : "Thu, 30 Dec 2010 18:13:21 GMT" 
    }, 
    ETag : { 
     timestamp : 1293732801833, 
     value : 40bdf8b9-8c0a-477e-9ee4-b19995601dde" 
    }, 
    Expires : { 
     timestamp : 1293732801833, 
     value : "Thu, 30 Dec 2010 18:13:21 GMT" 
    }, 
    Last-Modified : { 
     timestamp : 1293732801833, 
     value : "Thu, 30 Dec 2010 15:01:20 GMT" 
    }, 
    Server : { 
     timestamp : 1293732801833, 
     value : "GSE" 
    }, 
    Set-Cookie : { 
     timestamp : 1293732801833, 
     value : "blogger_TID=130c0c57a66d0704;HttpOnly" 
    }, 
    X-Content-Type-Options : { 
     timestamp : 1293732801833, 
     value : "nosniff" 
    }, 
    X-XSS-Protection : { 
     timestamp : 1293732801833, 
     value : "1; mode=block" 
    } 
    }, 
    mk : { 
    _injmrk_ : { 
     timestamp : 1293676557658, 
     value : "y" 
    }, 
    _gnmrk_ : { 
     timestamp=1293732629430, 
     value : "1293732622-2092819984" 
    }, 
    _ftcmrk_ : { 
     timestamp : 1293732801833, 
     value : "1293732622-2092819984" 
    } 
    }, 
    mtdt : { 
    _csh_ : { 
     timestamp : 1293676557658, 
     value : "x80\x00\x00" 
    } 
    }, 
    s : { 
    s : { 
     timestamp : 1293676557658, 
     value : "x80\x00\x00" 
    } 
    } 
} 

f列族名爲cnt列將包含首頁的整個HTML內容。所以你可以使用它來顯式克隆頁面。此外,您可以編寫自定義插件,實現ParserParseFilter接口,以捕獲頁面的全部內容。代碼將非常直接。