htmlparser在分析RemarkNode注释时的bug

阅读更多

在使用 htmlparser1.6 分析一段Html时发现一个bug

这段html代码如下 (只提取了其中部分代码)




web hosting

baidu

Copyright
 

使用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;

你可能感兴趣的:(JavaScript,Google,算法,HTML,Web)