java解析HTML之神器------Jsoup

时间:2021-09-25 08:13:29

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

java解析HTML之神器------Jsoup

java解析HTML之神器------Jsoup

java解析HTML之神器------Jsoup

@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();
    }

java解析HTML之神器------Jsoup

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