package extractor;
import java.io.File;
import java.io.IOException;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.nodes.TagNode;
import org.htmlparser.nodes.TextNode;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import sap.FileInputReader;
public class HTMLElementExtractor {
public void extractBoldFont(String content, String tag)
throws ParserException {
/*
* use regular expression to extract italic text, may not be complete
* e.g. in <i><span>blahblah...</span></i>, "blahblah..." will be
* ignored ArrayList<String> italics = new ArrayList<String>();
*
* Matcher matcher =
* Pattern.compile(">[A-Za-z ]+</i>").matcher(content); while
* (matcher.find()) { String str=matcher.group(); Matcher m =
* Pattern.compile("[A-Za-z ]+").matcher(str); if (m.find()) {
* System.out.println(m.group()); } }
*/
Parser parser = new Parser(content);
NodeFilter filter = new TagNameFilter(tag);
NodeList list = parser.extractAllNodesThatMatch(filter);
NodeIterator iterator = list.elements();
while (iterator.hasMoreNodes()) {
TagNode node = (TagNode) iterator.nextNode();
if (tag == "a" && node.getFirstChild() != null) {
// <a href="../../7d/a109d5efcc4644a9f2da2ab27e50dd/content.htm"
// title="Go to specified document">Search Task Panel for BI
// Data Services</a>
System.out.println(node.getFirstChild().toPlainTextString());
} else if (tag == "i" || tag == "b") {// || tag == "em", from the
// content, it seems "<em>"
// is not what we intended
Node nd = node.getNextSibling();
if (nd instanceof TextNode) {
// <i>blah</i>
System.out.println(nd.toPlainTextString());
} else if (nd instanceof TagNode) {
// <i><span class="SAPXDPNavigationPath "
// title="Navigation path">blah</span></i>
System.out.println(nd.getFirstChild().toPlainTextString());
}
}
}
}
public static void main(String[] args) {
HTMLElementExtractor extractor = new HTMLElementExtractor();
String content;
try {
content = new FileInputReader(new File("test/input/content.htm"))
.getStringContent();
extractor.extractBoldFont(content, "b");
} catch (IOException e) {
e.printStackTrace();
} catch (ParserException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
《使用Winista.Text.HtmlParser采集南京价格信息网的实践与技术解析》 在信息技术日新月异的今天,数据采集已成为各行各业不可或缺的一部分。本项目“Winista.Text.HtmlParser采集南京价格信息网”就是一个典型的...
org.htmlparser.tags.StyleTag.class org.htmlparser.tags.TableColumn.class org.htmlparser.tags.TableHeader.class org.htmlparser.tags.TableRow.class org.htmlparser.tags.TableTag.class org.htmlparser.tags...
使用HTMLParser,我们可以解析网页内容,提取所需信息,如文章标题、链接、图片等。以下是一些核心概念和步骤: 1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_...
`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释(Comment)、文本(Text)等。这个接口是构建整个解析树的基础,通过遍历Node对象,开发者可以访问...
using Winista.Text.HtmlParser.Filters; namespace HTMLParser { public partial class Form1 : Form { public Form1() { InitializeComponent(); AddUrl(); } private void btnParser_Click(object ...
本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...
例如,可以使用`TagStart`事件捕获元素开始,`Text`事件获取元素内的文本,`TagEnd`事件表示元素结束。 5. 应用场景:HTMLParser适用于数据抓取、网页自动化测试、内容过滤等多种场景。比如,你可以使用它来提取...
`htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...
htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载
在“htmlparser.jar”中,包含了HTMLParser库的所有类和方法,使得开发人员可以将这个库集成到他们的Java项目中。使用jar文件,开发者可以直接导入并使用HTMLParser的API来解析和操作HTML文档。 "htmlparser实现从...
using Winista.HtmlParser.Model; // 创建解析器 var parser = new HtmlParser(); // 解析HTML字符串 var htmlString = "<html><body><h1>Hello, World!</h1></body></html>"; var document = parser.Parse...
**HtmlParser 2.1 知识点详解** HtmlParser是一个强大的开源库,主要用于解析HTML文档,它在处理不规则的HTML结构时表现出了极高的灵活性和稳定性。这个"HtmlParser 2.1 码源"是该库的2015年6月的最新版本,包含了...
以下是对`HtmlParser`及其相关知识点的详细说明: 1. **HTML解析**:HTMLParser提供了对HTML文档的解析能力,将HTML文本转换为可操作的对象模型。它能够处理嵌套标签、属性、注释以及实体引用等HTML元素。 2. **...
本文将深入探讨HTMLParser 1.6版本的功能、用途、使用方法以及其在IT领域的应用。 HTMLParser的核心功能是解析HTML文档,即使在面对结构不规则或者非标准的HTML代码时,也能有效地进行解析。它提供了灵活的事件驱动...
`HtmlParser2003`可能是一个早期版本的源代码,而`AnalyzeHtml`和`WebParser`则可能是演示如何使用HtmlParser的项目。 1. **AnalyzeHtml**:这个项目可能展示了如何分析HTML文档,通过调用HtmlParser的API来提取...
在很多Web抓取、信息提取以及网页分析的项目中,HTMLParser都是一个理想的工具。 HTMLParser库的设计考虑了易用性和灵活性,它提供了丰富的API,允许开发者通过编程方式来访问和操作HTML文档的各个元素,如标签、...
- 在C#中,HTMLParser库可能需要NuGet包管理器安装,集成后可以通过`using`语句引入相关命名空间,然后就可以在项目中直接使用。 - Java项目中,HTMLParser通常作为依赖项添加到构建工具(如Maven或Gradle)的配置...
### JAVA HtmlParser 使用实例详解 在Java开发过程中,解析HTML文档是一项常见的需求,尤其是在处理Web爬虫、数据抓取等应用场景时。`HtmlParser`库为开发者提供了一种简便的方式来解析HTML文档,并从中提取所需的...