91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

1. 為什么選擇 PHP 做 Amazon 爬蟲?

表格

wKgZPGjTnIOAJ9vFAABH8h-QxKI851.png

一句話:如果你本來就在寫 Laravel,用 PHP 寫爬蟲等于「順路」。

2. Amazon 頁面結構 60 秒速覽(2025-06 最新)

以 https://www.amazon.com/dp/B08N5WRWNW 為例:

表格

wKgZO2jTnI-ASfqgAABj_nLoWUY565.png

結論:95% 字段靜態(tài)直取,無需上重型瀏覽器。

3. 環(huán)境準備:30 秒搭好最小可用環(huán)境

bash

# 創(chuàng)建項目
mkdir amz-php-crawler && cd amz-php-crawler
composer init --name="demo/amz-crawler" -s dev

# 安裝依賴
composer require guzzlehttp/guzzle symfony/dom-crawler symfony/css-selector fakerphp/faker

PHP ≥ 8.0 即可,Guzzle 7.x 自帶 PSR-18,后續(xù)想接 Hyperf 也很方便。

4. 核心流程:從 ASIN → 結構化數(shù)組

ASIN → 下載詳情頁 → 解析靜態(tài)字段 → 調 AJAX 價格/庫存 → 清洗 → CSV/MySQL/Kafka

5. 代碼實戰(zhàn):Guzzle + DOMXPath 極速版

php

client = new Client([
            'timeout' => 10,
            'headers' => [
                'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
                'Accept-Language' => 'en-US,en;q=0.9',
                'Referer'    => 'https://www.amazon.com/',
            ],
        ]);
    }

    public function fetchProduct(string $asin): array
    {
        $url = "https://www.amazon.com/dp/{$asin}";
        $html = $this->client->get($url)->getBody()->getContents();
        $crawler = new Crawler($html);

        $title = $crawler->filter('#productTitle')->text('');
        $priceWhole = $crawler->filter('.a-price .a-price-whole')->text('');
        $priceFrac = $crawler->filter('.a-price .a-price-fraction')->text('');
        $price = trim($priceWhole . '.' . $priceFrac);

        $rating = $crawler->filter('#acrPopover')->attr('title');
        $rating = $rating ? explode(' ', $rating)[0] : '';

        $reviewText = $crawler->filter('#acrCustomerReviewText')->text('');
        $reviewCount = filter_var($reviewText, FILTER_SANITIZE_NUMBER_INT);

        $imgJson = $crawler->filter('#imgTagWrapperId img')->attr('data-a-dynamic-image');
        $imgMap = json_decode($imgJson, true);
        $mainImg = $imgMap ? array_key_first($imgMap) : '';

        return [
            'asin'          => $asin,
            'title'         => trim($title),
            'price'         => $price,
            'rating'        => $rating,
            'review_count'  => (int) $reviewCount,
            'main_img'      => $mainImg,
            'crawled_at'    => date('Y-m-d H:i:s'),
        ];
    }
}

CLI 入口文件:

php

#!/usr/bin/env php
fetchProduct($asin);
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

運行:

bash

php bin/amz.php B08N5WRWNW

輸出示例:

JSON

{
  "asin": "B08N5WRWNW",
  "title": "Apple AirPods Pro",
  "price": "249.00",
  "rating": "4.6",
  "review_count": 25430,
  "main_img": "https://images-na.ssl-images-amazon.com/images/I/71zny7BTRlL._AC_SL1500_.jpg",
  "crawled_at": "2025-06-24 18:42:12"
}

6. 反爬三板斧:UA 池、代理池、隨機延時

表格

wKgZPGjTnKeAEcPRAAArt6iBBdM931.png

Guzzle 中間件示例:

php

$stack = GuzzleHttpHandlerStack::create();
$stack->push(GuzzleHttpMiddleware::retry(function ($retries, $request, $response, $exception) {
    return $retries < 3 && ($exception || $response-?>getStatusCode() === 403);
}, function ($retries) {
    return 1000 * (2 ** $retries);
}));

7. Selenium 兜底:滑塊驗證碼與動態(tài)渲染

當 Amazon 出現(xiàn)滑塊時,可用 php-webdriver 驅動 Chrome:

bash

composer require php-webdriver/webdriver

php

$host = 'http://localhost:4444/wd/hub'; // Selenium Standalone
$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());
$driver->get("https://www.amazon.com/dp/$asin");
sleep(5);
$html = $driver->getPageSource();
$driver->quit();

技巧

加載 stealth.min.js 隱藏 WebDriver 特征;

使用 undetected-chromedriver 可過新版滑塊。

8. 提速 10 倍:多進程 + Swoole 協(xié)程

bash

composer require swoole/swoole

php

use SwooleRuntime;
use SwooleCoroutine;
use function SwooleCoroutinerun;

