Java抓任意网页标题乱码jsoup解决方案一例

同事用Java作了一个抓取任意网页的标题的功能,因为任意网页的HTML的head中meta中指定的charset五花八门,好比经常使用的utf-8,gbk,gb2312。html

本身写代码处理,短期内,发现各类状况太难考虑周全,老是抓取乱码。面临的挑战:也可能有meta也可能没meta,即便有meta也可能大写也可能小写,即便大小写搞定也可能带空白字符,总之各类意想不到。不过呢,搜索引擎爬虫抓到的网页咋就不会乱码呢?java

百度查这个问题基本无解,bing查这个问题也是无用功居多,只好开上蓝灯上谷歌,三个备选方案:git

1.上StackOverflow看是否有最佳答案apache

http://stackoverflow.com/questions/10996726/encoding-of-response-is-incorrect-using-apache-httpclientoracle

Stackoverflow上说若是HTTP client组件不支持,common http也不支持的话,Spring's RESTTemplate能干这事。我查了查有点玄。app

2.把HTML的元素模型化,提取模型。搜索引擎

http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm编码

用Oralce的XML Developer's Kit,Example里包含一个操做XML的DOM的AutoDetectEncoding.java类,挺欣喜,惋惜下载XDK和这个Example有点费劲。可是后来比较一下XML和HTML的编码元素及方式确实不同,虽然HTML能够认为是特殊的XML,都是遵循DOM模型,可是DOM不一样的Level,水很深,发现也是路选歪了。code

3.使用相似搜索殷勤的爬虫程序或组件,还得是java的。htm

http://www.huqiwen.com/2012/05/03/use-jsoup-analytics-html-document/

这个帖子原做者也说了原来都是htmlparser,后来都鸟枪换炮用jsoup了。炮果真比枪好用。中间还从CSDN找到一个网友的帖子,愿意提供本身在gitbub上开源爬虫,测测网页说是能行,就是会死机,让我怎么用,不能给本身埋雷,宁肯不解决。试用jsoup,发现它既是最爱了。

相关文章
相关标签/搜索