> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/integrations/es/proxy-integrations/scrapy.md).

# Scrapy

Integra Scrapy con Proxies de Oxylabs para crear rastreadores web rápidos y asíncronos usando una guía paso a paso sencilla.

[Scrapy](https://scrapy.org/) es un framework de Python de código abierto diseñado para el web scraping y la extracción de datos a gran escala. Por defecto, Scrapy enruta las solicitudes directamente desde tu red local.

Sigue los pasos a continuación para integrar los siguientes Oxylabs Proxies:

* [**Proxies residenciales y Mobile Proxies**](#residential-and-mobile-proxies)
* [**Datacenter Proxies**](#datacenter-proxies)
* [**Dedicated Datacenter Proxies (Enterprise)**](#dedicated-datacenter-proxies-enterprise)
* [**Dedicated Datacenter Proxies (autoservicio)**](#dedicated-datacenter-proxies-self-service)
* [**ISP Proxies**](#isp-proxies)
* [**Dedicated ISP Proxies**](#dedicated-isp-proxies)

{% stepper %}
{% step %}

### Elige el método de integración

Scrapy admite dos métodos principales para enrutar solicitudes a través de Proxies: [**Parámetro meta de la solicitud**](#method-1-request-meta-parameter) (configuración por solicitud) y [**Middleware personalizado de descarga**](#method-2-custom-downloader-middleware-recommended) (configuración global del proyecto).

#### Método 1: Parámetro meta de la solicitud

Pasa los detalles de autenticación del proxy directamente a instancias individuales de `scrapy.Request` mediante el `meta` diccionario. Este método se recomienda para arañas simples o cuando distintas solicitudes requieren configuraciones específicas de proxy.

```python
import scrapy

class OxylabsSpider(scrapy.Spider):
    name = "oxylabs_spider"
    
    def start_requests(self):
        url = "https://ip.oxylabs.io/"
        proxy = "http://username:password@host:port"
        
        yield scrapy.Request(
            url=url,
            callback=self.parse,
            meta={"proxy": proxy}
        )

    def parse(self, response):
        ip_address = response.css("pre::text").get()
        self.logger.info(f"Connected via Oxylabs Proxy. Active IP: {ip_address}")
```

#### Método 2: Middleware personalizado de descarga (recomendado)

Para aplicar Proxies automáticamente en todas las solicitudes sin alterar el código de la araña, implementa un middleware personalizado de descarga de Scrapy.

Abre el archivo `middlewares.py` de tu proyecto de Scrapy y añade la `OxylabsProxyMiddleware` clase:

```python
class OxylabsProxyMiddleware:
    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.settings)

    def __init__(self, settings):
        self.username = settings.get("OXYLABS_USERNAME")
        self.password = settings.get("OXYLABS_PASSWORD")
        self.endpoint = settings.get("OXYLABS_ENDPOINT")

    def process_request(self, request, spider):
        host = f"http://{self.username}:{self.password}@{self.endpoint}"
        request.meta["proxy"] = host
```

Luego, registra el middleware y define tus credenciales de proxy en `settings.py`:

```python
# Oxylabs Credentials
OXYLABS_USERNAME = "username"
OXYLABS_PASSWORD = "password"
OXYLABS_ENDPOINT = "host:port"

# Enable Downloader Middleware
DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.OxylabsProxyMiddleware": 100,
    "scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware": 110,
}
```

{% endstep %}

{% step %}

### Configura tu proxy

Ajusta los detalles del proxy y las credenciales de usuario del proxy de Oxylabs (creadas en la [panel de Oxylabs](https://dashboard.oxylabs.io/en/)) para el tipo de proxy que elijas:

* [Proxies residenciales y Mobile Proxies](#residential-and-mobile-proxies)
* [Datacenter Proxies](#datacenter-proxies)
* [Dedicated Datacenter Proxies (Enterprise)](#dedicated-datacenter-proxies-enterprise)
* [Dedicated Datacenter Proxies (autoservicio)](#dedicated-datacenter-proxies-self-service)
* [ISP Proxies](#isp-proxies)
* [Dedicated ISP Proxies](#dedicated-isp-proxies)

#### Proxies residenciales y Mobile Proxies

**Host:** `pr.oxylabs.io`

**Puerto:** `7777`

**Nombre de usuario:** `customer-username`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `customer-` prefijo a tu nombre de usuario.
{% endhint %}

También puedes usar **parámetros adicionales** con Proxies residenciales y Mobile Proxies para establecer la geolocalización (país, estado, ciudad, etc.) y controlar las sesiones. Consulta la [documentación de Residential Proxies](/products/es/proxies/residential-proxies.md) para obtener más información. La tabla siguiente ofrece una vista general de los parámetros disponibles y sus valores de ejemplo.

<table><thead><tr><th width="167">Parámetro de proxy</th><th width="498">Ejemplo</th></tr></thead><tbody><tr><td><a href="/products/es/proxies/residential-proxies/location-settings/select-country.md#country-specific-entry-nodes">Nodo de entrada del país</a></td><td><p><strong>Host:</strong> <code>us-pr.oxylabs.io</code></p><p><strong>Puerto:</strong> <code>10000</code></p></td></tr><tr><td><a href="/products/es/proxies/residential-proxies/location-settings/select-country.md">País</a></td><td><strong>Usuario:</strong> <code>customer-username-cc-US</code></td></tr><tr><td><a href="/products/es/proxies/residential-proxies/location-settings/select-state.md">Estado</a></td><td><strong>Usuario:</strong> <code>customer-username-st-US_texas</code></td></tr><tr><td><a href="/products/es/proxies/residential-proxies/location-settings/select-city.md">Ciudad</a></td><td><strong>Usuario:</strong> <code>customer-username-city-paris</code></td></tr><tr><td><a href="/products/es/proxies/residential-proxies/location-settings/continent.md">Continente</a></td><td><strong>Usuario:</strong> <code>customer-username-cn-NA</code></td></tr><tr><td><a href="/products/es/proxies/residential-proxies/location-settings/zip-postal-code.md">Código ZIP/postal</a></td><td><strong>Usuario:</strong> <code>customer-username-cc-US-postalcode-90210</code></td></tr><tr><td><a href="/products/es/proxies/residential-proxies/location-settings/asn-targeting.md">Segmentación ASN</a></td><td><strong>Usuario:</strong> <code>customer-username-ASN-21928</code></td></tr><tr><td><a href="/products/es/proxies/residential-proxies/session-control.md">Sesión</a> (hasta 1440 minutos)</td><td><strong>Usuario:</strong> <code>customer-username-sessid-qwerty123-sesstime-1440</code></td></tr><tr><td><a href="broken://spaces/xofNngbwiAAH0MB3lMAb/pages/9d613ad09f8ad2641698b87a1c4253d1815a0378">Sesión persistente</a></td><td><p><strong>Host:</strong> <code>us-pr.oxylabs.io</code></p><p><strong>Puerto:</strong> <code>10001</code></p></td></tr></tbody></table>

#### Datacenter Proxies

**Host:** `dc.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `user-userername`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

{% tabs %}
{% tab title="suscripción de pago por IP" %}
El puerto es el número secuencial asignado a una dirección IP de la [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/datacenter-proxies/proxy-list.md). Así, el puerto `8001` usa la primera dirección IP de tu lista. También puedes habilitar [rotación automática de IP del proxy](/products/es/proxies/datacenter-proxies/ip-control.md) estableciendo el puerto en `8000`.

Además, puedes especificar la [geoubicación](/products/es/proxies/datacenter-proxies/select-country.md), por ejemplo, Estados Unidos, estableciendo el **nombre de usuario del proxy** en `user-USERNAME-country-US`.
{% endtab %}

{% tab title="suscripción de pago por tráfico" %}
El puerto `8001` elige una dirección IP aleatoria, pero se mantiene constante durante una sesión. Como alternativa, puedes [rotar las IP de proxy](/products/es/proxies/datacenter-proxies/ip-control.md) con cada solicitud usando el puerto `8000`.

Si quieres usar una [geoubicación](/products/es/proxies/datacenter-proxies/select-country.md), por ejemplo, EE. UU., establece el nombre de usuario del proxy en `user-USERNAME-country-US`.
{% endtab %}
{% endtabs %}

#### Dedicated Datacenter Proxies (Enterprise)

**Host:** `1.2.3.4` (dirección IP de tu [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md))

**Puerto:** `60000` (HTTP) o `1180` (SOCKS5)

**Nombre de usuario:** `username`

**Contraseña:** `contraseña`

Para Dedicated Datacenter Proxies Enterprise (comprados a través del equipo de ventas), tendrás que elegir una dirección IP de la adquirida [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/enterprise/proxy-lists.md).

#### Dedicated Datacenter Proxies (autoservicio)

**Host:** `ddc.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `user-userername`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Para Dedicated Datacenter Proxies de autoservicio (comprados a través del panel de Oxylabs), el puerto indica el número secuencial de una dirección IP de la adquirida [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-datacenter-proxies/self-service/proxy-list.md). Si quieres obtener una IP distinta con cada solicitud, cambia el Puerto a `8000` para habilitar [la rotación de proxy](/products/es/proxies/dedicated-datacenter-proxies/self-service/proxy-rotation.md).

#### ISP Proxies

**Host:** `isp.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `user-username`

**Contraseña:** `contraseña`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Con ISP Proxies, el puerto se asigna a una dirección IP específica y su ubicación. Por lo tanto, el puerto `8001` siempre elegirá la primera IP de tu [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/isp-proxies/proxy-list.md).

Si quieres obtener una IP distinta con cada solicitud, cambia el Puerto a `8000` para habilitar [la rotación de proxy](/products/es/proxies/isp-proxies/proxy-rotation.md).

#### Dedicated ISP Proxies

**Host:** `disp.oxylabs.io`

**Puerto:** `8001`

**Nombre de usuario:** `PASSWORD`

**Contraseña:** `PASSWORD`

{% hint style="warning" %}
**Nota:** No olvides añadir `user-` prefijo a tu nombre de usuario.
{% endhint %}

Necesitarás elegir el puerto asignado a una dirección IP de los Proxies comprados [que puede encontrar en el panel de Oxylabs. El](/products/es/proxies/dedicated-isp-proxies/self-service/proxy-list.md), que puedes encontrar en el panel de Oxylabs. El `8001` puerto seleccionará la primera dirección IP de tu lista para todas las solicitudes. Usa el puerto `8000` para la [rotación automática de IP del proxy](/products/es/proxies/dedicated-isp-proxies/self-service/proxy-rotation.md).
{% endstep %}

{% step %}

### Ejecuta la araña

Ejecuta tu araña de Scrapy desde la terminal usando el `crawl` comando:

```bash
scrapy crawl oxylabs_spider
```

Si se configura correctamente, Scrapy ejecutará las solicitudes a través de la pasarela proxy de Oxylabs y registrará la dirección IP de salida externa asignada.
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/integrations/es/proxy-integrations/scrapy.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