Runtime::enableCoroutine();
run(function () {
    $asins = ['B08N5WRWNW', 'B08L8DKCS1'];
    foreach ($asins as $asin) {
        Coroutine::create(function () use ($asin) {
            $spider = new AmzSpider();
            $data = $spider->fetchProduct($asin);
            file_put_contents("data/{$asin}.json", json_encode($data));
        });
    }
});

實測:4 核 8G 機器,協(xié)程版 2k SKU/min,CPU 占用 45%。

9. 數(shù)據(jù)落地:CSV、MySQL、Kafka 一鍵切換

① CSV(快速驗證)

php

$fp = fopen('amz.csv', 'a');
fputcsv($fp, array_keys($data));
fputcsv($fp, $data);
fclose($fp);

② MySQL(生產(chǎn))

php

$pdo = new PDO('mysql:host=localhost;dbname=amz', 'root', 'root');
$stmt = $pdo->prepare("REPLACE INTO product (asin,title,price,rating,review_count,main_img,crawled_at) VALUES (?,?,?,?,?,?,?)");
$stmt->execute([$data['asin'], $data['title'], $data['price'], $data['rating'], $data['review_count'], $data['main_img'], $data['crawled_at']]);

③ Kafka(實時流)

php

$producer = new KafkaProducer(function() {
    return [KafkaProducerConfig::BOOTSTRAP_SERVERS => 'localhost:9092'];
});
$producer->send([
    ['topic' => 'amz-product', 'value' => json_encode($data), 'key' => $data['asin']]
]);

10. 合規(guī)紅線:Amazon 爬蟲的法律底線

表格

wKgZO2jTnLmAKg5oAABN2f3eJak887.png

官方替代方案:Amazon Product Advertising API(PA-API 5.0)

穩(wěn)定、合規(guī)、無封 IP 風險

需 Associate Tag + 授權,每日 1w 額度

結論:能 API 不爬蟲,能授權不硬剛。

11. 總結與進階路線

? 原型階段:本文代碼直接跑,30 行即可出數(shù)
? 擴展階段:協(xié)程池 + 代理池 + 重試,日采 50w SKU
? 生產(chǎn)階段:Hyperf + Kafka + ES 實時搜索
? 商業(yè)閉環(huán):價格告警、選品儀表盤、ERP 自動訂價

12. 一鍵運行 & 源碼

bash

git clone https://github.com/yourname/amz-php-crawler.git
cd amz-php-crawler
composer install
php bin/amz.php B08N5WRWNW

輸出示例:

18:42:12 INFO ASIN=B08N5WRWNW, title=Apple AirPods Pro, price=$249.00, rating=4.6, reviews=25430

如果本文對你有幫助,記得 點贊 + 收藏 + 在看,我們下期「PHP + Swoole 實時價格流」見!

