`
terrencexu
  • 浏览: 122511 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HtmlParser EncodingChangeException: character mismatch

    博客分类:
  • Java
阅读更多

解析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,非常感谢

分享到:
评论
1 楼 qachenzude 2011-12-11  
buxing~~~

相关推荐

    htmlparser2:原谅HTML和XML解析器

    htmlparser2 快速而宽容HTML / XML解析器。 安装 npm install htmlparser2 提供htmlparser2的实时演示。 生态系统 名称 描述 快速且宽容HTML / XML解析器 htmlparser2的处理程序,可将文档转换为DOM 使用...

    HtmlParser 2.1 码源

    **HtmlParser 2.1 知识点详解** HtmlParser是一个强大的开源库,主要用于解析HTML文档,它在处理不规则的HTML结构时表现出了极高的灵活性和稳定性。这个"HtmlParser 2.1 码源"是该库的2015年6月的最新版本,包含了...

    HTMLParser 2.0

    1. 导入HTMLParser模块:首先需要在代码中导入HTMLParser,以便使用它的功能。 ```python from html.parser import HTMLParser ``` 2. 创建自定义解析器:继承HTMLParser类并创建一个新的解析器类,覆盖需要处理的...

    HtmlParser:解析HTML元素

    在Web开发中,尤其是在数据抓取、网页解析或自动化测试等领域,HTMLParser扮演着重要角色。下面将详细介绍HTMLParser库的核心功能、使用方法以及与HTML解析相关的知识点。 1. HTMLParser概述: HTMLParser提供了一...

    Winista.Htmlparser.Net 源码 +Demo

    `HtmlParser2003`可能是一个早期版本的源代码,而`AnalyzeHtml`和`WebParser`则可能是演示如何使用HtmlParser的项目。 1. **AnalyzeHtml**:这个项目可能展示了如何分析HTML文档,通过调用HtmlParser的API来提取...

    htmlparser:cpp htmlparser实现

    总结来说,"htmlparser:cpp htmlparser实现"是一个专注于在C++中解析HTML文档的库,它涉及到了HTML语法规则的理解、解析器设计模式的运用、内存管理、事件驱动编程、DOM树构建、错误处理、性能优化以及库的可扩展性...

    htmlparser

    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....

    htmlparser(HTML页面解析)例子

    首先,我们需要导入Python的`HTMLParser`模块。在Python 3中,这个模块已经被重命名为`html.parser`,因此应该导入`html.parser`,而不是`HTMLParser`。以下是如何导入的示例: ```python from ...

    htmlparser_Java网页解析器

    implementation 'org.htmlparser:htmlparser:2.3' ``` **7. 注意事项** - HTMLParser可能无法完美处理所有不规范的HTML代码,因此在解析过程中可能需要进行错误处理。 - 使用时注意性能优化,特别是处理大量数据时,...

    HTMLParser:JavaScript HTML 解析器

    HTML解析器John Resig 的更新版本 -这是基于 Erik Arvidsson 的 toDOM...HTMLParser.toXMLString(htmlString)或者 var xmlString = HTMLParser.toXMLString( htmlString, function(tag) { return tag.toLowerCase() },

    htmlparser库与教程

    在“htmlparser.jar”中,包含了HTMLParser库的所有类和方法,使得开发人员可以将这个库集成到他们的Java项目中。使用jar文件,开发者可以直接导入并使用HTMLParser的API来解析和操作HTML文档。 "htmlparser实现从...

    HTMLParser.net源代码HTMLParser.net使用demo

    本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...

    htmlParser:简单的 JavaScript HTML 解析器

    var dom = htmlParser . parse ( '&lt;p class=test&gt;&lt;a&gt;tag !&lt;/&gt;' ) ; // now throw it at a selector engine*: $ ( dom ) . query ( 'p.test &gt; a br' ) ; * 针对的测试(巧合的是,它使用 htmlParser 为其文档...

    使用 HttpClient 和 HtmlParser 实现简易爬虫

    ### 使用HttpClient和HtmlParser实现简易爬虫的知识点详解 #### 一、HttpClient与HtmlParser简介 **HttpClient简介:** HttpClient是Jakarta Commons项目中的一个重要组件,用于提供灵活且高效的HTTP协议支持。它...

    htmlparser .com.cn 网站的全部日志

    在处理大量网页数据或进行网络爬虫项目时,HTMLParser是一个不可或缺的工具。以下将详细介绍HTMLParser库的一些核心概念、使用方法以及常见应用。 1. HTMLParser概述: HTMLParser是一个Java实现的解析器,它可以...

    解析htmlparser的所有jar包

    在这个压缩包中,你可能找到了HTMLParser项目的所有必需jar包,这将帮助你全面地利用这个库的功能。 HTMLParser的核心功能包括: 1. **解析HTML**:HTMLParser可以读取HTML文档并将其转换为一个可操作的DOM...

    htmlparser.jar文件

    在描述中提到的“org.htmlparser.Node”和其他的.class文件,这些都是HTMLParser库的核心组成部分。`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释...

    HtmlParser

    使用HTMLParser,我们可以解析网页内容,提取所需信息,如文章标题、链接、图片等。以下是一些核心概念和步骤: 1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_...

    Python中使用HTMLParser解析html实例

    前几天遇到一个问题,需要把网页中的一部分内容挑出来,于是找到了urllib和HTMLParser两个库.urllib可以将网页爬下来,然后交由HTMLParser解析,初次使用这个库,在查官方文档时也遇到了一些问题,在这里写下来与大家分享....

    HtmlParser:HTML解析器

    const htmlparser2 = require("htmlparser2"); const parser = new htmlparser2.Parser({ onopentag(name, attribs) { console.log(`Opening tag: ${name}, Attributes: ${JSON.stringify(attribs)}`); }, on...

Global site tag (gtag.js) - Google Analytics