类别
了解如何使用网页爬虫 API 获取 Target 类别页面数据。了解请求参数以及如何查找类别节点 ID。
该 target_category 该 source 用于根据 Target 的分类节点 ID 检索 Target 类别页面。该 source 支持本地化功能,并允许您浏览 Target 的产品类别。
请求示例
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
"source": "target_category",
"category_id": "owq2q",
"render": "html"
}'import requests
from pprint import pprint
# 构建负载
payload = {
'source': 'target_category',
'category_id': 'owq2q',
'render': 'html',
}
# 获取响应
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('USERNAME', 'PASSWORD'),
json=payload,
)
# 打印响应
pprint(response.json())const https = require("https");
const username = "USERNAME";
const password = "PASSWORD";
const body = {
source: "target_category",
category_id: "owq2q",
render: "html",
};
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();# 您提交的整个字符串必须进行 URL 编码。
https://realtime.oxylabs.io/v1/queries?source=target_category&category_id=owq2q&render=html&access_token=12345abcde<?php
$params = array(
'source' => 'target_category',
'category_id' => 'owq2q',
'render' => 'html'
);
$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);package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
const Username = "USERNAME"
const Password = "PASSWORD"
payload := map[string]interface{}{
"source": "target_category",
"category_id": "owq2q",
"render": "html",
}
jsonValue, _ := json.Marshal(payload)
client := &http.Client{}
request, _ := http.NewRequest("POST",
"https://realtime.oxylabs.io/v1/queries",
bytes.NewBuffer(jsonValue),
)
request.SetBasicAuth(Username, Password)
response, _ := client.Do(request)
responseText, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(responseText))
}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", "target_category");
jsonObject.put("category_id", "owq2q");
jsonObject.put("render", "html");
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();
}
}{
"source": "target_category",
"category_id": "owq2q",
"render": "html"
}在我们的示例中,我们使用同步的 Realtime 集成方法。如果您想使用 Proxy Endpoint 或异步的 Push-Pull 集成,请参阅 集成方法 部分。
请求参数值
通用
- 必填参数
本地化
将结果适配到特定门店、配送类型和送货位置。
参数
说明
类型
fulfillment_type
设置履约类型。可用值:pickup、shipping、shop_in_store、same_day_delivery。
字符串
store_id
设置门店位置。
整数
delivery_zip
设置收货邮编位置。
字符串
了解 Target 的节点 ID
Target 的类别系统使用节点 ID 来标识特定类别。这些节点 ID 是 Target 分类系统中的唯一标识符。
示例节点 ID
节点 ID 可在类别页面 URL 中找到。它是 URL 中具有以下格式的部分 N-<5 个字符> 。以下是一些示例类别 URL 及其对应的节点 ID:
PlayStation 5 手柄:
owq2qPlayStation 5 配件:
lbxgtPlayStation 5:
hj96d

节点 ID 格式
使用该 target_category source 时,您只需提供不带 N- 前缀的节点 ID。API 会自动正确格式化 URL。
最后更新于
这有帮助吗?

