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

    文章

    460

    浏览量

    28393
  • 京东
    +关注

    关注

    2

    文章

    1066

    浏览量

    49889
  • 爬虫
    +关注

    关注

    0

    文章

    87

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    0基础入门Python爬虫实战课

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

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

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

    PHP入门精通

    PHP入门精通初学者角度出发,通过通俗易懂的语言,丰富多彩的实例,详细介绍了使用PHP进行网络开发应该掌握的各方面技术。全书共分27章
    发表于 05-26 23:14 0次下载
    <b class='flag-5'>PHP</b><b class='flag-5'>从</b>入门<b class='flag-5'>到</b>精通

    PHP入门精通(免费)

    PHP分界标示符确定PHP脚本的开始和结束位置,在PHP语言中有四种不同风格的分界标示符可以让PHP代码嵌入HTML代码中。
    发表于 12-24 16:16 9次下载

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

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

    eBay 商品详情 API 深度解析:基础信息变体数据获取全方案

    通过本文提供的方案,开发者可以快速实现 eBay 商品详情数据的获取和处理,为跨境电商应用提供丰富的商品信息支持。实际开发中,需遵守 eBay 开发者协议,合理使用获取的商品数据。
    的头像 发表于 08-18 10:17 635次阅读
    eBay <b class='flag-5'>商品</b><b class='flag-5'>详情</b> API 深度解析:<b class='flag-5'>从</b>基础信息<b class='flag-5'>到</b>变体数据获取全方案

    别踩分页坑!京东商品详情接口实战指南:并发优化数据完整性闭环

    京东商品详情接口(jingdong.ware.get)是电商数据开发的核心难点,本文详解其权限申请、分页优化、多规格递归解析与完整性校验等实战方案,结合代码示例与性能调优参数,助你高效稳定对接,提升数据获取效率2.5倍以上,适用
    的头像 发表于 09-30 15:50 864次阅读

    京东商品详情接口实战解析:调用优化商业价值挖掘(附避坑代码)

    本文深入解析京东商品详情接口jd.union.open.goods.detail.query,涵盖核心特性、权限限制、关键参数及调用避坑指南。通过实战代码演示数据采集、促销解析与商业分析,助力开发者高效获取价格、库存、评价等全维
    的头像 发表于 10-10 09:28 529次阅读
    <b class='flag-5'>京东</b><b class='flag-5'>商品</b><b class='flag-5'>详情</b>接口实战解析:<b class='flag-5'>从</b>调用优化<b class='flag-5'>到</b>商业价值挖掘(附避坑代码)

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

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

    淘宝京东API商品详情接口示例参考

    淘宝商品详情接口示例 接口名称:taobao.item_get(或类似的接口名称,具体以淘宝开放平台文档为准) 请求参数: num_iid:淘宝商品ID,用于唯一标识一个商品
    的头像 发表于 11-04 09:36 133次阅读

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

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

    如何通过API获取1688平台商品详情

    ​  在电商开发中,获取商品详情是常见的需求,尤其对于1688平台(阿里巴巴旗下的批发采购平台)。通过API接口,开发者可以高效地集成商品数据自己的应用中。本文将逐步介绍如何通过16
    的头像 发表于 11-11 14:00 355次阅读
    如何通过API获取1688平台<b class='flag-5'>商品</b><b class='flag-5'>详情</b>

    京东平台获取商品详情原数据API接口技术解析

    ​  在电商系统开发、价格监控、竞品分析等场景中,获取商品的原始详情数据是基础且关键的一环。京东作为国内领先的电商平台,提供了相应的API接口供开发者调用。本文将介绍如何使用京东开放平
    的头像 发表于 11-13 14:35 318次阅读
    <b class='flag-5'>京东</b>平台获取<b class='flag-5'>商品</b><b class='flag-5'>详情</b>原数据API接口技术解析

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

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

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

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