Cómo configurar proxies rotativos en Scrapy
El HttpProxyMiddleware integrado de Scrapy lee el proxy de request.meta. Con una puerta de enlace rotativa configuras una URL y cada solicitud aún obtiene una nueva IP.
Pasos
- Mantén HttpProxyMiddleware habilitado (está activo por defecto)
- Configura meta={"proxy": url} en cada solicitud, o en start_requests
- Coloca el nombre de usuario y la contraseña en la URL del proxy
- Reduce CONCURRENT_REQUESTS_PER_DOMAIN si un sitio aún limita la tasa
Código de ejemplo
import scrapy
PROXY = "http://USERNAME-cc-gb:PASSWORD@gw.gbproxies.cc:10000"
class PricesSpider(scrapy.Spider):
name = "prices"
start_urls = ["https://example.com/catalog"]
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, meta={"proxy": PROXY})
def parse(self, response):
for href in response.css("a.product::attr(href)").getall():
yield response.follow(href, self.parse_item, meta={"proxy": PROXY})
def parse_item(self, response):
yield {"title": response.css("h1::text").get(), "url": response.url}Reemplaza USERNAME y PASSWORD con el inicio de sesión del proxy de la página Proxies de la consola. El puerto 10000 es HTTP residencial; consulta los puertos de cada producto abajo.
Consejos
- Desactiva IMAGES_ENABLED y evita descargas de medios para ahorrar GB
- Usa DOWNLOAD_TIMEOUT 30 y RETRY_TIMES 3 para ejecuciones estables
Preguntas comunes
¿Necesito un middleware de rotación?
No. La puerta de enlace rota por ti; una URL de proxy es suficiente.