如何获取给定URL的网页描述/内容。 (谷歌之类的东西给出了每个结果链接的简短描述)。 我想在我的jsp页面中这样做。
提前感谢!
答案 0 :(得分:4)
想法:以流的形式打开网址,然后在描述元标记中对字符串进行HTML解析。
抓取网址内容:
URL url = new URL("http://www.url-to-be-parsed.com/page.html");
BufferedReader in = new BufferedReader(
new InputStreamReader(
url.openStream()));
需要根据HTML解析器所需的内容(流,字符串等)调整上面的代码。
HTML-Parse the tags:
<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解析器的一个示例:
HasAttributeFilter
按具有name="description"
属性Node
---&gt; MetaTag
施放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中完成此操作,则由于URL的网络I / O,您可能会变慢。更糟糕的是,如果你每次都在为你的页面中有很多URL链接的情况下执行此操作,那么由于n个URL的顺序操作,速度可能会很大。也许您可以将这些信息存储在数据库中并根据需要刷新它们,而不是在JSP中即时进行。