htmlparser是个解析html文件的一个很不错的库。它能够过滤几乎所有的html元素,而只提供给我们纯文本。但是要用它来解析html,需要好好的搞一个搞编码问题。
htmlparser的默认编码类型是iso,所以我们要根据文件内容的不同来手动设置一个所需要的编码。
Parser myParser = new Parser(file.getAbsolutePath());
myParser.setEncoding("unicode");
通常html里都会有这样一句话<meta http-equiv='Content-Type' content='text/html;charset= gbk' />
用来表示该html的编码类型是什么,但当我们用普通方法来解析这个文件时
public void get(String path){
File f = new File(path);
try {
InputStreamReader isr = new FileReader(f);
System.out.println(isr.getEncoding());
char[] c = new char[128];
while(isr.read(c)>0){
String str = String.valueOf(c);
// System.out.println(new String(str.getBytes(),"utf-8"));
}
InputStream is = new FileInputStream(f);
byte[] b = new byte[1024];
while(is.read(b)>0){
//String.
String str = new String(b,"unicode");
System.out.println(str);
}
} catch (Exception e) {
e.printStackTrace();
}
}
这句话没有意义,无论这句话所申明的编码类型是什么,我们要想解析这个文件,仍然只能用这个文件的编码类型来解析。
但当我们用到htmlparser时,这句话就有意义了。
Parser myParser;
try {
myParser = new Parser(path);
System.out.println(myParser.getEncoding());
myParser.setEncoding("unicode");
HtmlPage htmlpage = new HtmlPage(myParser);
System.out.println(myParser.getEncoding());
myParser.visitAllNodesWith(htmlpage);
// 通过htmlparser 获取body内容
String body = htmlpage.getBody().toHtml();
System.out.println(body);
} catch (ParserException e) {
e.printStackTrace();
}
这个代码运行时会报一个错org.htmlparser.util.EncodingChangeException: character mismatch (new: ? [0xfe] != old: [0x20 ]) for encoding change from unicode to gbk at character offset 0
也就是说,htmlparser在解析html时,既要用到文件的编码,也要用到<meta http-equiv='Content-Type' content='text/html;charset= gbk' />这句中的编码类型,而且它们必须一致。
当然,如果把<meta http-equiv='Content-Type' content='text/html;charset= gbk' />这句删掉,那就没有任何问题了,但为了规范化
我们仍要加上这句,并强制这句中所写的编码类型和该html文件的编码类型一致。
分享到:
相关推荐
HTMLParser是一个用于解析HTML文档的库,尤其在处理非结构化或不标准的HTML时非常有用。这个库可能被用于从网页中提取数据,比如在爬虫项目中,或者进行自动化测试时解析页面内容。本篇文章将深入探讨HTMLParser的...
在解析HTML时,常见的乱码问题通常源于以下几个方面: 1. **编码识别不准确**:网页可以使用多种字符编码,如GBK、UTF-8等。如果解析器不能正确识别网页的编码,就可能导致乱码。HTMLParser.jar通过改进源码,增强...
同时,可能还需要处理一些额外的细节,如处理编码问题、忽略广告或脚本等。 总结来说,使用HTMLParser解析网页涉及到以下步骤: 1. 继承`HTMLParser`并重写相关方法以定义解析逻辑。 2. 找到文章内容所在的标签,如...
之后,通过`import`语句引入所需的类,就可以开始使用HTMLParser解析HTML文档了。 总的来说,HTMLParser是一个强大且灵活的工具,适用于需要解析和操作HTML的Java应用,如爬虫、数据提取、网页自动化等场景。通过...
HTMLParser 2.0 是一个专门用于解析HTML文档的库,尤其在Python编程环境中非常常见。这个库的主要功能是帮助开发者有效地提取、处理和分析HTML文档中的数据,这对于网络爬虫、网页抓取或者需要从网页中提取信息的...
HTMLParser的核心功能是解析HTML文档,即使在面对结构不规则或者非标准的HTML代码时,也能有效地进行解析。它提供了灵活的事件驱动模型,允许开发者通过注册不同的处理器来捕获和处理HTML元素、属性和文本内容。这个...
例如,可以先用HTMLParser解析HTML,然后利用Jsoup进行更精细的数据提取。 8. **学习曲线与社区支持**:由于HTMLParser2.1是用Java编写,对于熟悉Java的开发者来说,学习成本相对较低。同时,社区提供了丰富的文档...
HTMLParser 是一个 Java 库,专门用于解析 HTML 文档。它的主要优点是小巧、快速,但文档相对较少,特别是英文文档,因此对于初学者来说,上手可能有些困难。然而,一旦熟悉了 HTMLParser 的使用,你会发现其设计...
HTMLParser 是一个用于解析HTML文档的Java库,它允许开发者以编程的方式处理HTML内容,提取数据或进行自动化处理。在本文中,我们将深入探讨HTMLParser的使用,包括其核心类`Parser`以及如何初始化和使用它。 首先...
在Java开发过程中,解析HTML文档是一项常见的需求,尤其是在处理Web爬虫、数据抓取等应用场景时。`HtmlParser`库为开发者提供了一种简便的方式来解析HTML文档,并从中提取所需的信息。本文将通过一个具体的例子来...
首先,使用HtmlParser解析主页的HTML代码,然后查找所有的`<a>`标签,提取其中的`href`属性值以及相邻的文本节点作为新闻标题。接着,对提取到的链接进行清洗,最后将清洗后的数据存储到SQL数据库中。 ##### 4.1 ...
HTMLParser 是一个用于解析HTML文档的Java库,它允许开发者高效地处理HTML内容,提取所需信息或进行数据抓取。由于HTMLParser体积小且运行速度快,它在处理HTML时提供了很大的灵活性。然而,该库的文档较为有限,...
首先,使用Request发送GET请求获取网页HTML,然后通过HTMLParser解析HTML,提取所需数据。这个过程可以封装为一个函数或类,以便在不同网页中重复使用。 6. **注意事项和优化**: 使用HTMLParser需要注意HTML的不...
在处理网页内容时,还需要考虑网页编码问题,确保正确地解码和编码数据,避免出现乱码。此外,为了提高抓取效率和处理动态加载的网页,可能需要用到`BeautifulSoup`这样的库来辅助解析,或者配合Selenium等工具模拟...
在解析 HTML 时,正确处理各种字符集和编码是非常重要的。 5. **Formatter.dcu**:可能提供了格式化 HTML 输出的功能,例如将 DOM 树重新转换为 HTML 字符串,或者进行一些格式调整。 6. **Entities.dcu**:可能...
然而,当HTML文档编码与预期的编码不一致时,就可能出现乱码问题。例如,网页声明的编码是UTF-8,但实际内容却是GBK编码,这时如果不正确地处理编码,解析出来的字符就会出现乱码。 针对这个问题,重写`HtmlParser`...
这里我们使用了HtmlParser库,它是一个开源的Java库,专门用于解析HTML文档,提取和处理网页上的信息。以下是如何使用HtmlParser实现网络爬虫的关键知识点: 1. **HtmlParser库**:HtmlParser是一个强大的HTML解析...
《使用HtmlParser解析HTML网页内容》 在信息技术领域,HTML(HyperText Markup Language)是用于构建和呈现网页的标准标记语言。然而,对于开发者而言,直接处理HTML文本有时是一项挑战,尤其是当需要从中提取特定...
根据给定文件的信息,本文将围绕“Java HTMLParser解析网页源码”的主题展开,深入探讨其功能、工作原理以及在不同场景下的应用方法。 ### Java HTMLParser简介 HTMLParser是用Java编写的开源HTML解析器,它能帮助...