zoukankan      html  css  js  c++  java
  • java解析HTML之神器------Jsoup

    背景:公司项目要对接第三方商城的商品到自己的商城来卖,商品详情给了个链接url,因为对方的商品详情有他们的物流说明,售后信息,所以要求去掉这部分的代码

    @Test
        public void getItemDetail() throws IOException {
    
            String url="https://www.xxx.com";//此处url作了处理,不能提供真实url,防止泄密,侵权,大家可以自己找一个url来完
            String itemDetail = getItemDetail(url);
            System.out.println(itemDetail);
        }
    
        private String getItemDetail(String url){
            //思路:通过请求获取html文本,通过选择器找到对应的标签,然后找到该标签的父标签,最后将父标签移除
            String itemDetailHtml = NetUtil.httpGet(url, Maps.newHashMap());//获取商品详情
            if(StringUtils.isBlank(itemDetailHtml)){
    
                return null;
            }
            Document parse = Jsoup.parse(itemDetailHtml);
            //也可以直接使用url来解析,下面注释所示
            //URL linkUrl = new URL(url);
           // Document parse=Jsoup.parse(linkUrl,5000);
            if(parse==null){
    
                return null;
            }
            //干掉头部图片
            //Jsoup强大之处在于可以使用css选择器,但要注意img[src='http://www.konvy.com/static/team/Banner/3.jpg'],属性值这里加了引号,这样会取不到值,下面才是正确的
            Elements topImgEls = parse.select("img[src=http://www.konvy.com/static/team/Banner/3.jpg]"); //头部url
            if(null!=topImgEls && topImgEls.size()>=1){
                Element topImgEl = topImgEls.get(0);//获取第一个元素
                Element topPEL = topImgEl.parent();//获取该img标签的父标签P标签
                topPEL.remove();//整个p标签移除,元素可以将自己从整个document中移除
            }
            //干掉底部图片
            Elements aEls= parse.select("a[href=http://www.konvy.com/account/signup.php]");//底部第一张图片
            if(null!=aEls && aEls.size()>=1){
                Element aEL = aEls.get(0);//获取底部a标签
                Element pBottom1 = aEL.parent();//获取底部a标签的父标签P
                pBottom1.remove();//底部标签自己移除自己
            }
    
            Elements imgElsBottom = parse.select("img[src=http://www.konvy.com/static/team/Banner/shipping%2024h.jpg]");//底部第二张图片
            if(null!=imgElsBottom && imgElsBottom.size()>0){
                Element imgBttom = imgElsBottom .get(0); //底部第二张图片
                Element pBottom2 = imgBttom.parent();//底部第二张图片的父标签
                pBottom2.remove();//底部第二张图片的父标签进行移除
            }
    
            return parse.toString();
        }

     依赖:<dependency>
        <groupId>org.jsoup</groupId>
       <artifactId>com.springsource.org.jsoup</artifactId>
       <version>1.5.2</version>
      </dependency>

  • 相关阅读:
    PHP trim() 函数
    php 计算2个日期的相差天数
    php date('Y-n-j')的和date('Y-m-d')的区别
    转移服务器
    Invalid argument supplied for foreach()解决办法
    wordpress 后台忘记密码怎么办
    qrcode js插件生成微信二维码
    thinkphp5 注释
    tp5 新增完数据,获取id
    resstFul服务文件上传下载
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10676121.html
Copyright © 2011-2022 走看看