【Java代码】京东商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+爬虫源代码)包含csv和sql格式数据下载可用
生活随笔
收集整理的這篇文章主要介紹了
【Java代码】京东商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+爬虫源代码)包含csv和sql格式数据下载可用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【資源鏈接】
鏈接:https://pan.baidu.com/s/15fuerPIQgmwV1MZEts8jEQ
提取碼:6psl
【包含文件】
1.說明
當前項目需要用到商品分類數據,在網上查了淘寶和京東的首頁,京東 https://www.jd.com/allSort.aspx 的數據更容易獲取。
2.實現
2.1 建表語句
項目用的是GreenPlum數據庫,其他類型的數據庫建表小伙伴兒們自己動手啊 😄
-- 建表 CREATE TABLE "data_commodity_classification" ( "id" VARCHAR ( 32 ), "parent_id" VARCHAR ( 32 ), "level" int2, "name" VARCHAR ( 64 ), "merger_name" VARCHAR ( 255 ) ); -- 注釋 COMMENT ON TABLE "data_commodity_classification" IS '3級商品分類數據表'; COMMENT ON COLUMN "data_commodity_classification"."level" IS '類別等級'; COMMENT ON COLUMN "data_commodity_classification"."name" IS '商品分類'; COMMENT ON COLUMN "data_commodity_classification"."merger_name" IS '商品類別組合名';2.2 Jar包依賴
jsoup是必須的,項目使用了mybatis-plus在保存對象時可以調用.saveBatch()方法,不是必須的。
<!--不用糾結于版本--> <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.2</version> </dependency> <!--不是必須的--> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.0</version> </dependency>2.3 對象封裝
用了lombok為的是在構建對象時用builder來簡化代碼:
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="DataCommodityClassification對象", description="") @Builder public class DataCommodityClassification implements Serializable {private static final long serialVersionUID=1L;private String id;private String parentId;@ApiModelProperty(value = "類別等級")private Integer level;@ApiModelProperty(value = "商品分類")private String name;@ApiModelProperty(value = "商品類別組合名")private String mergerName; }2.4 爬蟲源代碼
html 頁面標簽:
數據獲取邏輯:清除歷史數據 > 爬取最新數據并封裝 > 保存最新數據。
public boolean getCommodityClassificationData() throws IOException {// 首先清除歷史數據LambdaQueryWrapper<DataCommodityClassification> lambdaQuery = Wrappers.lambdaQuery(DataCommodityClassification.class);dataCommodityClassificationService.remove(lambdaQuery);// 處理樹結構ID【隨手就寫了 不知道有沒有更好的方法】AtomicInteger atomicIntegerOne = new AtomicInteger();AtomicInteger atomicIntegerTwo = new AtomicInteger();AtomicInteger atomicIntegerThree = new AtomicInteger();// 結果數據List<DataCommodityClassification> dataCommodityClassificationList = new ArrayList<>();// ************* 以下是爬蟲代碼 *************// 地址信息String url = "https://www.jd.com/allSort.aspx";Document document = Jsoup.parse(new URL(url), 300000);// 獲取包含所有分類數據的根元素Element root = document.getElementsByClass("category-items clearfix").get(0);// 獲取一級分類標簽數據Elements levelOne = root.getElementsByClass("category-item m");levelOne.forEach(one -> {String levelOneData = one.getElementsByClass("item-title").get(0).child(2).text();String oneId = "" + atomicIntegerOne.getAndIncrement();dataCommodityClassificationList.add(DataCommodityClassification.builder().id(oneId).parentId(null).level(0).name(levelOneData).build());// 獲取二級分類標簽數據Elements levelTwo = one.getElementsByClass("items").get(0).getElementsByTag("dl");levelTwo.forEach(two -> {String levelTwoData = two.getElementsByTag("dt").text();String twoId = oneId + atomicIntegerTwo.getAndIncrement();String mergerNameTwo = levelOneData + "," + levelTwoData;dataCommodityClassificationList.add(DataCommodityClassification.builder().id(twoId).parentId(oneId).level(1).name(levelTwoData).mergerName(mergerNameTwo).build());// 獲取三級級分類標簽數據Elements levelThree = two.getElementsByTag("dd").get(0).children();levelThree.forEach(three -> {// 獲取三級分類信息String levelThreeData = three.text();String threeId = twoId + atomicIntegerThree.getAndIncrement();String mergerNameThree = mergerNameTwo + "," + levelThreeData;dataCommodityClassificationList.add(DataCommodityClassification.builder().id(threeId).parentId(twoId).level(2).name(levelThreeData).mergerName(mergerNameThree).build());});});});// 保存最新數據boolean isSaveSuccess = dataCommodityClassificationService.saveBatch(dataCommodityClassificationList);return isSaveSuccess;}3.結果
一級分類的parent_id和merger_name沒有進行處理,不知道在業務使用的過程中有沒有問題。
提供了csv和sql格式的數據,爬取日期是20220310,需要最新數據的話就需要小伙伴兒們運行爬蟲代碼獲取了。
總結
以上是生活随笔為你收集整理的【Java代码】京东商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+爬虫源代码)包含csv和sql格式数据下载可用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux部署】Linux环境 .ra
- 下一篇: 【Windows工具】BBDown.ex