2010-06-30 110 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