Lucene 2.2.0发布自带的HTMLParser的使用

Lucene 2.2.0发行包中自带的org.apache.lucene.demo包中,有一个为HTML和TXT文件建立索引、删除索引以及实现检索的实例,其中在org.apache.lucene.demo.html包中的一些类,是真正解析HTML文件的工具类,包括解析类、预定义类、异常处理类。

这个例子的命令提示为:

IndexHTML [-create] [-index <index>] <root_directory>

是建关于索引的命令,-create是建立索引,-index是选择删除指定的索引文件。

这个例子运行过程如下所示。

将相关jar包luene-core-2.2.0.jar和lucene-demos-2.2.0.jar加入到当前的CLASSPATH中,设置环境变量:

E:\Lucene\lucene-2.2.0\lucene-2.2.0\lu
ene-core-2.2.0.jar;E:\Lucene\lucene-2.2.0\lucene-2.2.0\lucene-demos-2.2.0.jar;

假设,待处理的文件存放于目录E:\data\page\cn_en下面,文件列表如下所示:

2008-06-11 10:20    <DIR>          eNet网络学院-中国权威电脑教程软件资讯网站.files
2008-06-11 10:20    <DIR>          hao123网址之家--实用网址,搜索大全,尽在www_hao123_com.files
2008-06-11 10:20    <DIR>          设计联盟_中国 Cndu_cn [国内专业的设计师交流平台_ 华人设计精英的社交圈] - 为设计师服务!.files
2008-06-11 10:20    <DIR>          设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,设计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.files
2008-06-11 10:20    <DIR>          设计在线_中国 DesignOnLine.files
2008-06-11 10:20    <DIR>          素材下载-图片下载-中国下载站_files
2008-06-11 10:20    <DIR>          天龙八部 官方网站首页.files
2008-06-11 10:20    <DIR>          网站优化搜索引擎优化网站排名研究论坛seo资料.files
2008-06-11 10:20    <DIR>          中国设计网址大全 52design设计网网址库.files
2008-06-11 10:20    <DIR>          中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全-数字艺术网址大全-中国领先的数字艺术网址门户.files
2008-06-11 10:20    <DIR>          中国设计之窗-- 首页.files
2007-12-09 20:26           187,187 eNet网络学院-中国权威电脑教程软件资讯网站.htm
2007-12-10 13:20            61,480 hao123网址之家--实用网址,搜索大全,尽在www_hao123_com.htm
2007-12-09 20:25            71,696 设计联盟_中国 Cndu_cn [国内专业的设计师交流平台_ 华人设计精英的社交圈] - 为设计师服务!.htm
2007-12-09 20:56           107,597 设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,设计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.htm
2007-12-09 20:41               606 设计在线_中国 DesignOnLine.htm
2008-01-18 16:18            58,838 素材下载-图片下载-中国下载站.htm
2007-12-10 13:22           204,945 天龙八部 官方网站首页.htm
2007-12-10 13:19            31,935 网站优化搜索引擎优化网站排名研究论坛seo资料.htm
2007-12-09 20:25           206,758 中国设计网址大全 52design设计网网址库.htm
2007-12-09 20:14            84,347 中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全-数字艺术网址大全-中国领先的数字艺术网址门户.htm
2007-12-09 20:26           280,887 中国设计之窗-- 首页.htm
2008-06-11 10:40    <DIR>          Welcome! - The Apache Software Foundation.files
2008-06-11 10:38            18,241 Welcome! - The Apache Software Foundation.htm
2008-06-11 10:40    <DIR>          Sun Microsystems.files
2008-06-11 10:39            26,446 Sun Microsystems.htm
2008-06-11 10:40    <DIR>          Microsoft Corporation.files
2008-06-11 10:40            44,352 Microsoft Corporation.htm
2007-06-16 22:21            83,829 CHANGES.txt
2007-06-16 22:21            11,358 LICENSE.txt
2007-06-16 22:21               362 NOTICE.txt
2007-06-16 22:21             1,157 README.txt
2007-06-16 22:21             3,676 BUILD.txt
2007-10-23 15:12                34 2实验红黑树.txt
2007-10-30 15:44                82 3实验题目.txt
2007-12-09 21:15             8,479 Dreamweaver 8 序列号.txt
2007-10-13 19:48                62 EditPlus注册码.txt
2007-08-02 19:46             7,738 文档规范.txt
2008-03-03 21:17                 0 资料列表.txt
2007-10-16 15:33                75 1实验题目.txt
              26 个文件      1,502,167 字节
              16 个目录    207,020,032 可用字节

