Pular para o conteúdo

Usando Scrapy e Selenium com proxies da GProxy.net para parsing de preços

Инструменты
Usando Scrapy e Selenium com proxies da GProxy.net para parsing de preços

O parsing de preços em escala exige uma abordagem híbrida que equilibre velocidade bruta com a capacidade de contornar mecanismos anti-bot sofisticados. Ao integrar o framework de crawling assíncrono do Scrapy com a automação de navegador do Selenium e a rede de proxies residenciais da GProxy.net, os desenvolvedores conseguem extrair de forma confiável dados de preços em tempo real até dos ambientes de e-commerce mais protegidos. Essa combinação garante que você lide com renderização pesada em JavaScript mantendo um perfil de detecção baixo por meio de IPs residenciais rotativos.

A arquitetura de um parser de preços de alta performance

Construir um parser de preços deixou de ser uma simples questão de enviar uma requisição GET e analisar o HTML. Plataformas de e-commerce modernas como Amazon, Zalando e Walmart usam renderização dinâmica de preços, na qual o custo real do item é injetado no DOM via JavaScript depois do carregamento inicial da página. Isso exige uma abordagem arquitetural em duas camadas.

O Scrapy é a espinha dorsal da operação. Sua natureza assíncrona permite lidar com milhares de requisições simultaneamente, o que o torna ideal para percorrer páginas de categoria e descobrir URLs de produtos. Porém, quando o Scrapy encontra uma página protegida por PerimeterX ou Akamai, ou uma página que exige execução pesada de JS para exibir os preços da "Buy Box", ele repassa a tarefa ao Selenium. O Selenium opera uma instância real de navegador (Chrome ou Firefox), executando scripts e tratando cookies exatamente como faria um usuário humano.

O elo que falta nessa arquitetura é a identidade de rede. Sites de e-commerce monitoram a reputação do IP e os padrões de requisição. Se detectarem um alto volume de requisições vindas de uma faixa de IP de datacenter, servirão imediatamente CAPTCHAs ou dados de preço incorretos (ghosting). A GProxy.net fornece a infraestrutura residencial necessária para mascarar essas requisições automatizadas. Usando os proxies residenciais rotativos da GProxy, cada requisição parece se originar de uma conexão doméstica única, tornando praticamente impossível para os servidores de destino distinguir o scraper de um comprador legítimo.

Usando Scrapy e Selenium com proxies da GProxy.net para parsing de preços

Integrando os proxies da GProxy.net com o Scrapy

Para usar a GProxy.net com o Scrapy, você precisa implementar um middleware customizado ou usar o HttpProxyMiddleware nativo. Como o parsing de preços envolve requisições de alta frequência, a melhor prática é usar os nós backconnect da GProxy, que fazem a rotação automaticamente do lado do servidor.

Configurando as settings do Scrapy

No seu settings.py, você precisa habilitar o middleware de proxy e informar suas credenciais GProxy. Usar proxies residenciais garante que suas requisições sejam roteadas por dispositivos de usuários reais, reduzindo bastante a chance de bloqueio durante crawls de larga escala.


# settings.py
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400,
}

# Configuração do proxy residencial GProxy
# Formato: http://username:[email protected]:port
PROXY_URL = "http://user-12345:[email protected]:8000"

Implementando a lógica de proxy nos spiders

Você pode passar a meta-tag de proxy diretamente no seu scrapy.Request. Isso é especialmente útil quando você quer alternar entre diferentes zonas da GProxy (por exemplo, trocar proxies dos EUA por proxies do Reino Unido para comparação regional de preços).


import scrapy

class PriceSpider(scrapy.Spider):
    name = 'gproxy_spider'
    
    def start_requests(self):
        urls = ['https://example-ecommerce.com/product-1']
        for url in urls:
            yield scrapy.Request(
                url=url, 
                callback=self.parse,
                meta={'proxy': 'http://user-12345:[email protected]:8000'}
            )

    def parse(self, response):
        price = response.css('.price-tag::text').get()
        yield {'price': price, 'url': response.url}

Lidando com conteúdo dinâmico usando Selenium e GProxy

Quando um site usa "Shadow DOM" ou gerenciamento de estado complexo em React/Vue para exibir preços, o Selector do Scrapy retornará resultados vazios. É aí que o Selenium se torna necessário. Para manter o anonimato, o Selenium também precisa ser configurado para usar os nós da GProxy.net.

Usar o selenium-wire é a abordagem recomendada para integração de proxy, porque ele permite manipular headers com facilidade e suporta proxies com autenticação, algo com que os drivers padrão do Selenium costumam ter dificuldade sem o carregamento manual de extensões.


from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Options

