解析HTML,htmlparser是一个不错的选择,但是如果你初次使用,可能会不经意间遇到下面这个问题:
org.htmlparser.util.EncodingChangeException: character mismatch (new: [0xfeff] != old: [0xefï]) for encoding change from ISO-8859-1 to UTF-8 at character offset 0
这个问题的原因是服务器端返回的字符集是ISO-8859-1,但是在你解析的网页中却有下面这么一句话:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>欢迎光临</title>
</head>
head中的charset=UTF-8与ISO-8859-1产生了冲突,所以就抛出了上述的异常。
对于这个问题网友已经给出了很多解决方案,包括修改htmlparser源代码等。
但是通过显式的为htmlparser设置字符集是可以解决这一问题的。
Parser parser = new Parser(url);
parser.setEncoding("UTF-8");
NodeList nodeList = parser.parse(new TagNameFilter("title"));
String title = nodeList.size() > 0 ? nodeList.elementAt(0).getFirstChild().getText() : null;
通过显式的设置encoding为UTF-8可以解决这一问题,即使在网页的head中charset是GBK或者gb2312等。
注:我没有完全测试过所有的情况,所以如果您遇到同类问题,使用该方式无法解决,请加comment,非常感谢
分享到:
相关推荐
htmlparser2 快速而宽容HTML / XML解析器。 安装 npm install htmlparser2 提供htmlparser2的实时演示。 生态系统 名称 描述 快速且宽容HTML / XML解析器 htmlparser2的处理程序,可将文档转换为DOM 使用...
htmlparser:cpp htmlparser实现
HtmlParser 2.1 码源。2015年6月最新下载
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....
HTML解析器John Resig 的更新版本 -这是基于 Erik Arvidsson 的 toDOM...HTMLParser.toXMLString(htmlString)或者 var xmlString = HTMLParser.toXMLString( htmlString, function(tag) { return tag.toLowerCase() },
var dom = htmlParser . parse ( '<p class=test><a>tag !</>' ) ; // now throw it at a selector engine*: $ ( dom ) . query ( 'p.test > a br' ) ; * 针对的测试(巧合的是,它使用 htmlParser 为其文档...
c#版htmlparser htmlparser.dll htmlparser源代码
前几天遇到一个问题,需要把网页中的一部分内容挑出来,于是找到了urllib和HTMLParser两个库.urllib可以将网页爬下来,然后交由HTMLParser解析,初次使用这个库,在查官方文档时也遇到了一些问题,在这里写下来与大家分享....
htmlparser
HtmlParser HTML解析器
HtmlParser 解析HTML元素
htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载
HTMLParser.net源代码HTMLParser.net使用demo
Winista.Htmlparser.net 源代码 本资料共包含以下附件: HtmlParser c#源码+demo.rar
htmlparser网络爬虫技术,通过关键字查询快速查找指定网站
htmlparser2.0 htmlparser
htmlparser.jar htmlparser教程
python2.7,下面是跑在window上的,稍作修改就可以跑在linux上。 实测win7和raspbian均可,且raspbian可以直接调用omxplayer命令进行播放。 利用百度的语音合成api进行语音播报... HTMLParser.HTMLParser.__init__(self