建立索引

启动cmd.exe,执行建立索引的命令,如下:

E:\data\page>java org.apache.lucene.demo.IndexHTML -create cn_en

建立索引信息如下所示:

adding cn_en/1实验题目.txt
adding cn_en/2实验红黑树.txt
adding cn_en/3实验题目.txt
adding cn_en/BUILD.txt
adding cn_en/CHANGES.txt
adding cn_en/Dreamweaver 8 序列号.txt
adding cn_en/EditPlus注册码.txt
adding cn_en/LICENSE.txt
adding cn_en/Microsoft Corporation.htm
Parse Aborted: Lexical error at line 699, column 291. Encountered: "=" (61), af
ter : ""
adding cn_en/NOTICE.txt
adding cn_en/README.txt
adding cn_en/Sun Microsystems.htm
adding cn_en/Welcome! - The Apache Software Foundation.htm
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/adjuggler.htm
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/articlemaquree.htm
l
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow(1).htm
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow(2).htm
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow(3).htm
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow.htm
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/menu.html
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/rdzt.html
Parse Aborted: Lexical error at line 5, column 11. Encountered: "\u8f6f" (36719
), after : ""
adding cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.htm
adding cn_en/hao123网址之家--实用网址,搜索大全,尽在www_hao123_com.htm
Parse Aborted: Lexical error at line 579, column 38. Encountered: "\u6b22" (274
26), after : ""
adding cn_en/中国设计之窗-- 首页.files/index3.htm
Parse Aborted: Lexical error at line 107, column 57. Encountered: "\u6807" (266
31), after : ""
adding cn_en/中国设计之窗-- 首页.files/spider_search_show.htm
Parse Aborted: Lexical error at line 6, column 12. Encountered: "\u5546" (21830
), after : ""
adding cn_en/中国设计之窗-- 首页.htm
adding cn_en/中国设计网址大全 52design设计网网址库.files/flashv2.htm
adding cn_en/中国设计网址大全 52design设计网网址库.files/go.htm
Parse Aborted: Lexical error at line 7, column 9. Encountered: "\u7f51" (32593)
, after : ""
adding cn_en/中国设计网址大全 52design设计网网址库.htm
Parse Aborted: Encountered "<EOF>" at line 1, column 123.
Was expecting one of:
    <ScriptText> ...
    <ScriptEnd> ...

adding cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全
-数字艺术网址大全-中国领先的数字艺术网址门户.files/90.htm
Parse Aborted: Lexical error at line 86, column 25. Encountered: "\u666f" (2622
3), after : ""
adding cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全
-数字艺术网址大全-中国领先的数字艺术网址门户.files/alimama.htm
adding cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全
-数字艺术网址大全-中国领先的数字艺术网址门户.files/img.htm
adding cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全
-数字艺术网址大全-中国领先的数字艺术网址门户.files/newsite.htm
adding cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全
-数字艺术网址大全-中国领先的数字艺术网址门户.files/soft.htm
adding cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全
-数字艺术网址大全-中国领先的数字艺术网址门户.files/stat.htm
Parse Aborted: Lexical error at line 25, column 99. Encountered: "\u957f" (3827
1), after : ""
Parse Aborted: Lexical error at line 6, column 10. Encountered: "\u4e2d" (20013
), after : ""
adding cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大全
-数字艺术网址大全-中国领先的数字艺术网址门户.htm
adding cn_en/天龙八部 官方网站首页.files/dma.htm
Parse Aborted: Encountered "\'" at line 329, column 56.
Was expecting one of:
    <ArgName> ...
    "=" ...
    <TagEnd> ...

