# Categoría

El `target_category` la fuente está diseñada para recuperar páginas de categorías de Target basadas en el ID de nodo de la taxonomía de Target. La fuente admite funciones de localización y permite explorar las categorías de productos de Target.

## Ejemplos de solicitudes

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

```bash
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
    "source": "target_category",
    "category_id": "owq2q",
    "render": "html"
}'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Estructurar payload
payload = {
    'source': 'target_category',
    'category_id': 'owq2q',
    'render': 'html',
}

# Obtener respuesta
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# Imprimir la respuesta
pprint(response.json())
```

{% endtab %}

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

```javascript
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();
```

{% endtab %}

{% tab title="HTTP" %}

```http
# La cadena completa que envíes debe estar codificada en URL.

https://realtime.oxylabs.io/v1/queries?source=target_category&category_id=owq2q&render=html&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?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);
```

{% 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":  "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))
}
```

{% 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", "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();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "target_category",
    "category_id": "owq2q",
    "render": "html"
}
```

{% endtab %}
{% endtabs %}

Usamos el método de integración síncrono [**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime) en nuestros ejemplos. Si desea usar [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/proxy-endpoint) o integración asincrónica [**Push-Pull**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/push-pull) consulte los [**métodos de integración**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods) de la sección.

## Valores de los parámetros de la solicitud

### Genérico

| Parámetro                                                     | Descripción                                                                                                                                                                                                                                         | Valor predeterminado |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| `source`                                                      | Establece el scraper.                                                                                                                                                                                                                               | target\_category     |
| <mark style="background-color:green;">**category\_id**</mark> | ID de nodo de la taxonomía de Target para la categoría (por ejemplo, "owq2q" para controladores de PlayStation 5).                                                                                                                                  | -                    |
| `render`                                                      | Activa el renderizado de JavaScript cuando se establece en `html`. [**Más información**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features/js-rendering-and-browser-control/javascript-rendering)**.** | -                    |
| `callback_url`                                                | URL de su endpoint de callback. [**Más información**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/integration-methods/push-pull#callback).                                                                                | -                    |
| `user_agent_type`                                             | Tipo de dispositivo y navegador. La lista completa se puede encontrar [**aquí**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features/http-context-and-job-management/user-agent-type).                   | desktop              |

&#x20;    \- parámetro obligatorio

### Localización

Adapte los resultados a tiendas específicas, tipos de cumplimiento y ubicaciones de entrega.

| Parámetro          | Descripción                                                                                                             | Tipo    |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------- |
| `fulfillment_type` | Establece el tipo de cumplimiento. Los valores disponibles son: pickup, shipping, shop\_in\_store, same\_day\_delivery. | String  |
| `store_id`         | Establece la ubicación de la tienda.                                                                                    | Integer |
| `delivery_zip`     | Establece el lugar de envío.                                                                                            | String  |

## Comprender los IDs de nodo de Target

El sistema de categorías de Target utiliza IDs de nodo para identificar categorías específicas. Estos IDs de nodo son identificadores únicos en el sistema de taxonomía de Target.

### Ejemplos de IDs de nodo

Los IDs de nodo se pueden encontrar en la URL de la página de la categoría. Es la parte de la URL que tiene el formato `N-<5 symbols>` . Aquí hay algunas URL de categorías de ejemplo y sus IDs de nodo correspondientes:

1. Controladores de PlayStation 5: `owq2q`
   * URL completa: <https://www.target.com/c/playstation-5-controllers-video-games/-/N-owq2q>
2. Accesorios de PlayStation 5: `lbxgt`
   * URL completa: <https://www.target.com/c/playstation-5-accessories/-/N-lbxgt>
3. PlayStation 5: `hj96d`
   * URL completa: <https://www.target.com/c/playstation-5/-/N-hj96d>

<figure><img src="https://338917265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2F0Jq6hZMzkJBdxQFKMZ80%2Fimage.png?alt=media&#x26;token=1f4e99fb-ebd6-482e-89b1-8a887c334d72" alt=""><figcaption></figcaption></figure>

### Formato de ID de nodo

Al usar la `target_category` source, solo necesita proporcionar el ID de nodo sin el `N-` prefijo. La API formateará automáticamente la URL correctamente.
