亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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)商

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

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

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

官方 taobao.shop.get 需要企業(yè)資質(zhì),個(gè)人 99% 被卡;網(wǎng)頁端「店鋪主頁」公開可見,走網(wǎng)頁派依舊是最低成本方案。下面用純 PHP 把「店鋪主頁 → 基礎(chǔ)信息 → 商品列表 → 落庫 → 飛書播報(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)(全部代碼可跑)

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

店鋪主頁:

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":[{...}]})

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

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);
}

④ 落庫: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

飛書推送(精簡版)

php

function report(int $shopId, int $new): void {
    $body = json_encode([
        'msg_type' => 'text',
        'content'  => ['text' => "店鋪 $shopId 新增 $new 條商品,已落庫~"]
    ]);
    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

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

代理池:青果云 1G ≈ 0.8 元,能跑 8 萬頁

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

六、結(jié)語

從店鋪主頁、JSONP 簽名、Guzzle 并發(fā)、Eloquent 落庫,到 Docker 定時(shí) + 飛書群播報(bào),一條完整的 PHP 閉環(huán)就打通了。
全部代碼可直接扔進(jìn) PhpStorm / VSCode 跑通,改一行 shopId 就能薅任意店鋪。
祝各位運(yùn)營、產(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

    文章

    459

    瀏覽量

    28333
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    893

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    淘寶平臺(tái)獲取店鋪商品列表API接口實(shí)現(xiàn)詳解

    ? 在電商數(shù)據(jù)分析、店鋪管理工具開發(fā)或競品監(jiān)控等場(chǎng)景下,通過API接口獲取淘寶店鋪的商品列表數(shù)據(jù)是一項(xiàng)常見且重要的需求。本文將介紹如何通過淘寶開放平臺(tái)的API接口實(shí)現(xiàn)這一功能。 一、
    的頭像 發(fā)表于 11-06 15:22 ?87次閱讀
    <b class='flag-5'>淘寶</b>平臺(tái)獲取<b class='flag-5'>店鋪</b>商品列表API接口實(shí)現(xiàn)詳解

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

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

    淘寶京東API商品詳情接口示例參考

    淘寶商品詳情接口示例 接口名稱:taobao.item_get(或類似的接口名稱,具體以淘寶開放平臺(tái)文檔為準(zhǔn)) 請(qǐng)求參數(shù): num_iid:淘寶商品ID,用于唯一標(biāo)識(shí)一個(gè)商品
    的頭像 發(fā)表于 11-04 09:36 ?35次閱讀

    淘寶獲取商品詳情券后價(jià)API接口

    ? ?在電商開發(fā)中,獲取商品的券后價(jià)是常見需求,尤其對(duì)于比價(jià)工具或優(yōu)惠監(jiān)控應(yīng)用。淘寶開放平臺(tái)提供了API接口,允許開發(fā)者通過程序化方式獲取商品詳情和券后價(jià)格。本技術(shù)貼將一步步指導(dǎo)您如何實(shí)現(xiàn)這一功能
    的頭像 發(fā)表于 10-27 15:44 ?123次閱讀
    <b class='flag-5'>淘寶</b>獲取商品<b class='flag-5'>詳情</b>券后價(jià)API接口

    淘寶商品詳情API接口(淘寶 API系列)

    在電商蓬勃發(fā)展的當(dāng)下,海量的商品信息充斥著市場(chǎng)。對(duì)于眾多電商從業(yè)者、數(shù)據(jù)分析師以及開發(fā)者而言,獲取淘寶平臺(tái)上豐富的商品詳情數(shù)據(jù)具有極大的價(jià)值。淘寶商品詳情 API 接口應(yīng)運(yùn)而生,它宛如
    的頭像 發(fā)表于 10-20 13:32 ?231次閱讀

    別再卡分頁!淘寶量商品接口實(shí)戰(zhàn)開發(fā)指南:從并發(fā)優(yōu)化到數(shù)據(jù)完整性閉環(huán)

    淘寶店鋪量商品接口實(shí)戰(zhàn)指南:詳解權(quán)限申請(qǐng)、分頁優(yōu)化、并發(fā)拉取與增量更新,結(jié)合代碼實(shí)現(xiàn)高效穩(wěn)定的數(shù)據(jù)獲取,解決超時(shí)、限流、數(shù)據(jù)丟失等核心難題,助力電商數(shù)據(jù)分析避坑提效。
    的頭像 發(fā)表于 09-30 10:47 ?235次閱讀

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

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

    淘寶商品詳情接口(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 ?351次閱讀
    <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 語言 實(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 ?463次閱讀
    從 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à)、庫存預(yù)警等 5 大場(chǎng)景,代碼做了簽名優(yōu)化和錯(cuò)誤處理,新手也能直接復(fù)用,避開 90% 的調(diào)用坑。 一、
    的頭像 發(fā)表于 09-15 10:53 ?648次閱讀

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

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

    深入剖析Docker安全防護(hù)策略

    在云原生時(shí)代,Docker容器安全已成為運(yùn)維工程師必須面對(duì)的核心挑戰(zhàn)。本文將從實(shí)戰(zhàn)角度深入剖析Docker安全防護(hù)策略,涵蓋鏡像構(gòu)建、容器運(yùn)行、網(wǎng)絡(luò)隔離等關(guān)鍵環(huán)節(jié),助你構(gòu)建企業(yè)級(jí)
    的頭像 發(fā)表于 08-18 11:17 ?652次閱讀

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

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

    淘寶 API 助力,天貓店鋪商品上下架智能管理

    ? 在當(dāng)今電商競爭激烈的環(huán)境中,天貓店鋪的商品管理效率直接影響銷售業(yè)績。手動(dòng)處理商品上架和下架不僅耗時(shí)耗力,還容易出錯(cuò),導(dǎo)致庫存積壓或錯(cuò)失銷售機(jī)會(huì)。淘寶開放平臺(tái)提供的 API(應(yīng)用程序接口)為
    的頭像 發(fā)表于 08-13 14:28 ?481次閱讀
    <b class='flag-5'>淘寶</b> API 助力,天貓<b class='flag-5'>店鋪</b>商品上下架智能管理

    揭秘淘寶 API,讓天貓店鋪流量來源一目了然

    ? 在當(dāng)今競爭激烈的電商環(huán)境中,天貓店鋪的運(yùn)營者最關(guān)心的問題之一就是:流量從哪里來?了解流量來源不僅能優(yōu)化營銷策略,還能提升轉(zhuǎn)化率。淘寶開放平臺(tái)提供的 API 接口,正是解鎖這一秘密的鑰匙。本文將
    的頭像 發(fā)表于 08-12 14:48 ?509次閱讀
    揭秘<b class='flag-5'>淘寶</b> API,讓天貓<b class='flag-5'>店鋪</b>流量來源一目了然