提交 63f45184 authored 作者: 梁业锦's avatar 梁业锦 💬

修改adidas爬虫的BUG

上级 c1cfd468
...@@ -8,6 +8,8 @@ import com.diaoyun.zion.master.util.TranslateHelper; ...@@ -8,6 +8,8 @@ import com.diaoyun.zion.master.util.TranslateHelper;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -33,6 +35,7 @@ public class AdidasSpider implements IItemSpider { ...@@ -33,6 +35,7 @@ public class AdidasSpider implements IItemSpider {
/** /**
* Adidas 数据爬虫 * Adidas 数据爬虫
*
* @param targetUrl 接收的商品详情路径 * @param targetUrl 接收的商品详情路径
* @return 格式化与翻译后的 Json 数据 * @return 格式化与翻译后的 Json 数据
*/ */
...@@ -55,6 +58,7 @@ public class AdidasSpider implements IItemSpider { ...@@ -55,6 +58,7 @@ public class AdidasSpider implements IItemSpider {
/** /**
* 格式化返回数据 * 格式化返回数据
*
* @param content 主要的页面数据 * @param content 主要的页面数据
* @return 格式化后的数据 * @return 格式化后的数据
*/ */
...@@ -81,38 +85,29 @@ public class AdidasSpider implements IItemSpider { ...@@ -81,38 +85,29 @@ public class AdidasSpider implements IItemSpider {
// 解析为 Document 对象 // 解析为 Document 对象
Document document = Jsoup.parse(content); Document document = Jsoup.parse(content);
// 获取颜色(型号)
List<String> colorNoList = document.select("div[class=pdp-color events-color-close]")
.select("ul").select("li").eachAttr("code");
// 获取价格 // 获取价格
String fullPrice = document.select("input[id=salePrice]").attr("value"); String originalFullPrice = document.select("input[id=salePrice]").attr("value");
String originalFullPrice = exchangeRate(fullPrice); originalFullPrice = exchangeRate(originalFullPrice);
// 获取尺码
List<String> pSizeList = document.select("div[class=overview product-size]")
.select("ul").select("li").eachText();
//////////////////////////////////// 获取商品基本信息 //////////////////////////// //////////////////////////////////// 获取商品基本信息 ////////////////////////////
itemInfo.setShopName("Adidas"); itemInfo.setShopName("Adidas");
itemInfo.setShopUrl("https://www.adidas.com"); itemInfo.setShopUrl("https://www.adidas.com");
itemInfo.setItemId(pId); itemInfo.setItemId(pId);
itemInfo.setTitle(document.select("input[id=itemTitle]").attr("value")); String colorNo = document.select("input[id=itemCode]").attr("value");
itemInfo.setTitle(colorNo);
itemInfo.setPic(document.select("input[id=shoppingcartpic]").attr("value")); itemInfo.setPic(document.select("input[id=shoppingcartpic]").attr("value"));
//////////////////////////////////// 获取商品基本信息End ///////////////////////// //////////////////////////////////// 获取商品基本信息End /////////////////////////
//////////////////////////////////// 获取商品颜色属性 //////////////////////////// //////////////////////////////////// 获取商品颜色属性 ////////////////////////////
for (String colorNo : colorNoList) { Elements colorEle = document.select("ul[id=itemColor]").select("li");
String targetUrl = "https://www.adidas.com.cn/item/othercolor?itemCode=" + pId; for (Element colorElement : colorEle) {
String colorContent = HttpClientUtil.getContentByUrl(targetUrl, PlatformEnum.ADIDAS.getValue());
Document colorDoc = Jsoup.parse(colorContent); String color = colorElement.attr("code");
String imgUrl = colorElement.select("img").attr("lazy-src");
String color = colorDoc.select("input[id=colorDisPaly]").attr("value");
String imgUrl = colorDoc.select("input[id=shoppingcartpic]").attr("value");
ProductProp productPropColor = new ProductProp(); ProductProp productPropColor = new ProductProp();
productPropColor.setPropId(colorNo); productPropColor.setPropId(color);
productPropColor.setPropName(color); productPropColor.setPropName(color);
productPropColor.setImage(imgUrl); productPropColor.setImage(imgUrl);
propSet.add(productPropColor); propSet.add(productPropColor);
...@@ -125,14 +120,13 @@ public class AdidasSpider implements IItemSpider { ...@@ -125,14 +120,13 @@ public class AdidasSpider implements IItemSpider {
} }
//////////////////////////////////// 获取商品颜色属性 END //////////////////////////////////////////// //////////////////////////////////// 获取商品颜色属性 END ////////////////////////////////////////////
for (int i = 0; i < pSizeList.size(); i++) { Elements sizeEles = document.select("div[class=overview product-size]").select("li");
for (Element sizeEle : sizeEles) {
String size = sizeEle.attr("dispalySize");
///////////////////////// 获取商品尺码属性 //////////////////// ///////////////////////// 获取商品尺码属性 ////////////////////
String sizeNo = pSizeList.get(i);
String size = sizeNo;
ProductProp productPropSize = new ProductProp(); ProductProp productPropSize = new ProductProp();
productPropSize.setPropId(sizeNo); productPropSize.setPropId(size);
productPropSize.setPropName(size); productPropSize.setPropName(size);
sizePropSet.add(productPropSize); sizePropSet.add(productPropSize);
if (productPropSet.get("尺码") == null) { if (productPropSet.get("尺码") == null) {
...@@ -145,7 +139,7 @@ public class AdidasSpider implements IItemSpider { ...@@ -145,7 +139,7 @@ public class AdidasSpider implements IItemSpider {
///////////////////////// 获取商品尺码属性 END//////////////////// ///////////////////////// 获取商品尺码属性 END////////////////////
// 库存对应的id(颜色id + 尺码id) // 库存对应的id(颜色id + 尺码id)
String skuStr = ";" + colorNo + ";" + pSizeList.get(i) + ";"; String skuStr = ";" + colorNo + ";" + size + ";";
//////////////////////////////////// 获取库存 //////////////////////////////////////////// //////////////////////////////////// 获取库存 ////////////////////////////////////////////
// 设置:商品包含库存信息 // 设置:商品包含库存信息
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论