chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

把淘寶店鋪詳情搬進(jìn) MySQL:PHP 爬蟲全鏈路實(shí)戰(zhàn)(2025 版)

劉大雷 ? 來源:jf_82280871 ? 作者:jf_82280871 ? 2025-10-16 17:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、為什么要自己爬店鋪詳情?

選品:直播團(tuán)隊(duì)需要「店鋪評(píng)分、粉絲數(shù)、上新頻率」快速篩選靠譜供應(yīng)商

競(jìng)品:同一類目,對(duì)手店鋪突然漲粉 10w,第一時(shí)間預(yù)警

數(shù)據(jù)訓(xùn)練:店鋪簡(jiǎn)介 + 評(píng)分 → 做多模態(tài)情感分類

投資:提前發(fā)現(xiàn)「高評(píng)分+低粉絲」?jié)摿Φ辏劰?yīng)鏈合作

官方 taobao.shop.get 需要企業(yè)資質(zhì),個(gè)人 99% 被卡;網(wǎng)頁(yè)端「店鋪主頁(yè)」公開可見,走網(wǎng)頁(yè)派依舊是最低成本方案。下面用純 PHP 把「店鋪主頁(yè) → 基礎(chǔ)信息 → 商品列表 → 落庫(kù) → 飛書播報(bào)」一次擼完。

二、技術(shù)選型(全部開源)

wKgZPGjwuteAeFh4AABp6DI8PT0747.png

三、0 環(huán)境搭建(Linux / Win / mac 通用)

bash

# 1. 安裝 PHP 8.2+ 擴(kuò)展
sudo dnf install php php-cli php-curl php-dom php-mbstring php-pdo php-mysqlnd

# 2. 安裝 Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# 3. 創(chuàng)建項(xiàng)目
mkdir taobao-shop-php && cd taobao-shop-php
composer init --no-interaction --require="php:>=8.2"
composer install

四、核心流程:6 步閉環(huán)(全部代碼可跑)

① 找入口:店鋪主頁(yè) + 簽名算法(2025-10 有效)

店鋪主頁(yè):

https://shop{m}.taobao.com/shop/shop_index.htm?shop_id={shop_id}

店鋪內(nèi)所有商品接口(JSONP):

https://shop.m.taobao.com/shop/shopItemSearch.jsonp?shopId={shop_id}¤tPage={page}&pageSize=20&callback=jsonp123

返回:

JavaScript

jsonp123({"total":1523,"items":[{...}]})

簽名邏輯(與詳情頁(yè)同款):

php

function sign(string $raw): string {
    return strtoupper(md5($raw));
}

調(diào)用前拼字符串:t + "&12574478&" + data + "&",其中 t 為毫秒時(shí)間戳。

② 網(wǎng)絡(luò)層:GuzzleHttp 7 + 連接池

php

