HtmlParser解析中関村オンラインのタイトルとキーワード

2307 ワード

コードは簡単で、どのようにラベルの内容とラベルの中の属性が値するかを書きました.
 
public class ZolParser
{

	public static void main(String[] args) throws Exception
	{
		/**   */
		long now = System.currentTimeMillis();

		//  
		String htmlCode = setHtmlCode();
		/**   */
		getTitle(htmlCode);
		/**   */
		getkeywords(htmlCode);

		/**   */
		long current = System.currentTimeMillis();
		//  
		System.out.println(" :" + (current - now));
	}

	/**
	 *  HTML 
	 * 
	 * @return
	 * @throws Exception
	 */
	public static String setHtmlCode() throws Exception
	{
		/**  HttpParser HTML */
		Parser parsers = new Parser("http://www.zol.com.cn/");
		//  
		parsers.setEncoding("gb2312");
		//  
		NodeFilter filter = new TagNameFilter("html");
		//  
		NodeList nList = parsers.extractAllNodesThatMatch(filter);
		//  
		return nList.toHtml();
	}

	/**
	 *  
	 * 
	 * @param htmlCode
	 * @throws ParserException
	 */
	public static void getTitle(String htmlCode) throws ParserException
	{

		Parser parser = new Parser();
		parser.setInputHTML(htmlCode);
		/*   */
		NodeFilter filter = new NodeClassFilter(TitleTag.class);
		NodeList nodeList = parser.extractAllNodesThatMatch(filter);
		/**   */
		System.out.println(" : "+nodeList.elementAt(0).toPlainTextString());
	}

	/**
	 *  
	 * 
	 * @param htmlCode
	 * @throws ParserException
	 */
	public static void getkeywords(String htmlCode) throws ParserException
	{
		Parser parser = new Parser();
		parser.setInputHTML(htmlCode);
		/*   */
		NodeFilter filter = new AndFilter(new NodeClassFilter(MetaTag.class), new HasAttributeFilter("name", "keywords"));
		NodeList nodeList = parser.extractAllNodesThatMatch(filter);
		/**   */
		if (nodeList.size() > 0)
		{
			System.out.println(" : "+((TagNode) nodeList.elementAt(0)).getAttribute("content"));
		}
	}
}