zoukankan      html  css  js  c++  java
  • Java抓任意网页标题乱码jsoup解决方案一例

    同事用Java做了一个抓取任意网页的标题的功能,由于任意网页的HTML的head中meta中指定的charset五花八门,比如常用的utf-8,gbk,gb2312。

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

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

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

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

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

    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,水很深,发现也是路选歪了。

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

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

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

  • 相关阅读:
    RESTful API设计指南(转载)
    理解RESTful架构(转载)
    什么是FreeMaker?
    为了梦,向前冲!
    php时间输出结果减去一分钟
    利用css+js制作下拉列表
    zzz的口胡记
    UOJ507. 【JOISC2020】星座3(贪心)
    vim使用小记
    UOJ#62【UR #5】怎样跑得更快(反演)
  • 原文地址:https://www.cnblogs.com/rgqancy/p/5745162.html
Copyright © 2011-2022 走看看