adding cn_en/天龙八部 官方网站首页.files/index.htm
adding cn_en/天龙八部 官方网站首页.files/rcc.htm
Parse Aborted: Encountered "\'" at line 329, column 56.
Was expecting one of:
    <ArgName> ...
    "=" ...
    <TagEnd> ...

Parse Aborted: Lexical error at line 5, column 16. Encountered: "\u5929" (22825
), after : ""
adding cn_en/天龙八部 官方网站首页.htm
adding cn_en/文档规范.txt
Parse Aborted: Lexical error at line 3, column 26. Encountered: "\u7d20" (32032
), after : ""
adding cn_en/素材下载-图片下载-中国下载站.htm
Parse Aborted: Lexical error at line 4, column 15. Encountered: "\u6536" (25910
), after : ""
adding cn_en/网站优化搜索引擎优化网站排名研究论坛seo资料.htm
Parse Aborted: Lexical error at line 9, column 25. Encountered: "\u9645" (38469
), after : ""
adding cn_en/设计在线_中国 DesignOnLine.files/gra.dolcn.files/adframe.htm
Parse Aborted: Lexical error at line 144, column 14. Encountered: "\u641c" (256
28), after : ""
adding cn_en/设计在线_中国 DesignOnLine.files/gra.dolcn.htm
Parse Aborted: Lexical error at line 5, column 15. Encountered: "\u534e" (21326
), after : ""
adding cn_en/设计在线_中国 DesignOnLine.htm
adding cn_en/设计联盟_中国 Cndu_cn [国内专业的设计师交流平台_ 华人设计精英的社交
圈] - 为设计师服务!.files/stat.htm
Parse Aborted: Lexical error at line 25, column 100. Encountered: "\u957f" (382
71), after : ""
Parse Aborted: Lexical error at line 3, column 135. Encountered: "\u4e49" (2004
1), after : ""
adding cn_en/设计联盟_中国 Cndu_cn [国内专业的设计师交流平台_ 华人设计精英的社交
圈] - 为设计师服务!.htm
adding cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,设
计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.files/go.htm
adding cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,设
计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.files/indexLogin.htm
adding cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,设
计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.files/stat.htm
Parse Aborted: Lexical error at line 25, column 98. Encountered: "\u957f" (3827
1), after : ""
Parse Aborted: Lexical error at line 6, column 10. Encountered: "\u9177" (37239
), after : ""
adding cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,设
计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.htm
adding cn_en/资料列表.txt
Optimizing index...
2422 total milliseconds

对于HTML文件和TXT文件,都为他们建立了索引,并且索引文件存放在默认的index目录下(这里完整路径为E:\data\page\index)

删除重建索引

目录en下面有几个HTML文件:

2008-06-11 10:38            18,241 Welcome! - The Apache Software Foundation.htm
2008-06-11 11:00            44,349 Microsoft Corporation.htm
2008-06-11 10:39            26,446 Sun Microsystems.htm
2008-06-11 10:51    <DIR>          Welcome! - The Apache Software Foundation.files
2008-06-11 10:51    <DIR>          Microsoft Corporation.files
2008-06-11 10:51    <DIR>          Sun Microsystems.files
               3 个文件         89,036 字节
               5 个目录    207,020,032 可用字节

删除原来的索引文件,并且重新为E:\data\page\en目录下的HTML文件建立索引的命令如下:

E:\data\page>java org.apache.lucene.demo.IndexHTML -index index en

信息如下所示:

