另外一个关键点就在于补齐截取出来的标签,而在这之前你可能需要面对里面的一些不常用甚至没见过的标签,所以你就需要扩展标签,而这时一个叫htmlparser的开源包
则可以帮得上忙了,它里面定义了一些常用的标签你可以在读取出来后它会帮你自动补齐,但是面对一些它里面没有的标签要怎么办呢,这时你可以自己再扩展出一些属于你自
已的标签,只要继承里面的一个叫CompositeTag的容器类,然后再模仿它已经定义好的标签进行扩展,当然写好了之后不要忘了要进行标签的注册,要不然它不能识别到这些自
定义的标签,不能识别到则不会自动帮你补齐。
下面是先定义一个标签(当然,这是一个比较简单的标签):
顺便赋上一篇关于自定义标签的文章:http://blog.csdn.net/joliny/archive/2008/02/27/2124678.aspx 可以参考.
public class WbrTag extends CompositeTag{
private static final String[] mIds = {"WBR"};
private static final String[] mEndTagEnders = {"head"};
public String[] getIds() {
return (mIds);
}
public String[] getEndTagEnders() {
return (mEndTagEnders);
}
public String[] getEnders() {
return super.getEnders();
}
}
然后再进行标签的注册,这里当然可以注册多个自定义的标签:
public static void registerTags(Parser parser)
{
// 注册自定义的新结点解析器,这是必要的...
PrototypicalNodeFactory factory = new PrototypicalNodeFactory();
factory.registerTag(new WbrTag());
parser.setNodeFactory(factory);
}
然后再进行补齐:
public static String subcontent(File file,int len)
{
try {
String html = readWithTag(file, len);
Parser parser = Parser.createParser(new String(html.getBytes(),
"8859_1"), "");
registerTags(parser);
NodeList nodelist = parser
.extractAllNodesThatMatch(new NodeFilter() {
public boolean accept(Node node) {
if (node instanceof CompositeTag)
return true;
return false;
}
});
String str = "";
String tmp = "";
for (int i = 0; i < nodelist.size(); i++) {
CompositeTag testTag = (CompositeTag) nodelist.elementAt(i);
if (testTag.getParent() == null) { //记住这里只需循环第一层就能帮你补齐的了
tmp = new String(testTag.toHtml().getBytes("8859_1"));
str += tmp + "\n";
}
}
return str;
} catch (Exception e) {
return "";
}
}
还有要补充一下的就是我用的htmlparser的1.5版本,它的不同版本可能有所不同,特此声明.
分享到:
相关推荐
要使用HTMLParser截取摘要,我们首先需要导入相关的库。HTMLParser库提供了DOM(文档对象模型)和SAX(简单API for XML)两种解析模式,这里我们将主要介绍基于DOM的解析方法,因为它更容易理解和操作。 1. **安装...
资源名称:扩展HTMLParser对自定义标签的处理能力内容简介: HTMLParser是一个用来解析HTML文档的开放源码项目,它具有小巧、快速、使用简单的特点以及拥有强大的功能。 现在该项目的最新版本是Integration Build ...
1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_starttag`、`handle_endtag`和`handle_data`,以便在遇到HTML标签开始、结束或数据时执行特定操作。 2. **启动爬虫*...
例如,以下是一个简单的使用示例,展示如何使用HTMLParser解析一个HTML字符串并打印出所有的`<a>`标签: ```java import org.htmlparser.Parser; import org.htmlparser.util.NodeIterator; import org.htmlparser....
标签`c# htmlparser`表明这个库是为C#语言设计的,这意味着它可以无缝集成到任何.NET Framework或.NET Core项目中,利用C#的特性如 LINQ 来简化数据提取。 标签`dll`提醒我们这个库是以DLL形式提供的,这意味着它是...
HTMLParser是Python中用于解析HTML文档的一个库,它允许开发者以事件驱动的方式处理HTML文档的结构。这个库特别适用于从不规范的HTML源码中提取数据,因为网页内容的格式可能会因各种原因而不尽完美。在本例中,我们...
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....
2. **创建解析器**:通过实例化解析器类,如`HtmlParser`,并设置相应的解析模式和配置。 3. **解析HTML**:调用解析器的`parse`方法,传入HTML源码或输入流,开始解析过程。 4. **处理解析事件**:注册事件处理器,...
HTMLParser提供了多种方法来访问和操作解析树,比如`parseContent()`用于获取整个文档的节点列表,`visitAllNodesWith()`可以遍历所有节点并应用自定义的访问器,`getFirstNodeWithTag()`用于找到第一个特定标签的...
使用jar文件,开发者可以直接导入并使用HTMLParser的API来解析和操作HTML文档。 "htmlparser实现从网页上抓取数据.doc"文件则很可能是一个详细的教程,指导用户如何利用HTMLParser库进行网页数据抓取。在这个教程中...
1. **HTML标签解析**:HTMLParser2.0能识别并处理HTML文档中的各种标签,如`<div>`, `<p>`, `<a>`等,帮助开发者提取所需信息。 2. **自定义标签处理**:一个独特的特性是它支持处理自定义的HTML标签,这对于解析...
HTMLParser.jar包是一款专门用于解析HTML网页的框架,它的特点是运行速度快且体积小巧,因此在处理HTML解析任务时,能够高效地完成工作。这个框架主要适用于那些需要从HTML文档中提取数据、分析网页结构或者进行自动...
4. **标签过滤与选择**:HTMLParser允许开发者通过指定标签名或CSS选择器来过滤和选择需要处理的HTML元素,这对于提取特定内容非常方便。 5. **字符编码识别**:HTMLParser可以自动检测HTML文档的字符编码,确保...
由于HTML经常存在不规范的情况,如缺少闭合标签、嵌套错误等,HTMLParser通过容错机制,能够较好地解析这些不规则的HTML。 2. DOM模型:HTMLParser基于DOM模型工作,将HTML文档转换为一棵节点树。每个HTML元素、...
Delphi是一款基于Object Pascal的集成开发环境,常用于开发桌面应用程序,其编译器生成的二进制代码效率高,因此适合创建高性能的系统级工具和库,包括像HtmlParser这样的解析器。 【压缩包子文件的文件名称列表】:...
HTMLParser库的设计基于事件驱动的模式,它会为遇到的每一个HTML标签、属性、文本等内容触发特定的事件。通过继承自HTMLParser类并重写其方法,用户可以定制化解析过程,对HTML元素进行处理。例如,当遇到开始标签时...
HTMLParser是一个Java库,用于解析HTML文档,提取结构化数据并处理HTML标记。这个库特别适合在不完全符合标准的HTML文档中导航和操作元素,因为网页在实际环境中经常会出现这种情况。以下是对`HtmlParser`及其相关...
1. **源代码**:HTMLParser.net的C#源代码,开发者可以查看并学习其内部实现机制。 2. **示例项目**:一个或多个使用HTMLParser.net的示例应用程序,展示了如何导入库、初始化解析器、执行查询和处理HTML元素。 3. *...