For the complete documentation index, see llms.txt. This page is also available as Markdown.

Scrapy

Siga um guia passo a passo em Python para integrar o Web Unblocker da Oxylabs com o Scrapy

Integrar Scrapy com Oxylabs Web Unblocker para melhorar o acesso à web, lidar com CAPTCHAs e executar a renderização de JavaScript automaticamente. Este guia cobre Metadados da Requisição e Middleware personalizado do Downloader.

1

Escolha o método de integração

O Scrapy oferece suporte a dois métodos para rotear o tráfego pelo Web Unblocker: Parâmetro Meta da Requisição (configuração por requisição) e Middleware personalizado do Downloader (configuração em nível de projeto).

Método 1: Parâmetro Meta da Request

Passe os detalhes de autenticação do Web Unblocker diretamente para instâncias individuais scrapy.Request usando o meta dicionário. Você também pode fornecer cabeçalhos de recursos personalizados do Web Unblocker dentro do parâmetro da requisição cabeçalhos parâmetro.

import scrapy

class UnblockerSpider(scrapy.Spider):
    name = "unblocker_spider"

    def start_requests(self):
        url = "https://sandbox.oxylabs.io/products"
        proxy_uri = "http://YOUR_USERNAME:YOUR_PASSWORD@unblock.oxylabs.io:60000"
        
        # Cabeçalhos personalizados opcionais do Web Unblocker
        headers = {
            "x-oxylabs-render": "html",           # Ativar renderização de JavaScript
            "X-Oxylabs-Geo-Location": "Germany",  # Definir segmentação geográfica
        }

        yield scrapy.Request(
            url=url,
            callback=self.parse,
            headers=headers,
            meta={"proxy": proxy_uri}
        )

    def parse(self, response):
        for product in response.css(".product-card"):
            yield {
                "title": product.css(".title::text").get(),
                "price": product.css(".price-wrapper::text").get(),
            }

Método 2: Middleware personalizado do Downloader (recomendado)

Para rotear todas as requisições do spider pelo Web Unblocker globalmente, sem modificar métodos de requisição individuais, implemente um Scrapy Downloader Middleware personalizado.

Abra o arquivo do seu projeto Scrapy middlewares.py arquivo e adicione o OxylabsWebUnblockerMiddleware classe:

class OxylabsWebUnblockerMiddleware:
    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.settings)

    def __init__(self, settings):
        self.username = settings.get("OXYLABS_UNBLOCKER_USER")
        self.password = settings.get("OXYLABS_UNBLOCKER_PASS")
        self.endpoint = settings.get("OXYLABS_UNBLOCKER_ENDPOINT", "unblock.oxylabs.io:60000")

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

Em seguida, registre o middleware e especifique suas credenciais em settings.py:

# Configurações do Web Unblocker
OXYLABS_UNBLOCKER_USER = "YOUR_USERNAME"
OXYLABS_UNBLOCKER_PASS = "YOUR_PASSWORD"
OXYLABS_UNBLOCKER_ENDPOINT = "unblock.oxylabs.io:60000"

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

Insira credenciais e cabeçalhos personalizados

Web Unblocker usa um único ponto de entrada centralizado para todas as requisições:

Host: unblock.oxylabs.io

Porta: 60000

Nome de usuário: YOUR_USERNAME

Senha: YOUR_PASSWORD

Web Unblocker usa IA para gerar fingerprints do navegador e cabeçalhos de requisição ideais automaticamente. Portanto, evite passar cabeçalhos padrão do navegador (como strings personalizadas de User-Agent), a menos que seja necessário. Para controlar o comportamento do Web Unblocker, passe os seguintes cabeçalhos personalizados em suas requisições: User-Agent strings) a menos que seja necessário. Para controlar o comportamento do Web Unblocker, passe os seguintes cabeçalhos personalizados em suas requisições:

Cabeçalho personalizado
Descrição
Valor de exemplo

x-oxylabs-render

Força a renderização de navegador headless para sites dinâmicos e pesados em JavaScript. Saiba mais aqui.

html

X-Oxylabs-Geo-Location

Define segmentação geográfica (aceita nomes de países, estados ou CEPs). Saiba mais aqui.

Estados Unidos

X-Oxylabs-Session-Id

Reutiliza o mesmo endereço IP e sessão em requisições sequenciais. Saiba mais aqui.

session_abc123

x-oxylabs-force-headers

Força o Web Unblocker a passar seus cabeçalhos de requisição personalizados para o destino.

1

x-oxylabs-force-cookies

Força o Web Unblocker a preservar e enviar cookies personalizados para o site de destino.

1

3

Configurar timeouts de resposta

Ao ativar a renderização de JavaScript (x-oxylabs-render: html), o Web Unblocker usa uma instância interna de navegador headless para executar scripts da página e aguardar o carregamento de elementos dinâmicos do DOM.

Como a renderização do navegador leva mais tempo do que requisições HTTP GET padrão, ajuste o timeout de download do Scrapy em settings.py para evitar que as requisições sejam descartadas:

DOWNLOAD_TIMEOUT = 180
4

Execute a spider

Execute seu spider do Scrapy pela linha de comando:

scrapy crawl unblocker_spider

O Web Unblocker processará a requisição por meio de sua infraestrutura de proxy com IA, gerenciará o fingerprinting do navegador e as tentativas, e retornará o conteúdo final da página HTML diretamente ao seu método parse do Scrapy.

Atualizado

Isto foi útil?