http = new Client([
            'timeout' => 10,
            'headers' => [
                'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
                'Referer' => 'https://shop.taobao.com/'
            ]
        ]);
    }

    public function fetchIndex(int $shopId): array {
        $url = "https://shop.taobao.com/shop/shop_index.htm?shop_id={$shopId}";
        $html = $this->http->get($url)->getBody()->getContents();
        return $this->parseIndex($html, $shopId);
    }

    public function fetchItems(int $shopId, int $page = 1): array {
        $this->rateLimit(); // 限速
        $callback = 'jsonp' . microtime(true);
        $data = json_encode(['shopId' => $shopId, 'currentPage' => $page], JSON_UNESCAPED_SLASHES);
        $t = (string) (microtime(true) * 1000);
        $sign = sign($t . "&12574478&" . $data . "&");

        $url = "https://shop.m.taobao.com/shop/shopItemSearch.jsonp?" . http_build_query([
            'shopId' => $shopId,
            'currentPage' => $page,
            'pageSize' => 20,
            'callback' => $callback,
            't' => $t,
            'sign' => $sign
        ]);

        $jsonp = $this->http->get($url)->getBody()->getContents();
        $json = preg_replace('/^jsonpd+(|)$/m', '', $jsonp);
        return $this->parseItems(json_decode($json, true), $shopId);
    }

    private function parseIndex(string $html, int $shopId): array {
        $doc = new DOMDocument();
        @$doc->loadHTML($html);
        $xpath = new DOMXPath($doc);
        return [
            'shop_id' => $shopId,
            'shop_name' => trim($xpath->query("http://h1[@class='shop-name']")->item(0)?->nodeValue ?? ''),
            'shop_score' => trim($xpath->query("http://span[@class='shop-score']")->item(0)?->nodeValue ?? ''),
            'shop_fans' => trim($xpath->query("http://span[@class='shop-fans']")->item(0)?->nodeValue ?? ''),
        ];
    }

    private function parseItems(array $root, int $shopId): array {
        $items = [];
        foreach ($root['items'] ?? [] as $i) {
            $items[] = [
                'shop_id' => $shopId,
                'item_id' => $i['itemId'],
                'title' => $i['title'],
                'price' => $i['price'],
                'pic_url' => $i['picUrl'],
                'sold' => $i['sold'] ?? 0,
                'comment_count' => $i['commentCount'] ?? 0,
                'created_at' => date('Y-m-d H:i:s', $i['created'] / 1000)
            ];
        }
        return $items;
    }

    private function rateLimit(): void {
        usleep(1000000 / $this->qps); // 微秒
    }
}

③ 并發(fā)池:Guzzle Pool + 進(jìn)度條

php

public function fetchAllItems(int $shopId, int $maxPage = 200): array {
    $first = $this->fetchItems($shopId, 1);
    $totalPage = min(ceil(($first['total'] ?? 0) / 20), $maxPage);

    $requests = function () use ($shopId, $totalPage) {
        for ($p = 2; $p <= $totalPage; $p++) {
            yield new Request('GET', $this-?>buildItemUrl($shopId, $p));
        }
    };

    $items = [];
    $pool = new Pool($this->http, $requests(), [
        'concurrency' => 15, // 令牌桶
        'fulfilled' => function ($response, $index) use (&$items, $shopId) {
            $jsonp = $response->getBody()->getContents();
            $json = preg_replace('/^jsonpd+(|)$/m', '', $jsonp);
            $items[] = $this->parseItems(json_decode($json, true), $shopId);
        },
        'rejected' => function ($reason, $index) {
            Log::error("Page $index failed: $reason");
        },
    ]);
    $pool->promise()->wait();
    return array_merge(...$items);
}

④ 落庫(kù):Laravel Eloquent 批量 + Redis 去重

sql

