宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產品動態(tài)
精選推薦

從0到1:用Java爬蟲優(yōu)雅地獲取京東商品詳情(附完整代碼)

管理 管理 編輯 刪除

在電商數據驅動的時代,商品詳情數據成為市場分析、價格監(jiān)控、競品調研的核心燃料。京東作為國內頭部電商平臺,其商品信息豐富、更新頻繁,是數據開發(fā)者眼中的“香餑餑”。

本文將帶你從0到1,用Java語言實現一個可運行的京東商品爬蟲,不僅能抓取商品標題、價格、圖片、評價數,還能應對常見的反爬策略。全文附完整代碼,復制粘貼即可運行。



一、為什么選擇Java做爬蟲?

雖然Python是爬蟲界的“老大哥”,但Java在企業(yè)級開發(fā)中依舊占據主流,具備以下優(yōu)勢:

  • 并發(fā)處理強:利用多線程、線程池、異步IO,可輕松實現高并發(fā)抓?。?/li>
  • 生態(tài)成熟:Jsoup、HttpClient、Jackson等庫功能強大;
  • 部署方便:可直接打包為JAR,運行在服務器或容器中;
  • 與業(yè)務系統(tǒng)無縫集成:采集后可直接入庫、入ES、入Kafka,打通數據閉環(huán)。


二、目標明確:我們要抓什么?

以京東商品詳情頁為例,我們要抓取以下字段:

字段名示例值
商品標題Apple iPhone 15 128G 藍色
商品價格5999.00
商品圖片https://img10.360buyimg.com/...
店鋪名稱京東自營旗艦店
評價數量50000+


三、技術選型


模塊技術方案
頁面下載Jsoup / HttpClient
HTML解析Jsoup CSS選擇器
JSON解析Jackson / Fastjson
代理與限速動態(tài)代理池 + 隨機延時
反爬策略隨機UA、Referer、IP切換


四、環(huán)境準備

1. 創(chuàng)建Maven項目

bash

mvn archetype:generate -DgroupId=com.jd.crawler -DartifactId=jd-crawler

2. 引入依賴(pom.xml

xml

<dependencies>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.17.2</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson2</artifactId>
        <version>2.0.42</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.14</version>
    </dependency>
</dependencies>


五、核心代碼實現

1. 下載商品詳情頁

java

public class HttpUtils {
    public static String getHtml(String url) throws IOException {
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet request = new HttpGet(url);
        request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
        request.setHeader("Referer", "https://search.jd.com/");
        CloseableHttpResponse response = client.execute(request);
        return EntityUtils.toString(response.getEntity());
    }
}


2. 解析商品詳情

java

public class JDProductParser {
    public static Product parse(String skuId) throws IOException {
        String url = "https://item.jd.com/" + skuId + ".html";
        Document doc = Jsoup.connect(url)
                .userAgent("Mozilla/5.0")
                .header("Referer", "https://search.jd.com/")
                .get();

        String title = doc.select("div.sku-name").text().trim();
        String shop = doc.select("div.J-hove-wrap .name").text();
        String img = doc.select("img#spec-img").attr("src");
        if (!img.startsWith("http")) img = "https:" + img;

        // 獲取價格(異步接口)
        String priceUrl = "https://p.3.cn/prices/mgets?skuIds=J_" + skuId;
        String priceJson = HttpUtils.getHtml(priceUrl);
        String price = JSON.parseArray(priceJson).getJSONObject(0).getString("p");

        // 獲取評價數
        String commentUrl = "https://club.jd.com/comment/productCommentSummaries.action?referenceIds=" + skuId;
        String commentJson = HttpUtils.getHtml(commentUrl);
        int commentCount = JSON.parseObject(commentJson)
                .getJSONArray("CommentsCount")
                .getJSONObject(0)
                .getIntValue("CommentCount");

        return new Product(skuId, title, price, img, shop, commentCount);
    }
}


3. 商品實體類

java

@Data
@AllArgsConstructor
public class Product {
    private String skuId;
    private String title;
    private String price;
    private String image;
    private String shop;
    private int commentCount;
}


4. 啟動類

java

public class CrawlerApp {
    public static void main(String[] args) throws IOException {
        String skuId = "100035288046"; // iPhone 15
        Product product = JDProductParser.parse(skuId);
        System.out.println(JSON.toJSONString(product, true));
    }
}


六、運行效果(控制臺輸出)

JSON

{
  "skuId": "100035288046",
  "title": "Apple iPhone 15 128G 藍色",
  "price": "5999.00",
  "image": "https://img10.360buyimg.com/n1/s450x450_jfs/t1/123456.jpg",
  "shop": "京東自營旗艦店",
  "commentCount": 50000
}


七、反爬策略與優(yōu)化建議


問題解決方案
IP被封使用代理池(如阿布云、站大爺)
UA被識別隨機User-Agent池
滑塊驗證碼使用打碼平臺或人工介入
接口限流控制頻率,隨機延時(1~3秒)
簽名接口分析JS加密邏輯,或調用官方API


八、進階玩法(等你來挑戰(zhàn))

  • ? 多線程抓取 + 隊列調度(支持百萬SKU)
  • ? 接入Spring Boot + MyBatis,實時入庫
  • ? 接入Elasticsearch,實現商品搜索
  • ? 接入Kafka,實時流式處理
  • ? 可視化展示:Spring Boot + ECharts


九、合法合規(guī)提醒

  • ? 禁止抓取用戶隱私信息(如收貨地址、手機號)
  • ? 禁止高并發(fā)攻擊京東服務器
  • ? 對外商用需獲得京東授權
  • ? 建議優(yōu)先使用官方API(open.jd.com)


十、結語

本文從環(huán)境搭建、代碼實現、反爬策略到進階方向,系統(tǒng)講解了如何用Java爬蟲獲取京東商品詳情。希望你不僅能跑通代碼,更能在此基礎上構建自己的數據采集系統(tǒng)。

如果你還想看:
  • “如何用Java爬取京東評論并做情感分析”
  • “如何用Java爬取京東秒殺庫存”
  • “如何用Spring Boot構建爬蟲調度平臺”
  • 歡迎留言告訴我,我們下期繼續(xù)!

點贊 + 收藏 + 轉發(fā),你的支持是我持續(xù)輸出的最大動力!

請登錄后查看

one-Jason 最后編輯于2025-09-23 16:19:34

快捷回復
回復
回復
回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
排序 默認正序 回復倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復' : '回復'}}
刪除
回復
回復

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復' : '回復'}}
刪除
回復
回復
查看更多
打賞
已打賞¥{{reward_price}}
75
{{like_count}}
{{collect_count}}
添加回復 ({{post_count}})

相關推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復
回復
問題:
問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內的數值
打賞成功
¥{{price}}
完成 確認打賞

微信登錄/注冊

切換手機號登錄

{{ bind_phone ? '綁定手機' : '手機登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服