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.
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_uriEm 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,
}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:
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
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 = 180Execute a spider
Execute seu spider do Scrapy pela linha de comando:
scrapy crawl unblocker_spiderO 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?