CREATE TABLE tb_shop_detail (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  shop_id BIGINT NOT NULL,
  shop_name VARCHAR(100) NOT NULL,
  shop_score VARCHAR(20) NOT NULL,
  shop_fans VARCHAR(20) NOT NULL,
  item_id BIGINT NOT NULL,
  title VARCHAR(200) NOT NULL,
  price VARCHAR(30) NOT NULL,
  pic_url VARCHAR(500) NOT NULL,
  sold INT DEFAULT 0,
  comment_count INT DEFAULT 0,
  created_at DATETIME NOT NULL,
  UNIQUE KEY uk_item (item_id),
  INDEX idx_shop (shop_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

模型:

php


批量插入:

php

use IlluminateSupportFacadesDB;
use AppModelsShopDetail;

function bulkSave(array $rows): int
{
    $new = 0;
    foreach (array_chunk($rows, 1000) as $chunk) {
        $exists = Redis::command('sadd', ['item_id_set', ...array_column($chunk, 'item_id')]);
        $filtered = array_filter($chunk, fn($i) => $exists[$i['item_id']] ?? false);
        if ($filtered) {
            ShopDetail::insert($filtered);
            $new += count($filtered);
        }
    }
    return $new;
}

⑥ Docker 定時(shí):每天 8 點(diǎn)飛書播報(bào)

Dockerfile

dockerfile

FROM php:8.2-cli
RUN apt-get update && apt-get install -y libcurl4-openssl-dev libssl-dev libzip-dev 
    && docker-php-ext-install pdo_mysql curl zip
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY . .
RUN composer install --no-dev
CMD ["php","crawl.php"]

crontab

0 8 * * * docker run --rm -v /mnt/nas/shop:/app/storage taobao-shop-php

飛書推送(精簡(jiǎn)版)

php

function report(int $shopId, int $new): void {
    $body = json_encode([
        'msg_type' => 'text',
        'content'  => ['text' => "店鋪 $shopId 新增 $new 條商品,已落庫(kù)~"]
    ]);
    file_get_contents('https://open.feishu.cn/open-apis/bot/v2/hook/xxx', false, stream_context_create([
        'http' => ['method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => $body]
    ]));
}

五、踩坑 & 反爬錦囊

JSONP 殼:正則為 ^jsonpd+(|)$,剝完再 json_decode

Referer:必須 https://shop.taobao.com/,否則 403

限速:?jiǎn)?IP 15 QPS 穩(wěn)過,> 200/10min 必出滑塊

代理池:青果云 1G ≈ 0.8 元,能跑 8 萬(wàn)頁(yè)

重復(fù):Redis item_id_set 秒級(jí)去重,內(nèi)存省 90 %

六、結(jié)語(yǔ)

從店鋪主頁(yè)、JSONP 簽名、Guzzle 并發(fā)、Eloquent 落庫(kù),到 Docker 定時(shí) + 飛書群播報(bào),一條完整的 PHP 閉環(huán)就打通了。
全部代碼可直接扔進(jìn) PhpStorm / VSCode 跑通,改一行 shopId 就能薅任意店鋪。
祝各位運(yùn)營(yíng)、產(chǎn)品、算法大佬爬得開心,爆單更開心!

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PHP
    PHP
    +關(guān)注

    關(guān)注

    0

    文章

    463

    瀏覽量

    28799
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    928

    瀏覽量

    29739
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    高效獲取淘寶商品詳情:API 開發(fā)實(shí)現(xiàn)鏈接解析的完整技術(shù)方案

    ? 在電商數(shù)據(jù)應(yīng)用、比價(jià)系統(tǒng)搭建、庫(kù)存監(jiān)控等場(chǎng)景中,通過 API 實(shí)現(xiàn)淘寶鏈接解析與商品詳情獲取是核心技術(shù)環(huán)節(jié)。但淘寶開放平臺(tái)的權(quán)限限制、反爬蟲機(jī)制及數(shù)據(jù)格式差異,常讓開發(fā)者踩坑。本文
    的頭像 發(fā)表于 04-13 16:23 ?93次閱讀

    AI落地培訓(xùn) | 人形檢測(cè)模型嵌入式部署實(shí)戰(zhàn)

    你是否想系統(tǒng)了解AI落地,卻缺少一個(gè)完整的實(shí)戰(zhàn)項(xiàng)目練手?模型部署環(huán)節(jié)繁多,缺乏一套清晰的實(shí)戰(zhàn)路徑?4月18日、4月25日、5月16日R
    的頭像 發(fā)表于 04-10 18:41 ?131次閱讀
    AI落地培訓(xùn) | 人形檢測(cè)模型嵌入式部署<b class='flag-5'>全</b><b class='flag-5'>鏈</b><b class='flag-5'>路</b><b class='flag-5'>實(shí)戰(zhàn)</b>

    淘寶店鋪所有商品接口

    獲取 淘寶店鋪所有商品 ,核心依賴 淘寶開放平臺(tái)(TOP) 的官方 API。以下是最常用、最穩(wěn)定的接口清單與使用說明: 一、核心商品列表接口(獲取店商品) 1.
    的頭像 發(fā)表于 04-08 14:39 ?209次閱讀

    調(diào)用淘寶開放平臺(tái)API獲取店鋪所有商品列表

    ? ?在電商系統(tǒng)開發(fā)或數(shù)據(jù)分析場(chǎng)景中,有時(shí)需要批量獲取淘寶店鋪的所有商品信息。淘寶開放平臺(tái)(Taobao Open Platform)提供了豐富的API接口供開發(fā)者使用,其中就包含獲取店鋪
    的頭像 發(fā)表于 03-27 17:38 ?681次閱讀
    調(diào)用<b class='flag-5'>淘寶</b>開放平臺(tái)API獲取<b class='flag-5'>店鋪</b>所有商品列表

    接入淘寶店鋪所有商品接口后

    一、基礎(chǔ)價(jià)值:合規(guī)、高效、穩(wěn)定獲取量商品數(shù)據(jù) 合規(guī)無風(fēng)險(xiǎn) :官方 API,徹底替代爬蟲,避免賬號(hào)風(fēng)險(xiǎn)與法律問題。 數(shù)據(jù)完整 :獲取商品 ID、標(biāo)題、價(jià)格、主圖、銷量、庫(kù)存、類目、SKU、優(yōu)惠
    的頭像 發(fā)表于 03-09 17:30 ?887次閱讀

    淘寶店鋪量商品API接口技術(shù)實(shí)踐指南

    在電商數(shù)字化運(yùn)營(yíng)與數(shù)據(jù)分析場(chǎng)景中,高效獲取店鋪量商品數(shù)據(jù)是核心需求之一。淘寶開放平臺(tái)提供的店鋪量商品API接口(核心接口:taobao.
    的頭像 發(fā)表于 01-23 10:55 ?494次閱讀

    1688店鋪詳情API使用指南

    等級(jí)、主營(yíng)品類等核心數(shù)據(jù)。該接口為電商數(shù)據(jù)分析、店鋪監(jiān)控、供應(yīng)對(duì)接、導(dǎo)購(gòu)平臺(tái)開發(fā)等場(chǎng)景提供了關(guān)鍵的數(shù)據(jù)支撐。本文將從 摘要、接口概述、Python 請(qǐng)求示例、結(jié)語(yǔ) 四個(gè)維度,詳細(xì)介紹該 API 的使用方式。 一、摘要 1688 店鋪
    的頭像 發(fā)表于 12-19 10:20 ?1842次閱讀

    # 深度解析:爬蟲技術(shù)獲取淘寶商品詳情并封裝為API的流程應(yīng)用

    需求。本文將深入探討如何借助爬蟲技術(shù)實(shí)現(xiàn)淘寶商品詳情的獲取,并將其高效封裝為API。 一、爬蟲技術(shù)核心原理與工具 1.1 爬蟲運(yùn)行機(jī)制 網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-17 09:29 ?454次閱讀

    淘寶商品詳情API接口技術(shù)解析與實(shí)戰(zhàn)應(yīng)用

    隨著電商行業(yè)的快速發(fā)展,數(shù)據(jù)驅(qū)動(dòng)的決策模式已成為企業(yè)核心競(jìng)爭(zhēng)力的重要組成部分。淘寶作為國(guó)內(nèi)領(lǐng)先的電商平臺(tái),其開放平臺(tái)提供的商品詳情API接口為開發(fā)者提供了獲取商品維度數(shù)據(jù)的通道。本文從技術(shù)實(shí)現(xiàn)角度
    的頭像 發(fā)表于 11-04 09:50 ?501次閱讀

    揭秘淘寶詳情 API 接口:解鎖電商數(shù)據(jù)應(yīng)用新玩法

    在電商的浩瀚宇宙中,淘寶無疑是一顆璀璨的巨星。對(duì)于開發(fā)者、電商從業(yè)者來說,獲取淘寶商品的詳細(xì)信息是一項(xiàng)常見且重要的需求。而淘寶詳情 API 接口,就像是一
    的頭像 發(fā)表于 09-29 14:30 ?523次閱讀

    淘寶商品詳情接口(item_get)企業(yè)級(jí)解析:參數(shù)配置、簽名機(jī)制與 Python 代碼實(shí)戰(zhàn)

    本文詳解淘寶開放平臺(tái)taobao.item_get接口對(duì)接流程,涵蓋參數(shù)配置、MD5簽名生成、Python企業(yè)級(jí)代碼實(shí)現(xiàn)及高頻問題排查,提供可落地的實(shí)戰(zhàn)方案,助你高效穩(wěn)定獲取商品數(shù)據(jù)。
    的頭像 發(fā)表于 09-26 09:13 ?1091次閱讀
    <b class='flag-5'>淘寶</b>商品<b class='flag-5'>詳情</b>接口(item_get)企業(yè)級(jí)<b class='flag-5'>全</b>解析:參數(shù)配置、簽名機(jī)制與 Python 代碼<b class='flag-5'>實(shí)戰(zhàn)</b>

    從 0 到 1:用 PHP 爬蟲優(yōu)雅地拿下京東商品詳情

    PHP 語(yǔ)言 實(shí)現(xiàn)一個(gè) 可運(yùn)行的京東商品爬蟲 ,不僅能抓取商品標(biāo)題、價(jià)格、圖片、評(píng)價(jià)數(shù),還能應(yīng)對(duì)常見的反爬策略。全文附完整代碼, 復(fù)制粘貼即可運(yùn)行 。 一、為什么選擇 PHP爬蟲
    的頭像 發(fā)表于 09-23 16:42 ?1048次閱讀
    從 0 到 1:用 <b class='flag-5'>PHP</b> <b class='flag-5'>爬蟲</b>優(yōu)雅地拿下京東商品<b class='flag-5'>詳情</b>

    淘寶商品詳情 API 實(shí)戰(zhàn):5 大策略提升店鋪轉(zhuǎn)化率(附簽名優(yōu)化代碼 + 避坑指南)

    ”“差評(píng)失控” 等轉(zhuǎn)化率殺手。本文結(jié)合我對(duì)接 300 + 淘寶店鋪實(shí)戰(zhàn)經(jīng)驗(yàn),拆解 API 如何落地到動(dòng)態(tài)定價(jià)、庫(kù)存預(yù)警等 5 大場(chǎng)景,代碼做了簽名優(yōu)化和錯(cuò)誤處理,新手也能直接復(fù)用,避開 90% 的調(diào)用坑。 一、
    的頭像 發(fā)表于 09-15 10:53 ?1120次閱讀

    淘寶/天貓:通過商品詳情API實(shí)現(xiàn)多店鋪商品信息批量同步,確保價(jià)格、庫(kù)存實(shí)時(shí)更新

    ? 在電商運(yùn)營(yíng)中,管理多個(gè)淘寶或天貓店鋪的商品信息(如價(jià)格和庫(kù)存)是一項(xiàng)繁瑣的任務(wù)。手動(dòng)更新耗時(shí)耗力,且容易出錯(cuò),導(dǎo)致價(jià)格不一致或庫(kù)存超賣。通過淘寶/天貓開放平臺(tái)提供的商品詳情API,
    的頭像 發(fā)表于 09-08 16:05 ?1379次閱讀
    <b class='flag-5'>淘寶</b>/天貓:通過商品<b class='flag-5'>詳情</b>API實(shí)現(xiàn)多<b class='flag-5'>店鋪</b>商品信息批量同步,確保價(jià)格、庫(kù)存實(shí)時(shí)更新

    淘寶 API 實(shí)現(xiàn)天貓店鋪商品詳情頁(yè)智能優(yōu)化

    ? 在競(jìng)爭(zhēng)激烈的電商環(huán)境中,天貓店鋪的商品詳情頁(yè)是影響用戶轉(zhuǎn)化率的關(guān)鍵因素。通過淘寶開放平臺(tái)提供的API,我們可以實(shí)現(xiàn)智能優(yōu)化,提升用戶體驗(yàn)和銷售業(yè)績(jī)。本文將從零開始,逐步介紹如何利用淘寶
    的頭像 發(fā)表于 08-13 14:35 ?952次閱讀
    用<b class='flag-5'>淘寶</b> API 實(shí)現(xiàn)天貓<b class='flag-5'>店鋪</b>商品<b class='flag-5'>詳情</b>頁(yè)智能優(yōu)化