# Amazon

使用 网页爬虫API，您可以抓取和解析各种类型的 **Amazon** 页面；下面是所有受支持爬虫及其相应 `source` 值的概述。

| 来源                   | 说明                                                                                                                                            | 专用解析器                                                                                                                                                                           |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `amazon_product`     | [**商品页面**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/targets/amazon/product) 用于您选择的 ASIN。        | 是的。                                                                                                                                                                             |
| `amazon_search`      | [**搜索结果**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/targets/amazon/search) 用于您选择的搜索词。           | 是的。                                                                                                                                                                             |
| `amazon_pricing`     | [**报价列表**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/targets/amazon/pricing) 可用于您选择的 ASIN。       | 是的。                                                                                                                                                                             |
| `amazon_sellers`     | [**卖家信息**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/targets/amazon/sellers) 用于您选择的卖家。           | 是的。                                                                                                                                                                             |
| `amazon_bestsellers` | 列表 [**畅销商品**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/targets/amazon/best-sellers) 在您选择的分类节点中。 | 是                                                                                                                                                                               |
| `amazon`             | 提交任何 [**Amazon URL**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/targets/amazon/url) 您想要的。        | 仅限特定类型的 URL [**Amazon 页面类型**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/features/result-processing-and-storage/dedicated-parsers). |

## 快速开始

