2010-06-30 165 views

回答

4

建議:打開URL作爲流,然後在其描述元標記中HTML解析字符串。

抓取URL內容:

URL url = new URL("http://www.url-to-be-parsed.com/page.html"); 
    BufferedReader in = new BufferedReader(
       new InputStreamReader(
       url.openStream())); 

是否需要取決於你的HTML解析器庫需要(流,字符串等)上面的代碼來調整。

HTML的解析標籤:

<meta name="description" content="This is a place where webmasters can put a description about this web page" /> 

您可能也有興趣抓住該頁面的標題:

<title>This is the title of the page!</title> 

注意:正則表達式似乎不工作可靠的HTML文件,所以HTML-parser更好。

與HTML解析器例如:

  1. 使用HasAttributeFilter由具有name="description"屬性
  2. 標記過濾嘗試Node --->MetaTag鑄造
  3. 獲取content使用MetaTag.getAttribute()

郵編:

import org.htmlparser.Node; 
import org.htmlparser.Parser; 
import org.htmlparser.util.NodeList; 
import org.htmlparser.util.ParserException; 
import org.htmlparser.filters.HasAttributeFilter; 
import org.htmlparser.tags.MetaTag; 

public class HTMLParserTest { 
    public static void main(String... args) { 
     Parser parser = new Parser(); 
     //<meta name="description" content="Some texte about the site." /> 
     HasAttributeFilter filter = new HasAttributeFilter("name", "description"); 
     try { 
      parser.setResource("http://www.youtube.com"); 
      NodeList list = parser.parse(filter); 
      Node node = list.elementAt(0); 

      if (node instanceof MetaTag) { 
       MetaTag meta = (MetaTag) node; 
       String description = meta.getAttribute("content"); 

       System.out.println(description); 
       // Prints: "YouTube is a place to discover, watch, upload and share videos." 
      } 

     } catch (ParserException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

注意事項:

如果這是在每個JSP頁面加載時間做,你可能會放緩,由於網絡I/O的URL。更糟糕的是,如果您每次都是在網頁上執行此操作,以獲得其中包含多個網址鏈接的頁面,則由於n個網址的順序操作,放緩速度可能很大。也許您可以將這些信息存儲在數據庫中,並根據需要進行刷新,而不是在JSP中即時進行。

+0

::非常感謝您的答覆。我想提取元標記的內容信息。我使用的是html解析器(http://htmlparser.sourceforge.net/samples.html)。 可以請你幫我.. – smartcode 2010-06-30 15:29:02

+0

你走了。花了我一段時間讓我的方式繞過他們的API。似乎正常工作。因爲我也會使用它,所以如果我找到更有效的方法,我會更新。 – bakkal 2010-06-30 17:13:20

+0

::多好的答案兄弟!非常感謝..祝你有美好的一天! – smartcode 2010-06-30 17:47:48