deleting cn_en/1实验题目.txt
deleting cn_en/2实验红黑树.txt
deleting cn_en/3实验题目.txt
deleting cn_en/BUILD.txt
deleting cn_en/CHANGES.txt
deleting cn_en/Dreamweaver 8 序列号.txt
deleting cn_en/EditPlus注册码.txt
deleting cn_en/LICENSE.txt
deleting cn_en/Microsoft Corporation.htm
deleting cn_en/NOTICE.txt
deleting cn_en/README.txt
deleting cn_en/Sun Microsystems.htm
deleting cn_en/Welcome! - The Apache Software Foundation.htm
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/adjuggler.htm
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/articlemaquree.h
tml
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow(1).htm
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow(2).htm
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow(3).htm
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/enetshow.htm
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/menu.html
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.files/rdzt.html
deleting cn_en/eNet网络学院-中国权威电脑教程软件资讯网站.htm
deleting cn_en/hao123网址之家--实用网址,搜索大全,尽在www_hao123_com.htm
deleting cn_en/中国设计之窗-- 首页.files/index3.htm
deleting cn_en/中国设计之窗-- 首页.files/spider_search_show.htm
deleting cn_en/中国设计之窗-- 首页.htm
deleting cn_en/中国设计网址大全 52design设计网网址库.files/flashv2.htm
deleting cn_en/中国设计网址大全 52design设计网网址库.files/go.htm
deleting cn_en/中国设计网址大全 52design设计网网址库.htm
deleting cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大
全-数字艺术网址大全-中国领先的数字艺术网址门户.files/90.htm
deleting cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大
全-数字艺术网址大全-中国领先的数字艺术网址门户.files/alimama.htm
deleting cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大
全-数字艺术网址大全-中国领先的数字艺术网址门户.files/img.htm
deleting cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大
全-数字艺术网址大全-中国领先的数字艺术网址门户.files/newsite.htm
deleting cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大
全-数字艺术网址大全-中国领先的数字艺术网址门户.files/soft.htm
deleting cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大
全-数字艺术网址大全-中国领先的数字艺术网址门户.files/stat.htm
deleting cn_en/中国设计网址导航-中国设计网站大全-中国设计网址大全-中国设计名站大
全-数字艺术网址大全-中国领先的数字艺术网址门户.htm
deleting cn_en/天龙八部 官方网站首页.files/dma.htm
deleting cn_en/天龙八部 官方网站首页.files/index.htm
deleting cn_en/天龙八部 官方网站首页.files/rcc.htm
deleting cn_en/天龙八部 官方网站首页.htm
deleting cn_en/文档规范.txt
deleting cn_en/素材下载-图片下载-中国下载站.htm
deleting cn_en/网站优化搜索引擎优化网站排名研究论坛seo资料.htm
deleting cn_en/设计在线_中国 DesignOnLine.files/gra.dolcn.files/adframe.htm
deleting cn_en/设计在线_中国 DesignOnLine.files/gra.dolcn.htm
deleting cn_en/设计在线_中国 DesignOnLine.htm
deleting cn_en/设计联盟_中国 Cndu_cn [国内专业的设计师交流平台_ 华人设计精英的社
交圈] - 为设计师服务!.files/stat.htm
deleting cn_en/设计联盟_中国 Cndu_cn [国内专业的设计师交流平台_ 华人设计精英的社
交圈] - 为设计师服务!.htm
deleting cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,
设计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.files/go.htm
deleting cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,
设计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.files/indexLogin.htm
deleting cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,
设计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.files/stat.htm
deleting cn_en/设计路上酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,
设计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载.htm
deleting cn_en/资料列表.txt
adding en/Microsoft Corporation.htm
Parse Aborted: Lexical error at line 699, column 291. Encountered: "=" (61), af
ter : ""
adding en/Sun Microsystems.htm
adding en/Welcome! - The Apache Software Foundation.htm
Optimizing index...
1265 total milliseconds

在删除了原来所有的索引文件以后,又执行了重新为E:\data\page\en目录中的HTML文件建立索引的过程。

实现检索

检索的命令用法如下:

java org.apache.lucene.demo.SearchFiles [-index dir] [-field f] [-repeat n] [-queries file] [-raw] [-norms field]

检索过程为如下。

使用org.apache.lucene.demo.SearchFiles类,加上一个索引存放目录作为参数:

E:\data\page>java org.apache.lucene.demo.SearchFiles index

这时要求输入检索关键字:

Enter query:

检索copyright,检索结果如下所示:

Searching for: copyright
8 total matching documents
1. cn_en/NOTICE.txt
   Title:
2. cn_en/LICENSE.txt
   Title:
3. cn_en/BUILD.txt
   Title:
4. cn_en/Sun Microsystems.htm
   Title: Sun Microsystems
5. cn_en/Welcome! - The Apache Software Foundation.htm
   Title: Welcome! - The Apache Software Foundation
6. cn_en/天龙八部 官方网站首页.files/dma.htm
   Title:
