htmlparser 处理标签的一个bug
来源:互联网 发布:耳机性能测试软件 编辑:程序博客网 时间:2024/05/01 12:54
众所周知,Htmlparser本身有一些小bug,而且也有三年没更新了。所以现在基于java的信息抽取多转向NekoHtml。不过Htmlparser本身还是有不少优点,主要是扩展性强,其利用的设计模式值得学习。由于时间的关系,现在项目还是使用Htmlparser,以后有时间会对nekohtml进行研究。
今天遇到的bug来自于对<script>的解析。假如一个网页的部分代码如下,那么HtmlParser是必然会出错的:
htmlparser在解析一个节点时,首先确定节点Tag的类型,然后再调用相应的scanner进一步处理。对于<script>标签,需要调用的就是 org.htmlparser.scanners.ScriptScanner。ScriptScanner的Scan()方法部分代码如下:
问题就出在 lexer.parseCDATA() 这个方法上。它提取<scirpt>标签的内容作为文本返回给 content 。当其中的参数为false时,它的截至条件是遇到 “</”。也就是说此时尽管遇到的"</" 是双引号内的文本内容,它仍然会认为遇到了截止标签。对于上文的HTML代码,截止标签就是</font>。出现这个错误后,之后的内容都将被当做普通html代码来解析,直到再遇到</script>。
解决的办法很简单 ,只需将参数改为:
当参数为true时,该方法会自动考虑引号的问题。
- htmlparser 处理标签的一个bug
- 扩展 HTMLParser 对自定义标签的处理能力
- 扩展HTMLParser 对自定义标签的处理能力
- 扩展 HTMLParser 对自定义标签的处理能力
- 扩展 HTMLParser 对自定义标签的处理能力
- 扩展 HTMLParser 对自定义标签的处理能力
- 扩展HTMLParser对自定义标签的处理能力
- HTMLParser使用详解(5)- 扩展 HTMLParser 对自定义标签的处理能力
- HTMLParser使用详解(5)- 扩展 HTMLParser 对自定义标签的处理能力
- 自定义HTMLParser的复合标签
- python HTMLParser处理A标签…
- Webwork的标签的一个bug
- jquery Tabs标签功能的一个Bug
- 关于HtmlParser提取标签不完整的问题(HtmlParser扩展)
- 一个高手的htmlparser笔记
- htmlparser 自定义标签的扩展 注册
- HTMLParser解析HTMl标签的实例
- struts2关于checkbox处理的一个bug
- 码:易
- ubuntu下chsh命令无法改变默认shell的问题(已解决)
- JavaScript Tween算法及缓动效果
- 成为有钱人的25种方法创业
- 宝贝,再抱抱你好吗
- htmlparser 处理标签的一个bug
- delphi try except语句 和 try finally语句用法以及区别
- 用类似“购房补贴”制度代替经济适用房制度
- Blue Pill的编译和安装
- 成为有钱人的25种方法创业收藏
- ARP协议揭密
- 矩形离散化
- 关于Symbian OS 的几个名词解释
- XP SP3无法安装IIS 解决办法