在電商數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,商品詳情數(shù)據(jù)成為市場(chǎng)分析、價(jià)格監(jiān)控、競(jìng)品調(diào)研的核心燃料。京東作為國(guó)內(nèi)頭部電商平臺(tái),其商品信息豐富、更新頻繁,是數(shù)據(jù)開(kāi)發(fā)者眼中的“香餑餑”。
本文將帶你從 0 到 1,用PHP 語(yǔ)言實(shí)現(xiàn)一個(gè)可運(yùn)行的京東商品爬蟲(chóng),不僅能抓取商品標(biāo)題、價(jià)格、圖片、評(píng)價(jià)數(shù),還能應(yīng)對(duì)常見(jiàn)的反爬策略。全文附完整代碼,復(fù)制粘貼即可運(yùn)行。
一、為什么選擇 PHP 做爬蟲(chóng)?
雖然 Python 是爬蟲(chóng)界的“老大哥”,但 PHP 在 Web 開(kāi)發(fā)領(lǐng)域依舊占據(jù)主流,具備以下優(yōu)勢(shì):
語(yǔ)法簡(jiǎn)單:Web 開(kāi)發(fā)者一鍵切換;
庫(kù)生態(tài)豐富:Guzzle、Symfony DomCrawler、Simple HTML DOM、Swoole;
部署方便:直接 fpm 或 CLI,無(wú)需額外環(huán)境;
與業(yè)務(wù)無(wú)縫集成:爬完直接 Laravel 入庫(kù)、隊(duì)列、通知;
并發(fā)能力強(qiáng):Swoole 協(xié)程輕松 10k QPS。
一句話:如果你本來(lái)就在寫(xiě) Laravel,用 PHP 寫(xiě)爬蟲(chóng)等于「順路」。
二、目標(biāo)明確:我們要抓什么?
以京東商品詳情頁(yè)為例,我們要抓取以下字段:

三、技術(shù)選型

四、環(huán)境準(zhǔn)備
1. 創(chuàng)建項(xiàng)目
bash
mkdir jd-php-crawler && cd jd-php-crawler composer init --name="demo/jd-crawler" -s dev
2. 安裝依賴
bash
composer require guzzlehttp/guzzle symfony/dom-crawler symfony/css-selector fakerphp/faker
五、核心代碼實(shí)現(xiàn)
1. 創(chuàng)建爬蟲(chóng)類
php
?php
// src/JdSpider.php
namespace Demo;
use GuzzleHttpClient;
use SymfonyComponentDomCrawlerCrawler;
class JdSpider
{
private Client $client;
public function __construct()
{
$this-?>client = new Client([
'timeout' => 10,
'headers' => [
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer' => 'https://search.jd.com/',
],
]);
}
public function fetchProduct(string $sku): array
{
// 1. 詳情頁(yè)
$url = "https://item.jd.com/{$sku}.html";
$html = $this->client->get($url)->getBody()->getContents();
$crawler = new Crawler($html);
$title = $crawler->filter('div.sku-name')->text('');
$shop = $crawler->filter('div.J-hove-wrap .name')->text('');
$img = $crawler->filter('img#spec-img')->attr('src');
if (str_starts_with($img, '//')) {
$img = 'https:' . $img;
}
// 2. 價(jià)格
$priceUrl = "https://p.3.cn/prices/mgets?skuIds=J_{$sku}";
$priceJson = json_decode($this->client->get($priceUrl)->getBody(), true);
$price = $priceJson[0]['p'] ?? '0';
// 3. 評(píng)價(jià)數(shù)
$cmtUrl = "https://club.jd.com/comment/productCommentSummaries.action?referenceIds={$sku}";
$cmtJson = json_decode($this->client->get($cmtUrl)->getBody(), true);
$commentCount = $cmtJson['CommentsCount'][0]['CommentCount'] ?? 0;
return [
'sku' => $sku,
'title' => trim($title),
'price' => $price,
'comment_count' => $commentCount,
'shop' => trim($shop),
'img' => $img,
'crawled_at' => date('Y-m-d H:i:s'),
];
}
}
2. 創(chuàng)建入口文件
php
#!/usr/bin/env php ?php require __DIR__ . '/vendor/autoload.php'; use DemoJdSpider; $sku = $argv[1] ?? '100035288046'; $spider = new JdSpider(); $data = $spider-?>fetchProduct($sku); echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
3. 運(yùn)行腳本
bash
php bin/jd.php 100035288046
4. 運(yùn)行結(jié)果示例
JSON
{
"sku": "100035288046",
"title": "Apple iPhone 15 128GB 藍(lán)色",
"price": "5999.00",
"comment_count": 50000,
"shop": "京東自營(yíng)旗艦店",
"img": "https://img10.360buyimg.com/n1/s450x450_jfs/t1/123456.jpg",
"crawled_at": "2025-09-23 14:30:00"
}
六、反爬策略與優(yōu)化建議