7. cn_en/天龙八部 官方网站首页.files/rcc.htm
   Title:
8. cn_en/CHANGES.txt

似乎由于编码问题,检索中文不能奏效,如下所示:

Enter query:

Searching for:
0 total matching documents
Enter query:
中国

Searching for: й
0 total matching documents

问题及说明

1、在解析HTML文件并且为其建立索引过程中,发生了类似如下的错误:

adding cn_en/Microsoft Corporation.htm
Parse Aborted: Lexical error at line 699, column 291. Encountered: "=" (61), after : ""

感觉好像是解析过程中与解析的词法不一致导致上面的错误,因此放弃了解析该处对应的HTML代码。仔细研究了一下Microsoft Corporation.htm页面代码,定位到line 699, column 291为:

<SCRIPT type=text/javascript>var gDomain="m.webtrends.com";var gDcsId="dcs4f6vsz99k7mayiw2jzupyr_1s2e";var gTrackEvents=1;var gFpc="WT_FPC";if(document.cookie.indexOf(gFpc+"=")==-1){document.write("<scr"+"ipt type='text/javascript' src='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'></scr"+"ipt>");}</SCRIPT>

是解析SCRIPT标记时出现了异常,位置就是上面红色加粗显示的等号“==”中第一个等号处。

出错处理在org.apache.lucene.demo.html.TokenMgrError类的下面方法中:

protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
      return("Lexical error at line " +
           errorLine + ", column " +
           errorColumn + ". Encountered: " +
           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
           "after : \"" + addEscapes(errorAfter) + "\"");
   }

而实际发生异常,是在一个HTMLParser线程启动运行过程中捕获的,HTMLParser线程的实现如下所示:

package org.apache.lucene.demo.html;

import java.io.*;

class ParserThread extends Thread {
HTMLParser parser;

ParserThread(HTMLParser p) {
    parser = p;
}

public void run() {      // convert pipeOut to pipeIn
    try {
      try {       // parse document to pipeOut
        parser.HTMLDocument();
      } catch (ParseException e) {
        System.out.println("Parse Aborted: " + e.getMessage());
      } catch (TokenMgrError e) {
        System.out.println("Parse Aborted: " + e.getMessage());
      } finally {
        parser.pipeOut.close();
        synchronized (parser) {
       parser.summary.setLength(HTMLParser.SUMMARY_LENGTH);
       parser.titleComplete = true;
       parser.notifyAll();
     }
      }
    } catch (IOException e) {
   e.printStackTrace();
    }
}
}

org.apache.lucene.demo.html.HTMLParserTokenManager类是解析HTML的核心类,个人认为,之所以出现上面的词法错误,可能是这个org.apache.lucene.demo.html.HTMLParserTokenManager的设计中存在漏洞吧,因为HTML文件的代码是在是太复杂,有时HTML标签又不是特别规范,而浏览器的容错能力又很好,所以实现解析应该是很困难的一件事情。

2、在demo中有个测试类Test 实现了提取HTML文件的Title、Summary、Content的方案,如下所示:

package org.apache.lucene.demo.html;

import java.io.*;

class Test {
public static void main(String[] argv) throws IOException, InterruptedException {
    if ("-dir".equals(argv[0])) {
      String[] files = new File(argv[1]).list();
      java.util.Arrays.sort(files);
      for (int i = 0; i < files.length; i++) {
System.err.println(files[i]);
File file = new File(argv[1], files[i]);
parse(file);
      }
    } else
      parse(new File(argv[0]));
}

public static void parse(File file) throws IOException, InterruptedException {
    FileInputStream fis = null;
    try {
      fis = new FileInputStream(file);
      HTMLParser parser = new HTMLParser(fis);
      System.out.println("Title: " + Entities.encode(parser.getTitle()));
      System.out.println("Summary: " + Entities.encode(parser.getSummary()));
      System.out.println("Content:");
      LineNumberReader reader = new LineNumberReader(parser.getReader());
      for (String l = reader.readLine(); l != null; l = reader.readLine())
        System.out.println(l);
    } finally {
      if (fis != null) fis.close();
    }
}
}

可以在此基础上指导自己使用HTMLParser。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值