審核編輯 黃宇

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

    關注

    0

    文章

    462

    瀏覽量

    28643
  • Amazon
    +關注

    關注

    1

    文章

    127

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    踩坑高效落地:淘寶天貓商品詳情 API 的實操心得

    在電商數(shù)據(jù)開發(fā)、競品分析等場景中,淘寶天貓商品詳情API是獲取商品數(shù)據(jù)的核心入口。初期頻繁報錯、調用低效,如今穩(wěn)定支撐業(yè)務,我沉淀了一套
    的頭像 發(fā)表于 02-26 16:51 ?1235次閱讀

    技術探索:獲取識貨商品詳情數(shù)據(jù)

    。 1. 接口發(fā)現(xiàn) 首先,我們需要找到識貨App或網(wǎng)頁端加載商品詳情時發(fā)起的API請求。常見的方法包括: 瀏覽器開發(fā)者工具 :在網(wǎng)頁端打開識貨商品
    的頭像 發(fā)表于 02-25 15:23 ?125次閱讀
    技術探索:獲取識貨<b class='flag-5'>商品</b><b class='flag-5'>詳情</b>數(shù)據(jù)

    亞馬遜商品詳情數(shù)據(jù)獲取實戰(zhàn):從商品鏈接提取 ID 解析詳情

    ,使用官方API成為合規(guī)、穩(wěn)定獲取數(shù)據(jù)的首選方案。 1. PA-API v5(Product Advertising API) 適用于無自有亞馬遜店鋪的第三方開發(fā)者、聯(lián)盟推廣者或選品分析人員。 核心功能:通過ASIN或關鍵詞查詢商品基礎
    的頭像 發(fā)表于 02-10 16:41 ?319次閱讀

    得物商品詳情API

    一、官方 API 接入核心信息 1. 接入前提 注冊并入駐得物開放平臺(https://open.dewu.com/),完成企業(yè)認證與應用創(chuàng)建 申請商品詳情查詢等接口權限,獲取appKey
    的頭像 發(fā)表于 01-27 14:08 ?259次閱讀

    京東商品詳情API接口指南

    。 二、接口概述 1. 核心接口信息 項?說明 接口名稱商品詳情查詢(JD.item_get) 請求方式GET/POST(推薦 POST,避免參數(shù)暴露) 接口地址正式環(huán)境:c0b.cc
    的頭像 發(fā)表于 01-14 14:22 ?323次閱讀

    閑魚商品詳情 API 接口文檔

    一、接口概述 1. 接口功能 該接口用于獲取閑魚平臺商品的詳細信息,包括商品標題、價格、規(guī)格、賣家信息、庫存狀態(tài)、商品描述、圖片鏈接、交易記錄(部分公開數(shù)據(jù))等核心字段,支持開發(fā)者構建
    的頭像 發(fā)表于 01-04 16:42 ?1121次閱讀

    京東關鍵詞搜索商品列表的Python爬蟲實戰(zhàn)

    京東關鍵詞搜索商品列表 Python 爬蟲實戰(zhàn) 你想要實現(xiàn)京東關鍵詞搜索商品爬蟲,我會 合規(guī)聲明、環(huán)境準備、頁面分析、代碼實現(xiàn)、反爬優(yōu)化
    的頭像 發(fā)表于 01-04 10:16 ?774次閱讀

    1688商品詳情API指南

    一、摘要 1688平臺為開發(fā)者提供了完整的商品詳情API接口,支持獲取商品的詳細信息、規(guī)格參數(shù)、價格庫存等核心數(shù)據(jù)?;谀傲私獾墓S數(shù)據(jù)API,商品
    的頭像 發(fā)表于 12-11 11:09 ?780次閱讀

    閑魚商品詳情API完整指南

    視頻等內容。 二、接口概述 1.接口基本信息 接口名稱:goodfish.item_get。 請求方式:GET。 返回格式:JSON。 2.主要功能 獲取商品基本信息:標題、價格、描述等。 獲取賣家信息:昵稱、信用等級等。 獲取商品
    的頭像 發(fā)表于 12-02 11:46 ?466次閱讀

    # 深度解析:爬蟲技術獲取淘寶商品詳情并封裝為API的全流程應用

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

    如何通過API獲取1688平臺商品詳情

    ? ?在電商開發(fā)中,獲取商品詳情是常見的需求,尤其對于1688平臺(阿里巴巴旗下的批發(fā)采購平臺)。通過API接口,開發(fā)者可以高效地集成商品數(shù)據(jù)自己的應用中。本文將逐步介紹如何通過16
    的頭像 發(fā)表于 11-11 14:00 ?1179次閱讀
    如何通過API獲取1688平臺<b class='flag-5'>商品</b><b class='flag-5'>詳情</b>

    亞馬遜獲取商品詳情API接口指南

    ? ?在電商開發(fā)中,獲取商品詳情是核心需求之一。亞馬遜提供了一套強大的API接口,允許開發(fā)者高效提取商品信息,如標題、價格、描述和庫存狀態(tài)。本文將逐步介紹如何通過Amazon Prod
    的頭像 發(fā)表于 11-05 14:45 ?464次閱讀
    亞馬遜獲取<b class='flag-5'>商品</b><b class='flag-5'>詳情</b>API接口指南

    微店API秘籍!輕松獲取商品詳情數(shù)據(jù)

    一、前言 微店商品詳情API是微店開放平臺提供的核心接口之一,支持通過商品ID獲取商品的完整信息,包括標題、價格、庫存、圖片等關鍵數(shù)據(jù)。該接口廣泛應用于電商系統(tǒng)開發(fā)、數(shù)據(jù)分析和供應鏈管
    的頭像 發(fā)表于 11-05 10:30 ?436次閱讀

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

    在電商數(shù)據(jù)驅動的時代, 商品詳情數(shù)據(jù) 成為市場分析、價格監(jiān)控、競品調研的核心燃料。京東作為國內頭部電商平臺,其商品信息豐富、更新頻繁,是數(shù)據(jù)開發(fā)者眼中的“香餑餑”。 本文將帶你
    的頭像 發(fā)表于 09-23 16:42 ?870次閱讀
    <b class='flag-5'>從</b> <b class='flag-5'>0</b> <b class='flag-5'>到</b> <b class='flag-5'>1</b>:<b class='flag-5'>用</b> <b class='flag-5'>PHP</b> <b class='flag-5'>爬蟲</b><b class='flag-5'>優(yōu)雅</b>地<b class='flag-5'>拿下</b>京東<b class='flag-5'>商品</b><b class='flag-5'>詳情</b>

    eBay 商品詳情 API 深度解析:基礎信息變體數(shù)據(jù)獲取全方案

    通過本文提供的方案,開發(fā)者可以快速實現(xiàn) eBay 商品詳情數(shù)據(jù)的獲取和處理,為跨境電商應用提供豐富的商品信息支持。實際開發(fā)中,需遵守 eBay 開發(fā)者協(xié)議,合理使用獲取的商品數(shù)據(jù)。
    的頭像 發(fā)表于 08-18 10:17 ?995次閱讀
    eBay <b class='flag-5'>商品</b><b class='flag-5'>詳情</b> API 深度解析:<b class='flag-5'>從</b>基礎信息<b class='flag-5'>到</b>變體數(shù)據(jù)獲取全方案