背景:公司项目要对接第三方商城的商品到自己的商城来卖,商品详情给了个链接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>