**创建您的 API 用户凭证**：在 [**Oxylabs 仪表板**](https://dashboard.oxylabs.io/en/registration) 注册试用或购买产品以创建您的 API 用户凭证（`USERNAME` 和 `PASSWORD`).

{% hint style="warning" %}
如果您需要为帐户创建多个 API 用户，请联系 [**客户支持**](mailto:support@oxylabs.io) 或使用我们的 24/7 在线聊天支持发送消息。
{% endhint %}

### 请求示例

{% tabs %}
{% tab title="cURL" %}

```bash
curl 'https://realtime.oxylabs.io/v1/queries' \
--user "USERNAME:PASSWORD" \
-H "Content-Type: application/json" \
-d '{
        "source": "amazon_product",
        "query": "B07FZ8S74R",
        "geo_location": "90210",
        "parse": true
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# 构建负载。
payload = {
    'source': 'amazon_product',
    'query': 'B07FZ8S74R',
    'geo_location': '90210',
    'parse': True
}

# 获取响应。
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# 将美化后的响应打印到标准输出。
pprint(response.json())
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "amazon_product",
    query: "B07FZ8S74R",
    geo_location: "90210",
    parse: true,
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization:
            "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Error:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'amazon_product',
    'query' => 'B07FZ8S74R',
    'geo_location' => '90210',
    'parse' => true,
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
?>
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "amazon_product",
                query = "B07FZ8S74R",
                geo_location = "90210",
                parse = true
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source":       "amazon_product",
		"query":        "B07FZ8S74R",
		"geo_location": "90210",
		"parse":        true,
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	request.Header.Set("Content-Type", "application/json")
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}
```

{% endtab %}

{% tab title="HTTP" %}

```http
https://realtime.oxylabs.io/v1/queries?source=amazon_product&query=B07FZ8S74R&geo_location=90210&parse=true&access_token=12345abcde
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "amazon_product");
        jsonObject.put("query", "B07FZ8S74R");
        jsonObject.put("geo_location", "90210");
        jsonObject.put("parse", true);

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "amazon_product",
    "query": "B07FZ8S74R",
    "geo_location": "90210",
    "parse": true
}
```

{% endtab %}
{% endtabs %}

<details>

<summary>输出示例</summary>

```json
{
    "results": [
        {
            "content": {
                "ads": [
                    {
                        "pos": 1,
                        "asin": "B07KRY43KN",
                        "type": "organic_also_viewed",
                        "price": 29.99,
                        "title": "Echo Glow - 多色智能灯，兼容 Alexa",
                        "images": [
                            "https://images-na.ssl-images-amazon.com/images/I/61kaGoho9HL._AC_UL160_SR160,160_.jpg"
                        ],
                        "rating": 4.5,
                        "location": "carousel",
                        "price_upper": 29.99,
                        "reviews_count": 48742,
                        "is_prime_eligible": false
                    },
                    {...}
                ],
                "url": "https://www.amazon.com/dp/B07FZ8S74R",
                "asin": "B07FZ8S74R",
                "page": 1,
                "brand": "Amazon",
                "price": 0,
                "stock": "当前无货。我们不知道该商品何时或是否会补货。",
                "title": "Echo Dot (第3代，2018 发布) - 带 Alexa 的智能音箱 - 木炭色",
                "coupon": "",
                "images": [
                    "https://m.media-amazon.com/images/I/61MZfowYoaL._AC_SL1000_.jpg",
                    "..."
                ],
                "rating": 4.7,
                "category": [],
                "currency": "USD",
                "delivery": [],
                "page_type": "Product",
                "price_sns": 0,
                "variation": [],
                "has_videos": false,
                "sales_rank": [],
                "top_review": "我最近在智能家居中添加了 Echo Dot (第3代，2018 发布)，对其性能和功能印象深刻。这个紧凑的智能音箱在功能性和便利性方面表现出色。设置非常简单——几分钟内我就让 Alexa 启动并运行，准备提供帮助。语音识别非常准确，Alexa 的响应既快速又有用。无论是查看天气、设置定时器还是播放我喜欢的音乐，Echo Dot 都能轻松融入我的日常。声音质量对如此紧凑的设备来说出乎意料地强劲。音频的清晰度和深度都很令人印象深刻，非常适合流媒体音乐，甚至可以作为更大音响系统的辅助扬声器。我很欣赏 Echo Dot 简洁且不突兀的设计，能无缝融入任何房间的装饰。木炭色增添了一丝优雅，使其成为居住空间中外观讨喜的补充。突出特点之一是智能家居控制。Echo Dot 能轻松连接各种智能设备，使我能通过简单的语音命令控制灯光、恒温器等，真正提升了智能家居的整体便利性。总之，Echo Dot (第3代，2018 发布) 已证明是我家中不可或缺的补充。其语音识别准确性、令人印象深刻的音质和无缝的智能家居集成，使其在智能音箱市场中脱颖而出。如果你正在寻找一款可靠且功能丰富的智能音箱，Echo Dot 是一个极佳的选择——强烈推荐！\n  \n阅读更多",
                "asin_in_url": "B07FZ8S74R",
                "description": "",
                "parent_asin": "B07H65KP63",
                "price_upper": 0,
                "pricing_str": "",
                "pricing_url": "https://www.amazon.com/gp/offer-listing/B07FZ8S74R?startIndex=0",
                "manufacturer": "Amazon",
                "price_buybox": -1,
                "product_name": "Echo Dot (第3代，2018 发布) - 带 Alexa 的智能音箱 - 木炭色",
                "bullet_points": "认识 ECHO DOT - 我们最紧凑的智能音箱，完美适合狭小空间。\n丰富而响亮的声音 - 相较于 Echo Dot 第2代，扬声器质量更好，声音更丰富更响亮。可与第二个 Echo Dot 配对实现立体声。\nALEXA 帮助您通过 PRIME 做更多事情 - 使用 Amazon Music 收听数百万首歌曲，通过语音享受两日送达，在 Audible 收听有声书，等等。\n让生活更轻松 - Alexa 可以设置定时器、查看天气、阅读新闻、调节恒温器、回答问题等，帮助完成日常任务。\n旨在保护您的隐私 —— 内置多层隐私控制，包括删除录音、静音麦克风以及应用内更多隐私控制。\n用简单短语控制音乐 - Echo Dot 允许您通过 Amazon Music、Apple Music、Spotify、SiriusXM 等流式播放歌曲，也可通过蓝牙。使用 Alexa 的语音控制可轻松跳到下一首、调节音量和暂停，无需起身。\n免提与他人联系 - 可呼叫拥有 Alexa 应用或 Echo 设备的朋友和家人。可立即加入其他房间或向全屋广播“晚餐准备好了”。\nALEXA 拥有技能 - 拥有数以万计的技能并在不断增加，Alexa 持续变得更智能并新增如健身追踪、玩游戏等技能。",
                "price_initial": 0,
                "pricing_count": 1,
                "reviews_count": 985157,
                "sns_discounts": [],
                "developer_info": [],
                "price_shipping": 0,
                "featured_merchant": [],
                "is_prime_eligible": false,
                "parse_status_code": 12005,
                "answered_questions_count": 0,
                "rating_stars_distribution": [
                    {
                        "rating": 5,
                        "percentage": 82
                    },
                    {...}
                ]
            },
            "created_at": "2024-07-01 09:05:45",
            "updated_at": "2024-07-01 09:05:55",
            "page": 1,
            "url": "https://www.amazon.com/dp/B07FZ8S74R",
            "job_id": "7213467808577910785",
            "status_code": 200,
            "parser_type": ""
        }
    ]
}
```

</details>

我们在示例中使用同步 [**Realtime**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/integration-methods/realtime) 集成方法。如果您想使用 [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/integration-methods/proxy-endpoint) 或异步 [**Push-Pull**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/integration-methods/push-pull) 集成，请参阅 [**集成方法**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/integration-methods) 部分。

可选地，您可以包含其他参数，例如 `geo_location`, `user_agent_type`, `parse`, `render` 以及更多可用于自定义您的爬取请求。阅读更多：

{% content-ref url="../features" %}
[features](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/features)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/targets/amazon.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
