<<<<<<< .mine =======
当前位置: 首页 > SEO > 通过java如何使用htmlparser获取页面的字符编码

通过java如何使用htmlparser获取页面的字符编码

时间:2012-02-23 16:12:41
在抓取页面内容的时候,获取到页面的字符编码是非常重要的,要不然抓取到的内容由于编码的不同很容易出现乱码,那么如何获取页面的编码呢,在这里我用java语言来作一下演示。

字符编码

一般来说,在网上查到的代码都是采用这种方式来获取:

HttpURLConnection a = (HttpURLConnection) new URL("http://"+domain).openConnection();
String encoding = a.getContentEncoding();
log.info(encoding);

不过,很遗憾,采用这段代码来实现java获取页面的编码,好像没什么效果,返回不了页面的编码。

既然这种办法不灵,那就换种方法。平时使用java来获取页面的内容,用的最多的就是htmlparser,于是,我决定还是采用htmlparser来实现页面编码的获取。

1,确定目标。对于html页面来说,一般都有确定编码的语句:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

可以通过这一行的特征来取出网页的编码。

2,选出特征。

1)它是meta标签

2)具有http-equiv属性值为Content-Type

3)将属性content中的值取出,先采用“;”分拆取第二个元素,再采用“=”分拆取第二个元素

3,一切就绪,编码实现。通过目标的选取,以及特征的勾画,已经可以找到解决方法了,像我上一遍htmlparser中filter使用实战中讲的类似,还是采用AndFilter、NodeFilter以及HasAttributeFilter实现,代码如下:

public static String getContentEncoding(String url){
String encoding = "";
Parser parser;
try {
parser = new Parser();
parser.setURL(url);
parser.setEncoding(parser.getEncoding());
NodeFilter tagFilter = new TagNameFilter("meta");
HasAttributeFilter haf = new HasAttributeFilter("http-equiv", "Content-Type");
AndFilter af = new AndFilter(tagFilter,haf);
NodeList nodes = parser.extractAllNodesThatMatch(af);
if (nodes != null) {
TagNode liTag = (TagNode) nodes.elementAt(0);
encoding = liTag.getAttribute("content").split(";")[1].trim();
encoding = encoding.split("=")[1].trim();
}
} catch (ParserException e) {
}
return encoding;
}

先介绍到这里,希望这篇文章能给你带来页面字符编码获取方式的另外一种思路。

相关文章

《百度SEO官方指南2.0》网站建设内容精华详解

百度一向支持SEO,毕竟中国绝大部分站长因为收入低的原因,都不会选择PPC推广,因此,通过改良网站的设计、提供更高质量的...

物业保洁行业网站SEO优化分析

本次物业保洁行业SEO优化分析是根据这段时间我给保洁行业拜访得到的总结。首先对于保洁行业是属于服务行行业。根据现在社会的...

听道讲坛内容分享

通过微博了解到听道讲坛的活动,虽然之前没有听说过,但是看到有于扬先生和愤怒小鸟CEO,于是就报名参加了。没想到,参加的竟...

起点创业营活动总结-叶锋谈创业投资的“四好标准”

这是第二次参加起点创业营举办的投资人的讲座,之前一次是凌代鸿,这一次是叶锋。虽然叶锋老师也是投资传统领域的多一些,但是分...

网站SEO架构优化总结

最近文军信息的销售很给力,签单速度很快,网站优化的项目很多,理所当然,网站的SEO架构优化即改站的工作变得慢慢多起来了,...
沪ICP备10034044号-12
400-685-0732
400-685-0732 在线咨询