0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从 0 到 1:用 PHP 爬虫优雅地拿下京东商品详情

刘大雷 来源:jf_82280871 作者:jf_82280871 2025-09-23 16:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在电商数据驱动的时代,商品详情数据成为市场分析、价格监控、竞品调研的核心燃料。京东作为国内头部电商平台,其商品信息丰富、更新频繁,是数据开发者眼中的“香饽饽”。

本文将带你从 0 到 1,用PHP 语言实现一个可运行的京东商品爬虫,不仅能抓取商品标题、价格、图片、评价数,还能应对常见的反爬策略。全文附完整代码,复制粘贴即可运行

一、为什么选择 PHP 做爬虫?

虽然 Python 是爬虫界的“老大哥”,但 PHP 在 Web 开发领域依旧占据主流,具备以下优势:

语法简单:Web 开发者一键切换;

库生态丰富:Guzzle、Symfony DomCrawler、Simple HTML DOM、Swoole;

部署方便:直接 fpm 或 CLI,无需额外环境;

与业务无缝集成:爬完直接 Laravel 入库、队列、通知;

并发能力强:Swoole 协程轻松 10k QPS。

一句话:如果你本来就在写 Laravel,用 PHP 写爬虫等于「顺路」

二、目标明确:我们要抓什么?

以京东商品详情页为例,我们要抓取以下字段:

wKgZO2jSXTSADBywAAAyGWz7kRc536.png

三、技术选型

wKgZO2jSXUSAJ2fHAAAzDSNj35Q648.png

四、环境准备

1. 创建项目

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

五、核心代码实现

1. 创建爬虫类

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. 详情页
        $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. 价格
        $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. 评价数
        $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. 创建入口文件

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. 运行脚本

bash

php bin/jd.php 100035288046

4. 运行结果示例

JSON

{
  "sku": "100035288046",
  "title": "Apple iPhone 15 128GB 蓝色",
  "price": "5999.00",
  "comment_count": 50000,
  "shop": "京东自营旗舰店",
  "img": "https://img10.360buyimg.com/n1/s450x450_jfs/t1/123456.jpg",
  "crawled_at": "2025-09-23 14:30:00"
}

六、反爬策略与优化建议

wKgZPGjSXX6ANtHuAABA4WlxPro066.png

七、进阶玩法(等你来挑战)

✅ 多进程抓取 + 队列调度(支持百万 SKU)

✅ 接入 Laravel,实时入库

✅ 接入 Elasticsearch,实现商品搜索

✅ 接入 Kafka,实时流式处理

✅ 可视化展示:Laravel + Vue + ECharts

八、合法合规提醒

禁止抓取用户隐私信息(如收货地址、手机号)

禁止高并发攻击京东服务器

对外商用需获得京东授权

建议优先使用官方 API(open.jd.com)

九、结语

