`
wode66
  • 浏览: 745790 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HtmlParser学习笔记(一)-- 创建Parser对象

阅读更多

      最近学习了下htmlparser,用这东西解析html还是蛮好用的,为了防止以后忘掉,现总结一下。

      首先 ,介绍下HTMLParser的核心类,org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。主要的构造函数如下:

 

public Parser ();
public Parser (String resource) throws ParserException;
public Parser (String resource, ParserFeedback feedback) throws ParserException;
public Parser (URLConnection connection) throws ParserException;
public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;
public Parser (Lexer lexer);
public Parser (Lexer lexer, ParserFeedback fb);

    另外 ,该类还提供了一个静态方法,用来

 

public static Parser createParser (String html, String charset);

    对于大多数使用者来说,使用最多的是通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer则是一个相对比较高级的话题,放到以后再讨论吧。

   常见的创建Parser的方法, 如下:

   方法一:.通过url提取网络上的网页
    

//使用public Parser();构造函数
Parser parser = new Parser();
parser.setURL("http://www.yahoo.com.cn");

//使用public Parser (URLConnection connection) throws ParserException;构造函数
Parser parser = new Parser(
              (HttpURLConnection) (new URL("http://www.baidu.com")).openConnection()
                    );

org.htmlparser.http.ConnectionManager manager = org.htmlparser.lexer.Page.getConnectionManager();
Parser parser = new Parser(manager.openConnection("http://www.baidu.com"));
parser.setEncoding("GB2312");

 

   方法二: 提取本地网页文件 (通过读文件把网页文件转化成字符串)
   

//使用静态方法
Parser parser=Parser.createParser(html,charset);

 

   HtmlParserUtils.java公用类

   该文件是自己编写的一个可复用的类,专门用来创建Parser对象,这里提供出来是为了方便后面的例子使用,代码如下:

 

package com.javaeye.suo.htmlparser;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.htmlparser.Parser;
import org.htmlparser.http.ConnectionManager;
import org.htmlparser.lexer.Page;
import org.htmlparser.util.ParserException;

public class HtmlParserUtils {

	public static Parser getParserWithUrlStr(String urlStr, String encoding) {
		Parser parser = new Parser();
		try {
			parser.setURL(urlStr);
			parser.setEncoding(encoding);
		} catch (ParserException e) {
			e.printStackTrace();
			return null;
		}
		return parser;
	}
	public static Parser getParserWithUrlConn(String urlStr, String encoding) {
		Parser parser = null;
		try {
			URL url = new URL(urlStr);
			HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
			parser = new Parser(urlConn);
			parser.setEncoding(encoding);
			return parser;
		} catch (ParserException e1) {
			e1.printStackTrace();
			return null;
		} catch (MalformedURLException e1) {
			e1.printStackTrace();
			return null;
		} catch (IOException e1) {
			e1.printStackTrace();
			return null;
		} 
	}
        //推荐使用下面这个方法,效率比较高。
	public static Parser getParserWithUrlConn2(String urlStr, String encoding) {
		Parser parser = null;
		try {
			ConnectionManager manager = Page.getConnectionManager(); 
			parser = new Parser(manager.openConnection(urlStr));
			parser.setEncoding(encoding); 
			return parser;
		} catch (ParserException e) {
			e.printStackTrace();
			return null;
		}   
	}
	
	public static Parser createParser(String htmlContent, String encoding){
		Parser parser = Parser.createParser(htmlContent,encoding); 
		return parser;
	}

}
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    HtmlParser学习笔记-- htmlparser简介

    在使用HtmlParser时,通常需要创建Parser对象来处理HTML内容。Parser类提供了多种构造函数,如无参数的构造函数`public Parser()`,通过URL获取HTML的构造函数`public Parser(URLConnection connection)`,以及通过...

    前端开源库-parse5-htmlparser2-tree-adapter

    "parse5-htmlparser2-tree-adapter"就是这样一个关键的工具,它结合了parse5和htmlparser2两个库的优势,实现了HTML文档的解析与处理。本文将深入探讨这两个库以及它们的树适配器。 首先,让我们来了解`parse5`。...

    HTMLParser-2.0-SNAPSHOT

    这个"HTMLParser-2.0-SNAPSHOT"版本可能是HTMLParser的一个开发版本或测试版本,包含了最新的特性和改进。 HTMLParser提供了丰富的API,使得开发者可以方便地操作HTML元素,如标签、属性和文本。以下是一些关键的...

    java解析html工具htmlparser的jar包及api文档

    在这个例子中,我们首先创建了一个`Parser`实例,然后使用`elements()`方法获取一个节点迭代器。通过迭代器,我们可以遍历HTML文档中的所有节点,并检查它们是否是`<a>`标签。如果是,我们就获取并打印出`href`属性...

    htmlparser-c++

    在使用HTMLParser-C++时,开发人员需要包含相关的头文件,如`htmlparser.h`,然后创建解析器实例,例如`HTMLParser parser`。解析器通常会有一个解析HTML字符串或文件的方法,如`parseString`或`parseFile`。解析...

    htmlparser学习笔记

    在使用HTMLParser时,首先需要创建一个`Parser`对象。可以使用无参构造函数`Parser()`或者传入一个`URLConnection`来创建解析器,这通常涉及到从网络获取HTML内容。例如: ```java Parser parser = new Parser(...

    前端开源库-htmlparser-to-html

    `htmlparser-to-html`是一个针对这个需求的开源库,它专注于将`htmlparser`或`htmlparser2`解析生成的JSON格式数据转换回原始的HTML字符串。下面我们将深入探讨这个库的核心功能、应用场景以及如何使用。 ### 核心...

    HTMLParser-2.0-SNAPSHOT-bin.zip JAVA html解析库

    标签,注意NodeClassFilter()可用来过滤一类标签,linkTag对应<标签> OrFilter linkFilter = new OrFilter(new NodeClassFilter( LinkTag.class), frameFilter); // 得到所有经过过滤的标签,结果为...

    HtmlParser的使用

    1. 创建Parser对象并解析HTML字符串: ```java import org.htmlparser.Parser; import org.htmlparser.util.ParserException; public class HtmlParserExample { public static void main(String[] args) { ...

    node-htmlparser.zip

    在这个例子中,我们创建了一个新的Parser实例,并定义了`onopentag`事件处理器。每当解析器遇到一个开放标签时,它就会调用这个处理器。在这个处理器中,我们检查标签名是否为`"p"`,如果是,就打印出该`<p>`标签...

    html-parser.js

    对html进行转换,适用爬虫/小程序富文本显示等;对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等

    HTMLParser-2.0-API.CHM

    HTMLParser-2.0-API.CHM

    htmlparser-1.2.1 jar

    htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载

    htmlparser-1.6p.jar

    "htmlparser-1.6p.jar"是该库的特定版本,用于在Java环境中集成和使用。 HTMLParser的核心功能包括: 1. **标签和属性处理**:它可以识别并解析HTML文档中的各种标签,如`<html>`, `<head>`, `<body>`等,同时处理...

    正则表达式+_HTMLParser使用详解-2010-03-21

    正则表达式与HTMLParser是两种在处理文本数据时非常重要的工具。正则表达式(Regular Expression)是一种模式匹配语言,常用于字符串的查找、替换和提取等操作,而HTMLParser则是用来解析HTML文档结构的工具,尤其在...

    htmlparser

    org.htmlparser.Parser.class org.htmlparser.PrototypicalNodeFactory.class org.htmlparser.beans.BeanyBaby.class org.htmlparser.beans.FilterBean.class org.htmlparser.beans.HTMLLinkBean.class org....

Global site tag (gtag.js) - Google Analytics