在使用 htmlparser1.6
分析一段Html时发现一个bug
这段html代码如下 (只提取了其中部分代码)
<HTML>
<head></head>
<body>
<P>
<!----------Start Sponsers------------------------------------------------------------------------------->
<table align="center" width="539" border="0" cellspacing="3" cellpadding="0"
bgcolor=ffffff height="127"><tr>
<td valign=top
colspan="2" width="529" height="15" bgcolor="#FFFFC6">
<a href="http://www.abc.com/" target="_blank" style="font-size: 12px;">web hosting</a>
<center>
<script type="text/javascript"><!--
//120x90, created 1/21/08
google_ad_width = 120;
google_ad_height = 90;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<P><a href="http://www.baidu.com">baidu</a>
</center>
<h6 align="center">Copyright </h6>
</body>
</HTML>
使用LinkTag来filter连接时,发现"Start Sponsers"注释行下面的http://www.abc.com/取不到。
跟了一下源代码,发现问题出在org.htmlparser.lexer.Lexer的parseRemark()函数上。其判断Remark注释结束标志的算法有问题。
我加了一个判断Remark结束的方法如下
public boolean isRemarkEnd(StringBuffer remarkTagEnd, char ch) {
remarkTagEnd.append(ch);
if (remarkTagEnd.length() == 4) {
remarkTagEnd.deleteCharAt(0);
}
return REMARK_END.equals(remarkTagEnd.toString());
}
如果判断出Remark结束标志则设置parseRemark()函数中的done = true;
分享到:
相关推荐
在网页分析中,HTMLParser扮演着核心角色,它能够帮助开发者有效地处理HTML源代码,提取所需的信息,甚至进行DOM(Document Object Model)操作。以下是对HTMLParser及其相关知识点的详细说明: 1. HTML解析:...
在Java开发中,如果你需要处理或分析HTML内容,HTMLParser是一个非常有用的工具。这个库提供了一套API,使得开发者能够方便地遍历、修改或者提取HTML文档中的信息。 在描述中提到的“org.htmlparser.Node”和其他的...
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....
1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_starttag`、`handle_endtag`和`handle_data`,以便在遇到HTML标签开始、结束或数据时执行特定操作。 2. **启动爬虫*...
在很多Web抓取、信息提取以及网页分析的项目中,HTMLParser都是一个理想的工具。 HTMLParser库的设计考虑了易用性和灵活性,它提供了丰富的API,允许开发者通过编程方式来访问和操作HTML文档的各个元素,如标签、...
本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...
总的来说,HTMLParser提供了一个强大且灵活的工具,可以帮助Java开发者在处理HTML时避免许多常见的头痛问题。有了这个压缩包中包含的所有jar包,你将能够充分利用HTMLParser的功能,无论你是进行简单的文本提取还是...
HtmlParser是一个强大的开源库,主要用于解析HTML文档,它在处理不规则的HTML结构时表现出了极高的灵活性和稳定性。这个"HtmlParser 2.1 码源"是该库的2015年6月的最新版本,包含了用于理解和操作HTML内容的全部源...
在实际开发中,使用HTMLParser时,你可能需要处理一些常见的问题,比如CSS选择器的支持、JavaScript的解析、URL的处理等。虽然HTMLParser本身并不直接提供这些功能,但可以通过扩展其API或者与其他库(如Jsoup)结合...
作为.NET库,Winista.HtmlParser理论上可以在任何支持.NET框架的平台上运行,包括Windows、Linux、macOS等。这使得它成为开发跨平台应用程序时的一个有力工具。 9. **实际应用**: 这个库适用于各种场景,如网页...
`htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...
4. **错误处理**:HTMLParser设计时考虑了HTML的非规范性,它具有良好的容错性,能处理不完整或不合法的HTML标签,这使得它在处理真实世界中的网页时更为实用。 5. **示例代码(Demo)**:在提供的文件中,可能包含...
在使用HTMLParser时,通常会涉及到以下步骤: - 创建解析器实例,例如:`Parser parser = new Parser("http://example.com");` - 注册需要的过滤器和访问者,这些组件可以帮助我们定制解析行为,例如:`parser....
在本文档中,我们将深入探讨如何利用HTMLParser来分析和抽取正文,这是搜索引擎优化(SEO)和网页数据挖掘中的关键步骤。 正文抽取的主要目标是从HTML文档中提取出主要的文字内容,去除广告、脚本、样式和其他非...
Winista.Htmlparser.Net是一个基于C#的开源HTML解析库,它为开发者提供了一种高效且灵活的方式来处理HTML文档,尤其在需要从HTML中提取数据或者进行网页抓取时显得尤为重要。本文将深入探讨该库的核心功能、设计原理...
8. **性能优化**:HTMLParser 1.6在保证解析准确性的同时,也注重性能优化,使得在处理大量网页时依然能保持高效。 在实际应用中,HTMLParser常被用于以下场景: - **数据抓取**:开发者可以使用HTMLParser抓取...
2. **基本概念**:理解HTMLParser的核心类,如`HTMLDocument`和`Node`,以及它们在解析HTML时的作用。 3. **解析HTML**:学习如何使用`HTMLParser`实例解析HTML字符串或从URL读取HTML内容。这通常涉及到创建`Parser...
这些特性确保了HTMLParser在面对各种复杂网页时的稳定性和效率。 在实际项目中,HTMLParser常用于网页爬虫、数据挖掘或者自动化测试等场景。例如,新闻网站的爬虫可能会使用HTMLParser抓取每篇新闻的标题和内容;...