2013-03-30 32 views
1

我正在嘗試編寫自己的Nutch插件來抓取網頁。問題是我需要確定是否有一些特殊的標籤,例如在網頁上。在官方文檔中有一些注意,這可以使用Document.getElementsByTagName(「foo」),但這不適用於我。你有什麼主意嗎?Apache Nutch 2.1 - 如何獲取完整的源代碼

我的第二個問題是,如果我確定了上面的標籤,我想從這個網頁獲得一些其他標籤,在哪裏標識了標籤......有什麼方法可以存儲完整的源代碼時刻?

由於1月

+0

好吧,是我不好......第二個問題就解決了: - http://stackoverflow.com/questions/5123757/how-to-the-html-content-from-nutch - http://stackoverflow.com/questions/10007178/how-do-i-save-the-origin-html-file-with- Apache的Nutch的 –

回答

3

如果要提取基於HTML標籤的內容,你可以看看XPath的過濾器插件:http://www.atlantbh.com/precise-data-extraction-with-apache-nutch/ 你可以寫一個XPath查詢,並在插件配置它來提取你需要的信息。

另一個選擇是編寫一個插件(就像你現在正在做的那樣)並使用HTML/XML解析器來獲取信息。 這裏是當我需要提取一些內容進行特定的div我做了什麼:

@Override 
    public NutchDocument filter(NutchDocument doc, Parse parse, Text url, CrawlDatum datum, Inlinks inlinks) throws IndexingException { 

     //LOG.info("filter init: "); 
     Metadata metadata = parse.getData().getParseMeta(); 
     String fullContent = metadata.get("fullcontent"); 

     Document document = Jsoup.parse(fullContent); 
     Element contentwrapper = document.select("div#content").first(); 

     //LOG.info("fullcontent"); 
     //LOG.info(contentwrapper); 


     // Add field 
     doc.add("contentwrapper", contentwrapper.text()); 

     return doc; 
    }