千流sama 2019-01-04 14:03 采纳率: 0%
浏览 677

使用Jsoup爬取天猫列表页时解析到乱码

想用Jsoup解析天猫商品搜索页面,但是解析后返回的document中所有在URL中传递的搜索关键字都变成了乱码,项目使用的是UTF-8.

 private List<ItemInfo> getFirstPageItemInfoList()   throws IOException,InterruptedException {
        String pageurljd = "http://search.jd.com/Search?keyword=" + pagedata.key_utf8 + "&enc=utf-8";
        String pageurlaz = "http://www.amazon.cn/s/ref=nb_sb_noss_1?__mk_zh_CN=亚马逊网站&url=search-alias%3Daps&field-keywords=" + pagedata.key_utf8;
        String pgurltb = "https://list.tmall.com/search_product.htm?q=" + this.pagedata.key_utf8;

        return getFromURLs(pageurljd, pageurlaz, pgurltb);
    }
public List<ItemInfo> getItemInfoList()
            throws IOException, InterruptedException {
        /**
         * 通过URL获得Document对象
         */
//                try {
//            String gbk=URLEncoder.encode(this.pageurl,"GBK");
//            System.out.println(gbk);
//        } catch (UnsupportedEncodingException e) {
//            e.printStackTrace();
//        }
        Document doc = Jsoup.connect(this.pageurl).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36").timeout(3000).maxBodySize(0).post();
        //Document doc = Jsoup.parse(new URL(this.pageurl).openStream(), "GBK", this.pageurl);

        pagedata.tbpage = this.getPageNum(doc);

用浏览器查看天猫后台发现它的网页编码是meta charset=gbk,是因为这个原因吗,怎么修改好呢

  • 写回答

1条回答 默认 最新

  • 千流sama 2019-01-04 16:01
    关注

    解决了,引入了java的URLEncoder,把中文转码成URL编码就可以爬取数据了,会在前台解析成中文,代码和加包如下:

    package mytest;
    
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URLEncoder;
    
    import java.lang.String;
    
    public class TBJsoupTest {
    
        public static void main(String[] args) throws MalformedURLException, IOException {
    
            String keyword = URLEncoder.encode("帽子");
            Document doc = Jsoup.connect("https://list.tmall.com/search_product.htm?q="+keyword).userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36").timeout(3000).maxBodySize(0).post();
            //Document doc = Jsoup.parse(new URL("https://list.tmall.com/search_product.htm?q="+key).openStream(), "GBK", "https://list.tmall.com/search_product.htm?q="+key);
            System.out.println(doc.html());
    
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?