七、進(jìn)階玩法(等你來(lái)挑戰(zhàn))
? 多進(jìn)程抓取 + 隊(duì)列調(diào)度(支持百萬(wàn) SKU)
? 接入 Laravel,實(shí)時(shí)入庫(kù)
? 接入 Elasticsearch,實(shí)現(xiàn)商品搜索
? 接入 Kafka,實(shí)時(shí)流式處理
? 可視化展示:Laravel + Vue + ECharts
八、合法合規(guī)提醒
? 禁止抓取用戶隱私信息(如收貨地址、手機(jī)號(hào))
? 禁止高并發(fā)攻擊京東服務(wù)器
? 對(duì)外商用需獲得京東授權(quán)
? 建議優(yōu)先使用官方 API(open.jd.com)
九、結(jié)語(yǔ)
本文從環(huán)境搭建、代碼實(shí)現(xiàn)、反爬策略到進(jìn)階方向,系統(tǒng)講解了如何用PHP 爬蟲(chóng)獲取京東商品詳情。希望你不僅能跑通代碼,更能在此基礎(chǔ)上構(gòu)建自己的數(shù)據(jù)采集系統(tǒng)。
審核編輯 黃宇
-
PHP
+關(guān)注
關(guān)注
0文章
459瀏覽量
28304 -
京東
+關(guān)注
關(guān)注
2文章
1056瀏覽量
49831 -
爬蟲(chóng)
+關(guān)注
關(guān)注
0文章
86瀏覽量
7857
發(fā)布評(píng)論請(qǐng)先 登錄
0基礎(chǔ)入門(mén)Python爬蟲(chóng)實(shí)戰(zhàn)課
python爬蟲(chóng)實(shí)戰(zhàn):京東圖片爬蟲(chóng)
PHP從入門(mén)到精通
PHP從入門(mén)到精通(免費(fèi))
用Python寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)
如何利用京東商品詳情id拿到商品的詳細(xì)信息 示例展示
eBay 商品詳情 API 深度解析:從基礎(chǔ)信息到變體數(shù)據(jù)獲取全方案
別踩分頁(yè)坑!京東商品詳情接口實(shí)戰(zhàn)指南:從并發(fā)優(yōu)化到數(shù)據(jù)完整性閉環(huán)
京東商品詳情接口實(shí)戰(zhàn)解析:從調(diào)用優(yōu)化到商業(yè)價(jià)值挖掘(附避坑代碼)
API實(shí)戰(zhàn)指南:如何高效采集京東商品詳情數(shù)據(jù)?這幾個(gè)接口必須掌握!
搜索關(guān)鍵詞獲取商品詳情接口的設(shè)計(jì)與實(shí)現(xiàn)
搜索商品ID獲取商品詳情接口
閑魚(yú)平臺(tái)獲取商品詳情API接口

從 0 到 1:用 PHP 爬蟲(chóng)優(yōu)雅地拿下京東商品詳情
評(píng)論