`
sjsky
  • 浏览: 918077 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HTMLParser初试

阅读更多
    blog迁移至:http://www.micmiu.com

HTMLParser是目前Java领域中解析HTML应用比较广泛的一个。
HTMLParser的主页是http://htmlparser.sourceforge.net/
初次接触HTML Parser,它的核心模块是org.htmlparser.Parser类
介绍几种Parser 初始化的方法,详细见代码:
package com.htmlparser;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.util.NodeList;

/**
 * 
 * @author Michael
 */
public class TestMain {

    private static String ENCODE = "UTF-8";

    /**
     * @param args
     */
    public static void main(String[] args) {
        TestMain test = new TestMain();
        // String url =
        // "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=nero9%E5%88%BB%E5%BD%95ape&aq=f&aqi=&aql=&oq=&gs_rfai=";
        String url = "http://www.baidu.com/s?wd=nero9%BF%CC%C2%BCape&oq=nero9k&rsp=1&f=3&sugT=6679";
        test.testNodeFilter(url);

    }

    /**
     * 几种初始化的方法
     */
    private void testInitParser() {
        try {
            Parser parser1 = new Parser();
            parser1.setURL("http://www.baidu.com");
            parser1.setEncoding(parser1.getEncoding());

            // url 初始化的方法
            HttpURLConnection.setFollowRedirects(true);
            URL netUrl = new URL("http://www.baidu.com");
            HttpURLConnection con = (HttpURLConnection) netUrl.openConnection();
            con.setInstanceFollowRedirects(false);
            con.connect();
            Parser parser2 = new Parser(con);

            // 根据字符串初始化
            String htmlString = this.readHtmlFile("d:/test/test.html");
            Parser parser3 = Parser.createParser(htmlString, ENCODE);

            // 根据字符串初始化
            String htmlStr1 = "<html><head><title>Test</title>"
                    + "<link href=’/test01/css.css' text='text/css' rel='stylesheet'/>"
                    + "</head><body><div><a href='www.baidu.com'  target='_blank'>baidu</a></div>"
                    + "<div><a href='www.sina.com' target='_blank'>sina</a></div></body></html>";
            Parser parser4 = new Parser(htmlString);

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

    /**
     * NodeFilter
     * @param url
     */
    private void testNodeFilter(String url) {
        System.out.println("NodeFilter start...");
        try {
            HttpURLConnection.setFollowRedirects(true);
            URL netUrl = new URL(url);
            HttpURLConnection con = (HttpURLConnection) netUrl.openConnection();
            con.setInstanceFollowRedirects(false);
            con.connect();
            Parser parser = new Parser(con);
            parser.setEncoding(parser.getEncoding());

            NodeFilter filter = new TagNameFilter("A");
            NodeList list = parser.extractAllNodesThatMatch(filter);
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.elementAt(i).toHtml());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("NodeFilter end");
    }

    /**
     * 读取HTML文件
     * @param htmlFileName
     * @return
     */
    private String readHtmlFile(String htmlFileName) {
        BufferedReader bis = null;
        try {
            bis = new BufferedReader(new InputStreamReader(new FileInputStream(
                    new File(htmlFileName)), ENCODE));
            StringBuffer htmlsb = new StringBuffer();
            String readTemp;
            while ((readTemp = bis.readLine()) != null) {
                htmlsb.append(readTemp);
            }
            bis.close();
            return htmlsb.toString();
        } catch (Exception e) {
            return null;
        } finally {
            if (null != bis) {
                try {
                    bis.close();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        }
    }
}

1
1
分享到:
评论

相关推荐

    htmlparser

    META-INF/maven/org.htmlparser/htmlparser/pom.properties META-INF/maven/org.htmlparser/htmlparser/pom.xml org.htmlparser.Parser.class org.htmlparser.PrototypicalNodeFactory.class org.htmlparser.beans....

    htmlparser.jar文件

    在描述中提到的“org.htmlparser.Node”和其他的.class文件,这些都是HTMLParser库的核心组成部分。`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释...

    c#版htmlparser htmlparser.dll htmlparser源代码

    `htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...

    HTMLParser.net源代码HTMLParser.net使用demo

    本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...

    HtmlParser

    使用HTMLParser,我们可以解析网页内容,提取所需信息,如文章标题、链接、图片等。以下是一些核心概念和步骤: 1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_...

    htmlparser-1.2.1 jar

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

    htmlparser库与教程

    在“htmlparser.jar”中,包含了HTMLParser库的所有类和方法,使得开发人员可以将这个库集成到他们的Java项目中。使用jar文件,开发者可以直接导入并使用HTMLParser的API来解析和操作HTML文档。 "htmlparser实现从...

    Winista.Htmlparser.Net 源码 +Demo

    `HtmlParser2003`可能是一个早期版本的源代码,而`AnalyzeHtml`和`WebParser`则可能是演示如何使用HtmlParser的项目。 1. **AnalyzeHtml**:这个项目可能展示了如何分析HTML文档,通过调用HtmlParser的API来提取...

    htmlparser网页分析

    以下是对HTMLParser及其相关知识点的详细说明: 1. HTML解析:HTMLParser的设计目的是为了处理HTML文档的非结构化特性。由于HTML经常存在不规范的情况,如缺少闭合标签、嵌套错误等,HTMLParser通过容错机制,能够...

    HtmlParser源码及demo

    以下是对`HtmlParser`及其相关知识点的详细说明: 1. **HTML解析**:HTMLParser提供了对HTML文档的解析能力,将HTML文本转换为可操作的对象模型。它能够处理嵌套标签、属性、注释以及实体引用等HTML元素。 2. **...

    htmlParser.jar包

    在很多Web抓取、信息提取以及网页分析的项目中,HTMLParser都是一个理想的工具。 HTMLParser库的设计考虑了易用性和灵活性,它提供了丰富的API,允许开发者通过编程方式来访问和操作HTML文档的各个元素,如标签、...

    htmlparser1.6最新版

    本文将深入探讨HTMLParser 1.6版本的功能、用途、使用方法以及其在IT领域的应用。 HTMLParser的核心功能是解析HTML文档,即使在面对结构不规则或者非标准的HTML代码时,也能有效地进行解析。它提供了灵活的事件驱动...

    HtmlParser 2.1 码源

    **HtmlParser 2.1 知识点详解** HtmlParser是一个强大的开源库,主要用于解析HTML文档,它在处理不规则的HTML结构时表现出了极高的灵活性和稳定性。这个"HtmlParser 2.1 码源"是该库的2015年6月的最新版本,包含了...

    htmlparser的jar包

    HTMLParser提供了两种主要的解析方式:事件驱动和DOM(Document Object Model)模型。这两个jar包——htmlparser.jar和htmllexer.jar,包含了实现这些功能所需的类和方法。 htmlparser.jar是核心库,它包含了...

    HtmlParser源码及其jar包

    - `htmlparser1_6_20060610.zip`:这是HTMLParser的一个较早版本,发布于2006年6月10日。它可能包含旧版API和特性,对于需要兼容旧项目或研究历史版本的人来说是有价值的。 - `HTMLParser-2.0-SNAPSHOT-src.zip`:...

    htmlparser2.1.jar

    在网页爬虫开发中,HTMLParser2.1.jar 提供了以下关键知识点: 1. **DOM解析**:HTMLParser2.1支持DOM(Document Object Model)解析方式,将HTML文档转换为树形结构,允许开发者通过节点遍历的方式访问网页元素。...

    htmlparser2.0_dll+htmlparserAPI

    `HTMLParser-2[1].0-API.CHM`文件是HTMLParser2.0的API参考手册,它包含了详细的API文档,为开发者提供了如何使用这个库的指南。通过这个手册,开发者可以学习如何创建解析器实例,设置解析选项,注册事件处理器,...

    Winista.HtmlParser(含帮助手册)

    下面将详细阐述Winista.HtmlParser的相关知识点。 1. **HTML解析原理**: HTML解析器的工作原理是对HTML源码进行分析,识别出标签、属性、文本等内容。Winista.HtmlParser可能采用了基于DOM(文档对象模型)或SAX...

Global site tag (gtag.js) - Google Analytics