yujian
2019-01-22 88b54772dbcf5ecab1e2316e4e4626ac901b8908
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -31,6 +31,7 @@
import org.w3c.dom.NodeList;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.NumberUtil;
import org.yeshi.utils.entity.ProxyIP;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
@@ -928,12 +929,14 @@
      tg.setId(tb.getId());
      tg.setAuctionId(tb.getAuctionId());
      tg.setBiz30day(tb.getBiz30day());
      tg.setSalesCount(TaoBaoUtil.getSaleCount(tb.getBiz30day()));
      tg.setTitle(tb.getTitle());
      tg.setPictUrl(tb.getPictUrl() + "_200x200");
      tg.setPictUrl(tb.getPictUrl());
      tg.setZkPrice(tb.getZkPrice());
      tg.setAuctionUrl(tb.getAuctionUrl());
      tg.setReservePrice(tb.getReservePrice());
      tg.setUserType(tb.getUserType());
      tg.setImgList(tb.getImgList());
      if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1) {
         TaoBaoQuanInfo quanInfo = new TaoBaoQuanInfo();
@@ -1242,10 +1245,7 @@
         }
         return parsePhoneTmAndTb(id);
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e, "无法解析到淘宝商品ID", burl);
         } catch (Exception e1) {
         }
         LogHelper.error("无法解析到淘宝商品ID:"+burl);
         return null;
      }
@@ -1550,34 +1550,30 @@
      long startTime = System.currentTimeMillis();
      JSONObject data = new JSONObject();
      data.put("itemNumId", auctionId + "");
      data.put("id", auctionId + "");
      String url = "";
      try {
         url = String.format(
               "https://acs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?data=%s&qq-pf-to=pcqq.group",
               URLEncoder.encode(data.toString(), "UTF-8"));
               "https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdesc/6.0/?data=%s&callback=GoodsLogic.showTuwen&_=%s",
               URLEncoder.encode(data.toString(), "UTF-8"), System.currentTimeMillis() + "");
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
      String result = HttpUtil.get(url);
      result = result.replace("GoodsLogic.showTuwen(", "").replace(")", "");
      data = JSONObject.fromObject(result);
      String moduleDescUrl = data.optJSONObject("data").optJSONObject("item").optString("moduleDescUrl");
      if (!StringUtil.isNullOrEmpty(moduleDescUrl)) {
      String pcDescContent = data.optJSONObject("data").optString("pcDescContent");
      System.out.println(pcDescContent);
      if (!StringUtil.isNullOrEmpty(pcDescContent)) {
         try {
            result = HttpUtil.get("http:" + moduleDescUrl);
            JSONObject resultJSON = JSONObject.fromObject(result);
            JSONArray itemsArray = resultJSON.optJSONObject("data").optJSONArray("children");
            for (int i = 0; i < itemsArray.size(); i++) {
               // picUrl
               JSONObject params = itemsArray.optJSONObject(i).optJSONObject("params");
               if (params.keySet().contains("picUrl")) {
                  String pictureUrl = params.optString("picUrl");
                  JSONObject sizeJSON = params.optJSONObject("size");
                  int width = sizeJSON.optInt("width");
                  int height = sizeJSON.optInt("height");
                  if (!StringUtil.isNullOrEmpty(pictureUrl))
                     imgList.add(new ImageInfo(pictureUrl, width, height));
            Document doc = Jsoup.parse(pcDescContent);
            Elements eles = doc.getElementsByTag("img");
            for (int i = 0; i < eles.size(); i++) {
               String imgSrc = eles.get(i).attr("src");
               if (imgSrc.endsWith(".jpg")) {
                  if (!imgSrc.startsWith("http"))
                     imgSrc = "https:" + imgSrc;
                  imgList.add(new ImageInfo(imgSrc, 0, 0));
               }
            }
         } catch (Exception e) {
@@ -1593,36 +1589,44 @@
    * @return
    */
   public static List<ImageInfo> getTBDetailImageWithSizev2(Long auctionId) {
   public static List<ImageInfo> getTBDetailImageWithSizev2(Long auctionId, ProxyIP ip) {
      List<ImageInfo> imgList = new ArrayList<>();
      try {
         Map<String, String> headers = new HashMap<>();
         headers.put("User-Agent",
               "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
         headers.put("Referer", "https://detail.tmall.com/item.htm?id=" + auctionId);
         String url = String.format("https://hws.m.taobao.com/cache/desc/5.0?id=" + auctionId);
         String result = HttpUtil.get(url);
         JSONObject data = JSONObject.fromObject(result);
         String result = HttpUtil.get(url, headers, ip);
         if (!StringUtil.isNullOrEmpty(result)) {
            JSONObject data = JSONObject.fromObject(result);
         JSONArray array = data.optJSONObject("wdescContent").optJSONArray("pages");
         if (array != null) {
            String html = "";
            for (int i = 0; i < array.size(); i++) {
               String itemStr = array.optString(i).replace("<img", "<a").replace("</img>", "<a>");
               html += itemStr;
            }
            Document doc = Jsoup.parse(html);
            Elements items = doc.getElementsByTag("a");
            for (int i = 0; i < items.size(); i++) {
               ImageInfo img = new ImageInfo();
               Element item = items.get(i);
               if (StringUtil.isNullOrEmpty(item.ownText()))
                  continue;
               if (!StringUtil.isNullOrEmpty(item.attr("size"))) {
                  img.setWidth(Integer.parseInt(item.attr("size").split("x")[0]));
                  img.setHeight(Integer.parseInt(item.attr("size").split("x")[1]));
            JSONArray array = data.optJSONObject("wdescContent").optJSONArray("pages");
            if (array != null) {
               String html = "";
               for (int i = 0; i < array.size(); i++) {
                  String itemStr = array.optString(i).replace("<img", "<a").replace("</img>", "<a>");
                  html += itemStr;
               }
               if (item.ownText().startsWith("http"))
                  img.setPicture(item.ownText().trim());
               else
                  img.setPicture("http:" + item.ownText().trim());
               imgList.add(img);
               Document doc = Jsoup.parse(html);
               Elements items = doc.getElementsByTag("a");
               for (int i = 0; i < items.size(); i++) {
                  ImageInfo img = new ImageInfo();
                  Element item = items.get(i);
                  if (StringUtil.isNullOrEmpty(item.ownText()))
                     continue;
                  if (!StringUtil.isNullOrEmpty(item.attr("size"))) {
                     img.setWidth(Integer.parseInt(item.attr("size").split("x")[0]));
                     img.setHeight(Integer.parseInt(item.attr("size").split("x")[1]));
                  }
                  if (item.ownText().startsWith("http"))
                     img.setPicture(item.ownText().trim());
                  else
                     img.setPicture("http:" + item.ownText().trim());
                  if (img != null && img.getPicture() != null && img.getPicture().endsWith(".jpg"))
                     imgList.add(img);
               }
            }
         }