解析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 2.1 知识点详解** HtmlParser是一个强大的开源库,主要用于解析HTML文档,它在处理不规则的HTML结构时表现出了极高的灵活性和稳定性。这个"HtmlParser 2.1 码源"是该库的2015年6月的最新版本,包含了...
1. 导入HTMLParser模块:首先需要在代码中导入HTMLParser,以便使用它的功能。 ```python from html.parser import HTMLParser ``` 2. 创建自定义解析器:继承HTMLParser类并创建一个新的解析器类,覆盖需要处理的...
在Web开发中,尤其是在数据抓取、网页解析或自动化测试等领域,HTMLParser扮演着重要角色。下面将详细介绍HTMLParser库的核心功能、使用方法以及与HTML解析相关的知识点。 1. HTMLParser概述: HTMLParser提供了一...
`HtmlParser2003`可能是一个早期版本的源代码,而`AnalyzeHtml`和`WebParser`则可能是演示如何使用HtmlParser的项目。 1. **AnalyzeHtml**:这个项目可能展示了如何分析HTML文档,通过调用HtmlParser的API来提取...
总结来说,"htmlparser:cpp htmlparser实现"是一个专注于在C++中解析HTML文档的库,它涉及到了HTML语法规则的理解、解析器设计模式的运用、内存管理、事件驱动编程、DOM树构建、错误处理、性能优化以及库的可扩展性...
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....
首先,我们需要导入Python的`HTMLParser`模块。在Python 3中,这个模块已经被重命名为`html.parser`,因此应该导入`html.parser`,而不是`HTMLParser`。以下是如何导入的示例: ```python from ...
implementation 'org.htmlparser:htmlparser:2.3' ``` **7. 注意事项** - HTMLParser可能无法完美处理所有不规范的HTML代码,因此在解析过程中可能需要进行错误处理。 - 使用时注意性能优化,特别是处理大量数据时,...
HTML解析器John Resig 的更新版本 -这是基于 Erik Arvidsson 的 toDOM...HTMLParser.toXMLString(htmlString)或者 var xmlString = HTMLParser.toXMLString( htmlString, function(tag) { return tag.toLowerCase() },
在“htmlparser.jar”中,包含了HTMLParser库的所有类和方法,使得开发人员可以将这个库集成到他们的Java项目中。使用jar文件,开发者可以直接导入并使用HTMLParser的API来解析和操作HTML文档。 "htmlparser实现从...
本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...
var dom = htmlParser . parse ( '<p class=test><a>tag !</>' ) ; // now throw it at a selector engine*: $ ( dom ) . query ( 'p.test > a br' ) ; * 针对的测试(巧合的是,它使用 htmlParser 为其文档...
### 使用HttpClient和HtmlParser实现简易爬虫的知识点详解 #### 一、HttpClient与HtmlParser简介 **HttpClient简介:** HttpClient是Jakarta Commons项目中的一个重要组件,用于提供灵活且高效的HTTP协议支持。它...
在处理大量网页数据或进行网络爬虫项目时,HTMLParser是一个不可或缺的工具。以下将详细介绍HTMLParser库的一些核心概念、使用方法以及常见应用。 1. HTMLParser概述: HTMLParser是一个Java实现的解析器,它可以...
在这个压缩包中,你可能找到了HTMLParser项目的所有必需jar包,这将帮助你全面地利用这个库的功能。 HTMLParser的核心功能包括: 1. **解析HTML**:HTMLParser可以读取HTML文档并将其转换为一个可操作的DOM...
在描述中提到的“org.htmlparser.Node”和其他的.class文件,这些都是HTMLParser库的核心组成部分。`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释...
使用HTMLParser,我们可以解析网页内容,提取所需信息,如文章标题、链接、图片等。以下是一些核心概念和步骤: 1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_...
前几天遇到一个问题,需要把网页中的一部分内容挑出来,于是找到了urllib和HTMLParser两个库.urllib可以将网页爬下来,然后交由HTMLParser解析,初次使用这个库,在查官方文档时也遇到了一些问题,在这里写下来与大家分享....
const htmlparser2 = require("htmlparser2"); const parser = new htmlparser2.Parser({ onopentag(name, attribs) { console.log(`Opening tag: ${name}, Attributes: ${JSON.stringify(attribs)}`); }, on...