Proxy Port logo
Como Guias de instruções > Como configurar um proxy para Scrapy

Como configurar um proxy para Scrapy

O Scrapy é uma poderosa estrutura de rastreamento e raspagem da Web que permite aos desenvolvedores extrair facilmente dados de sites. No entanto, às vezes, os sites podem bloquear ou limitar as solicitações de um único endereço IP, dificultando a coleta dos dados desejados. Para superar isso, o Scrapy permite que os desenvolvedores configurem proxies que podem ser usados para rotacionar endereços IP e contornar essas restrições. Neste artigo, exploraremos como configurar um proxy para Scrapy globalmente e para solicitações específicas, permitindo que você colete dados de sites com mais eficiência e eficácia.

A maneira mais fácil de configurar um proxy para Scrapy é usar o pacote scrapy-proxyport.
Ou, se você quiser definir manualmente o proxy, continue lendo.

Proxy para um pedido específico

Para definir um proxy para uma solicitação específica no Scrapy, você pode passar o proxy como um parâmetro meta ao criar o objeto Request. Aqui está um trecho de código de exemplo:

import scrapy

class MySpider(scrapy.Spider):
    name = 'my_spider'
    start_urls = ['http://www.example.com']

    def start_requests(self):
        # Definir proxy para a primeira solicitação
        yield scrapy.Request(
            url=self.start_urls[0],
            meta={
                'proxy': 'http://proxy.example.com:8080'
            }
        )

    def parse(self, response):
        # Faça uma nova solicitação com um proxy diferente
        yield scrapy.Request(
            url='http://www.example.com/page2',
            meta={
                'proxy': 'http://proxy2.example.com:8080'
            },
            callback=self.parse_page
        )

    def parse_page(self, response):
        # Faça algo com a resposta
        pass

            
        
No exemplo acima, a primeira solicitação usará o proxy http://proxy.example.com:8080, enquanto a segunda solicitação usará o http://proxy2.example.com :8080 proxy. Você também pode definir outros parâmetros Request como cabeçalhos ou cookies no parâmetro meta.

Proxy como middleware

Nosso pacote fará todo o trabalho para você. Se quiser fazer isso manualmente, continue lendo.

Para configurar um proxy para Scrapy, você pode seguir estas etapas:

  1. Crie um novo projeto Scrapy ou abra um existente.
  2. Abra o arquivo settings.py no diretório do seu projeto.
  3. Localize a configuração DOWNLOADER_MIDDLEWARES e adicione o seguinte código:

  4. 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
    'your_project_name.middlewares.ProxyMiddleware': 100,
                
            
  5. Crie um novo arquivo chamado middlewares.py no diretório do seu projeto.
  6. Adicione o seguinte código ao arquivo middlewares.py:

  7. import random
    
    class ProxyMiddleware(object):
        def process_request(self, request, spider):
            # Lista de proxies a serem usados
            proxy_list = [
                'http://proxy1.example.com:8080',
                'http://proxy2.example.com:8080',
                'http://proxy3.example.com:8080',
            ]
            # Escolha um proxy aleatório da lista
            proxy = random.choice(proxy_list)
            # Defina o proxy para a solicitação
            request.meta['proxy'] = proxy
    
                
            
  8. Atualize a variável proxy_list com sua própria lista de proxies.

Seu spider Scrapy agora usará um proxy aleatório da variável proxy_list para cada solicitação que fizer.
Veja também:
Proxy para raspagem
Saber mais