本文从环境搭建、代码实现、反爬策略到进阶方向,系统讲解了如何用PHP 爬虫获取京东商品详情。希望你不仅能跑通代码,更能在此基础上构建自己的数据采集系统

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PHP
    PHP
    +关注

    关注

    0

    文章

    463

    浏览量

    28806
  • 京东
    +关注

    关注

    2

    文章

    1130

    浏览量

    50141
  • 爬虫
    +关注

    关注

    0

    文章

    87

    浏览量

    8176
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    0基础入门Python爬虫实战课

    爬虫功不可没。通过爬虫,可以知乎、微博爬取热门话题,筛选优质答案,分析用户偏好;淘宝、京东爬取商品
    发表于 07-25 09:28

    python爬虫实战:京东图片爬虫

    实现目标:将京东商城手机类的商品图片全部下载到本地。打开官网找到手机分类下的页面然后再找到所有手机的商品页面经过翻页得出,每页商品请求的地址链接:https://list.jd.com
    发表于 04-25 15:21

    如何利用京东商品详情id拿到商品的详细信息 示例展示

    利用京东商品详情 ID(即 SKU ID)获取商品详细信息,可通过京东开放平台官方 API 或非官方接口(逆向解析)实现。以下是两种方式的示
    的头像 发表于 07-10 09:37 1676次阅读

    API实战指南:如何高效采集京东商品详情数据?这几个接口必须掌握!

    在电商领域,无论是做数据分析、竞品监控,还是搭建自己的商品推荐系统,采集商品详情数据都是一项基础且重要的工作。京东作为国内电商巨头之一,其平台上的
    的头像 发表于 10-13 11:39 587次阅读

    京东商品详情 ID(即 SKU ID)获取商品详细信息参数

    商品 ID(SKU ID) 京东商品详情页 URL 格式为:https://item.jd.com/[SKU_ID].html   二、方式一:京东
    的头像 发表于 11-11 10:47 1237次阅读
    <b class='flag-5'>京东</b><b class='flag-5'>商品</b><b class='flag-5'>详情</b> ID(即 SKU ID)获取<b class='flag-5'>商品</b>详细信息参数

    # 深度解析:爬虫技术获取淘宝商品详情并封装为API的全流程应用

    需求。本文将深入探讨如何借助爬虫技术实现淘宝商品详情的获取,并将其高效封装为API。 一、爬虫技术核心原理与工具 1.1 爬虫运行机制 网络
    的头像 发表于 11-17 09:29 490次阅读

    京东商品详情价格监控API完整教程

    一、摘要 京东商品详情API是京东开放平台提供的标准化接口,开发者可通过商品ID、SKU等参数获取商品
    的头像 发表于 11-24 15:56 1259次阅读

    京东关键词搜索商品列表的Python爬虫实战

    京东关键词搜索商品列表 Python 爬虫实战 你想要实现京东关键词搜索商品爬虫,我会
    的头像 发表于 01-04 10:16 1279次阅读

    京东商品详情API接口指南

    。 二、接口概述 1. 核心接口信息 项⽬说明 接口名称商品详情查询(JD.item_get) 请求方式GET/POST(推荐 POST,避免参数暴露) 接口地址正式环境:c0b.cc
    的头像 发表于 01-14 14:22 491次阅读

    得物商品详情API

    一、官方 API 接入核心信息 1. 接入前提 注册并入驻得物开放平台(https://open.dewu.com/),完成企业认证与应用创建 申请商品详情查询等接口权限,获取appKey
    的头像 发表于 01-27 14:08 675次阅读

    京东商品详情API接口详解:获取商品标题、价格、库存等核心数据

    京东商品详情 API 是获取商品 标题、价格、库存、SKU、主图、参数 等核心数据的官方合规入口,分 京东开放平台(JOS)与
    的头像 发表于 03-02 14:28 578次阅读

    如何通过API获取京东商品的券后价格详情

    商品的券后价格详情。 核心概念 商品ID (skuId) : 京东平台为每个商品分配的唯一标识符,是查询
    的头像 发表于 03-04 17:27 629次阅读
    如何通过API获取<b class='flag-5'>京东</b><b class='flag-5'>商品</b>的券后价格<b class='flag-5'>详情</b>

    京东商品详情API接口实操指南

    京东商品详情 API 主要向商家 / 服务商与推广 / 选品场景,是获取京东商品全维度数据的接口。 一、
    的头像 发表于 03-10 16:15 1018次阅读

    通过京东开放平台API根据商品ID获取商品详情技术指南

    京东开放平台为开发者提供了丰富的API接口,允许开发者获取商品信息、订单数据等。本技术贴将详细介绍如何通过商品ID获取商品详情,包括准备工作
    的头像 发表于 03-11 17:05 668次阅读

    电商效率翻倍: OpenClaw 对接京东详情接口,一键抓取商品全量信息

    完整数据,非常适合无货源铺货、竞品监控、选品比价、素材采集等场景。 一、接口核心能力 支持京东自营、第三方店铺、京东国际商品详情获取 一次返回 主图、SKU、价格、销量、
    的头像 发表于 04-22 13:55 80次阅读