Proxy Port logo
How-to Guías prácticas > Cómo configurar un proxy para Scrapy

Cómo configurar un proxy para Scrapy

Scrapy es un potente marco de rastreo y extracción de datos web que permite a los desarrolladores extraer fácilmente datos de sitios web. Sin embargo, a veces los sitios web pueden bloquear o acelerar las solicitudes de una sola dirección IP, lo que dificulta la recopilación de los datos deseados. Para superar esto, Scrapy permite a los desarrolladores configurar proxies que se pueden usar para rotar direcciones IP y eludir estas restricciones. En este artículo, exploraremos cómo configurar un proxy para Scrapy tanto a nivel mundial como para solicitudes específicas, lo que le permitirá recopilar datos de sitios web de manera más eficiente y efectiva.

La forma más fácil de configurar un proxy para Scrapy es usar el paquete scrapy-proxyport.
O, si desea configurar manualmente el proxy, siga leyendo.

Proxy para una solicitud específica

Para configurar un proxy para una solicitud específica en Scrapy, puede pasar el proxy como un parámetro meta al crear el objeto Request. Aquí hay un fragmento de código de ejemplo:

import scrapy

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

    def start_requests(self):
        # Establecer proxy para la primera solicitud
        yield scrapy.Request(
            url=self.start_urls[0],
            meta={
                'proxy': 'http://proxy.example.com:8080'
            }
        )

    def parse(self, response):
        # Hacer una nueva solicitud con un 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):
        # Haz algo con la respuesta
        pass

            
        
En el ejemplo anterior, la primera solicitud utilizará el proxy http://proxy.example.com:8080, mientras que la segunda solicitud utilizará el http://proxy2.example.com :8080 proxy. También puede configurar otros parámetros de Request como encabezados o cookies en el parámetro meta.

Proxy como middleware

Nuestro paquete hará todo el trabajo por ti. Si quieres hacerlo manualmente, sigue leyendo.

Para configurar un proxy para Scrapy, puede seguir estos pasos:

  1. Cree un nuevo proyecto Scrapy o abra uno existente.
  2. Abra el archivo settings.py en el directorio de su proyecto.
  3. Localice la configuración DOWNLOADER_MIDDLEWARES y agregue el siguiente código:

  4. 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
    'your_project_name.middlewares.ProxyMiddleware': 100,
                
            
  5. Cree un nuevo archivo llamado middlewares.py en el directorio de su proyecto.
  6. Agregue el siguiente código al archivo middlewares.py:

  7. import random
    
    class ProxyMiddleware(object):
        def process_request(self, request, spider):
            # Lista de proxies a utilizar
            proxy_list = [
                'http://proxy1.example.com:8080',
                'http://proxy2.example.com:8080',
                'http://proxy3.example.com:8080',
            ]
            # Elija un proxy aleatorio de la lista
            proxy = random.choice(proxy_list)
            # Establecer el proxy para la solicitud
            request.meta['proxy'] = proxy
    
                
            
  8. Actualice la variable proxy_list con su propia lista de proxies.

Su araña Scrapy ahora usará un proxy aleatorio de la variable proxy_list para cada solicitud que haga.
Ver también:
Proxy para raspar
Más