def get_dynamic_price(url):
    proxy_options = {
        'proxy': {
            'http': 'http://user-12345:[email protected]:8000',
            'https': 'https://user-12345:[email protected]:8000',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }
    
    chrome_options = Options()
    chrome_options.add_argument('--headless') # Executa sem interface para ganhar performance
    
    driver = webdriver.Chrome(options=chrome_options, seleniumwire_options=proxy_options)
    
    try:
        driver.get(url)
        # Aguarda o elemento de preço ser renderizado via JS
        price_element = driver.find_element_by_css_selector('.dynamic-price')
        return price_element.text
    finally:
        driver.quit()

Ao usar o Selenium, o gerenciamento de recursos é crítico. Uma única instância do Chrome pode consumir de 200MB a 500MB de RAM. Se você está fazendo parsing de 10.000 preços, não deve iniciar 10.000 instâncias. Em vez disso, use um pool de workers ou integre o Selenium a um middleware do Scrapy (como o scrapy-selenium) para reaproveitar instâncias do driver entre várias requisições.

Usando Scrapy e Selenium com proxies da GProxy.net para parsing de preços

Comparando Scrapy e Selenium para extração de preços

A escolha da ferramenta certa depende da complexidade do site alvo. A tabela a seguir compara os dois métodos quando usados em conjunto com os proxies residenciais da GProxy.net.

Característica Scrapy + GProxy Selenium + GProxy
Velocidade Alta (assíncrono) Baixa (overhead do navegador)
Uso de recursos Baixo (eficiente em memória) Alto (intensivo em CPU/RAM)
Renderização de JS Não (requer Splash/Playwright) Suporte nativo
Bypass de anti-bot Médio (depende de headers/IP) Alto (imita usuário real)
Melhor caso de uso Scraping de catálogo/categoria Checkout/lógica de preço dinâmico

Estratégias avançadas de proxy: geo-targeting e sessões sticky

O parsing de preços muitas vezes exige ver o que um usuário de uma localização específica vê. Por exemplo, a Amazon exibe custos de frete e preços localizados diferentes conforme o endereço IP do visitante. A GProxy.net permite geo-targeting granular, o que é essencial para uma inteligência competitiva precisa.

Implementando sessões sticky

Em alguns cenários, você precisa manter o mesmo endereço IP em várias requisições — por exemplo, ao adicionar um item ao carrinho para ver o preço final com impostos. A GProxy suporta "sessões sticky" adicionando um ID de sessão ao seu nome de usuário. Isso garante que, durante aquela sessão (por exemplo, 10–30 minutos), todas as suas requisições passem pelo mesmo nó de saída residencial.

Exemplo de string de sessão sticky: user-12345-session-uniqueid789:[email protected]:8000. Alterando a parte uniqueid789, você dispara um novo IP sempre que sua lógica exigir.

Comparações regionais de preços

Se você monitora preços de uma marca global, precisa verificar a precificação em diferentes mercados. Com a GProxy, você pode especificar o código do país nas credenciais do proxy. Isso é vital para verificar a conformidade com o Preço Mínimo Anunciado (MAP) em diferentes jurisdições sem ser redirecionado para uma landing page global.

  • Preços dos EUA: use country-us na sua configuração GProxy.
  • Preços da UE: use country-de ou country-fr para ver preços em euros.
  • Ásia-Pacífico: mire country-jp ou country-sg para marketplaces regionais como Rakuten ou Shopee.

Lidando com sistemas anti-bot e fingerprinting

Os proxies são a primeira linha de defesa, mas sites sofisticados também analisam fingerprints do navegador. Ao usar o Selenium, você precisa modificar a propriedade navigator.webdriver para undefined. Os sites checam essa flag para descobrir se o navegador está sendo controlado por software de automação.

Além disso, preste atenção ao User-Agent. Se você usar os IPs residenciais da GProxy mas enviar o User-Agent padrão do Scrapy (Scrapy/2.x (+https://scrapy.org)), será bloqueado na hora. Use sempre uma biblioteca como python-user-agents para gerar strings realistas e modernas que combinem com a versão do navegador que você está simulando no Selenium.

  1. Rotacione User-Agents: garanta que o User-Agent combine com o tipo de dispositivo percebido do proxy (mobile vs. desktop).
  2. Gerencie cookies: limpe os cookies entre sessões, a menos que esteja usando sessões sticky para um fluxo de múltiplas etapas.
  3. Aleatorize os delays: use time.sleep(random.uniform(1, 5)) no Selenium para imitar padrões humanos de leitura.
  4. Monitore os códigos de resposta: se vir um 403 ou 427, rotacione imediatamente o ID de sessão da GProxy.

Principais conclusões

Fazer parsing de preços em escala com sucesso é um equilíbrio entre eficiência e discrição. Combinando Scrapy, Selenium e GProxy.net, você cria um pipeline robusto, capaz de superar os obstáculos mais comuns do web scraping.

  • Abordagem híbrida: use Scrapy para descoberta de URLs em alto volume e Selenium apenas para páginas que exigem execução de JavaScript para revelar preços.
  • Vantagem residencial: use sempre proxies residenciais da GProxy.net na fase final de extração de dados; IPs de datacenter são sinalizados com facilidade demais pelos filtros de CDN do e-commerce.
  • Gestão de sessão: utilize sessões sticky quando precisar manter uma identidade consistente ao longo de um processo de descoberta de preço em várias etapas (por exemplo, adicionar ao carrinho, informar um CEP).

Dica prática 1: monitore sempre sua "taxa de sucesso" por zona de proxy. Se notar queda nas extrações bem-sucedidas em uma região específica, rotacione os IDs de sessão da GProxy ou troque de nós Datacenter para residenciais imediatamente.

Dica prática 2: implemente um "Retry Middleware" no Scrapy que procure especificamente por erros 429 (Too Many Requests) e 403 (Forbidden). Configure-o para repetir a requisição automaticamente usando um novo IP residencial da GProxy, garantindo que seu crawl não trave por bloqueios temporários.

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.