Gerapy Web Scraping: Guía de implementación de Scrapy en toda la pila

Domine el scraping web con Gerapy. Esta guía cubre la configuración, corrección de errores, consejos de implementación y mucho más.
12 min de lectura
Web Scraping with Gerapy blog image

Gerapy es una solución completa para el despliegue de Scrapy. Si nos fijamos en el historial de commits, ha recibido algunos golpes de dependencia, pero en realidad no se ha actualizado desde 2022. Poner en marcha Gerapy puede ser un proceso difícil a menudo lleno de ensayo y error.

Esta guía existe para hacer Gerapy más fácil. Al final de esta guía, usted será capaz de responder a las siguientes preguntas.

  • ¿Por qué Gerapy no funciona con mi instalación estándar de Python?
  • ¿Cómo puedo configurar Python y pip para Gerapy?
  • ¿Cómo puedo crear una cuenta de administrador?
  • ¿Cómo escribo mi primer rascador?
  • ¿Cómo puedo solucionar los problemas de mi rascador?
  • ¿Cómo pruebo e implanto mi rascador?

Introducción a Gerapy

Conozcamos mejor qué es realmente Gerapy y qué lo hace único.

¿Qué es Gerapy?

Gerapy nos proporciona un panel de gestión de Django y la API Scrapyd. Estos servicios le dan una interfaz sencilla pero potente para gestionar su pila. En este punto, se trata de un programa heredado, pero aún así mejora el flujo de trabajo y acelera el despliegue. Gerapy hace que el web scraping sea más accesible para DevOps y los equipos orientados a la gestión.

  • Interfaz gráfica de usuario para crear y supervisar rascadores.
  • Despliegue un rascador con sólo pulsar un botón.
  • Obtenga visibilidad en tiempo real de los registros y los errores a medida que se producen.

¿Qué hace que Gerapy sea único?

Gerapy le ofrece una ventanilla única para la gestión de scraper. La puesta en marcha de Gerapy es un proceso tedioso debido a su código heredado y sus dependencias. Sin embargo, una vez que lo tenga funcionando, desbloqueará un conjunto de herramientas completo adaptado para gestionar scrapers a escala.

  • Construya sus raspadores desde dentro del navegador.
  • Despliégalos en Scrapyd sin tocar la línea de comandos.
  • Gestión centralizada de todos sus crawlers y scrapers.
  • Frontend construido sobre Django para la gestión de arañas.
  • Backend desarrollado por Scrapyd para facilitar la creación y el despliegue.
  • Programador integrado para la automatización de tareas.

Cómo raspar la Web con Gerapy

El proceso de configuración de Gerapy es laborioso. Es necesario abordar la deuda técnica y realizar el mantenimiento del software. Tras muchas pruebas y errores, descubrimos que Gerapy ni siquiera es compatible con las versiones más modernas de Python. Empezamos con una instalación moderna de Python 3.13. Era demasiado moderna para las dependencias de Gerapy. Probamos con la versión 3.12, pero no hubo suerte, sólo más problemas de dependencias.

Resultó que necesitábamos Python 3.10. Además, tuvimos que modificar parte del código de Gerapy para corregir una clase obsoleta, y luego tuvimos que reducir manualmente casi todas las dependencias de Gerapy. Python ha experimentado cambios significativos en los últimos tres años y el desarrollo de Gerapy no ha seguido el mismo ritmo. Necesitamos recrear las condiciones ideales de Gerapy de hace tres años.

Configuración del proyecto

Python 3.10

Para empezar, necesitamos instalar Python 3.10. Esta versión no está extinta, pero ya no está ampliamente disponible. En Ubuntu nativo y Windows WSL con Ubuntu, se puede instalar con apt.

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10 python3.10-venv python3.10-dev

A continuación, puede comprobar si está instalado con el indicador --version.

python3.10 --version

Si todo va bien, debería ver una salida similar a la que se muestra a continuación.

Python 3.10.17

Creación de una carpeta de proyecto

En primer lugar, cree una nueva carpeta.

 mkdir gerapy-environment

A continuación, tenemos que entrar en la carpeta de nuestro nuevo proyecto y configurar un entorno virtual.

cd gerapy-environment
python3.10 -m venv venv

Activar el entorno.

source venv/bin/activate

Una vez que tu entorno esté activo, puedes comprobar la versión activa de Python.

python --version

Como se puede ver, python ahora por defecto a nuestra instalación 3.10 desde dentro del entorno virtual.

Python 3.10.17

Instalación de dependencias

El siguiente comando instala Gerapy y sus versiones dependientes requeridas. Como se puede ver, tenemos que apuntar manualmente muchos paquetes heredados utilizando pip==.

pip install setuptools==80.8.0
pip install scrapy==2.7.1 gerapy==0.9.13 scrapy-splash==0.8.0 scrapy-redis==0.7.3 scrapyd==1.2.0 scrapyd-client==1.2.0 pyopenssl==23.2.0 cryptography==41.0.7 twisted==21.2.0

Ahora crearemos un proyecto Gerapy real con el comando init.

gerapy init

A continuación, entraremos en nuestra carpeta gerapy y ejecutaremos migrate para crear nuestra base de datos.

cd gerapy
gerapy migrate

Ahora, es el momento de crear una cuenta de administrador. Este comando te da privilegios de administrador por defecto.

gerapy initadmin

Por último, iniciamos el servidor Gerapy.

gerapy runserver

Deberías ver una salida como esta.

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
INFO - 2025-05-24 13:49:16,241 - process: 1726 - scheduler.py - gerapy.server.core.scheduler - 105 - scheduler - successfully synced task with jobs with force
May 24, 2025 - 13:49:16
Django version 2.2.28, using settings 'gerapy.server.server.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Uso del panel de control

Si visitas http://127.0.0.1:8000/, se te pedirá que inicies sesión. Su nombre de cuenta por defecto es admin, al igual que su contraseña. Una vez iniciada la sesión, accederá al panel de control de Gerapy.

Cuadro de mandos de Gerapy

Haz clic en la pestaña “Proyectos” y crea un nuevo proyecto. Lo llamaremos "presupuestos".

Creación de un nuevo proyecto Gerapy

Cómo llegar al sitio de destino

Ahora, crearemos una nueva araña. Desde tu nuevo proyecto, haz clic en el botón “añadir araña”. En la sección “Urls de inicio”, añade https://quotes.toscrape.com. En “Dominios”, introduce quotes.toscrape.com.

Añadir nuestra URL y dominio

Lógica de extracción

A continuación, añadiremos nuestra lógica de extracción. La siguiente función parse( ) utiliza selectores CSS para extraer las comillas de la página. Puedes aprender más sobre selectores aquí.

Desplácese hasta la sección “Código interno” y añada su función de análisis sintáctico.

def parse(self, response):
    quotes = response.css('div.quote')
    print(f"Found {len(quotes)} quotes")
    for quote in quotes:
        text = quote.css('span.text::text').get()
        author = quote.css('small.author::text').get()
        print(f"Text: {text}, Author: {author}")
        yield {
            'text': text,
            'author': author,
        }

Ahora, haz clic en el botón “Guardar” situado en la esquina inferior derecha de la pantalla. Si ejecutas la araña ahora, te encontrarás con un error crítico. Gerapy está intentando utilizar BaseItem de Scrapy. Sin embargo, BaseItem fue eliminado de Scrapy hace varios años.

Error BaseItem

Corrección del error BaseItem

Para resolver este error, en realidad tenemos que editar el código interno de Scrapy. Puedes hacerlo desde la línea de comandos. Sin embargo, es mucho más fácil desde un editor de texto GUI con funciones de búsqueda.

cd en los archivos fuente de su entorno virtual.

cd venv/lib/python3.10/site-packages/gerapy/server/core

Para abrir la carpeta en VSCode, puede utilizar el siguiente comando.

code .

Abre parser.py, y encontrarás a nuestro culpable.

Scrapy intenta importar BaseItem

Debemos sustituir esta línea por la siguiente.

from scrapy import Item
Sustitución de BaseItem por Item en Our 
Importaciones

Ahora que hemos eliminado la importación de BaseItem, necesitamos eliminar todas las instancias de BaseItem con Item. Nuestra única instancia está en la función run_callback(). Cuando termines de guardar los cambios, cierra el editor.

Sustitución de BaseItem por Item en todo el fichero

Si ejecuta su araña, ahora recibirá un nuevo error.

REQUEST_FINGERPRINTER_IMPLEMENTATION Error de obsoleto

Arreglo de REQUEST_FINGERPRINTER_IMPLEMENTATION Deprecation

No es aparente, pero Gerapy en realidad inyecta nuestra configuración directamente en nuestra araña. cd fuera de nuestra carpeta actual y luego en la carpeta de proyectos.

cd
cd gerapy-environment/gerapy/projects/quotes

Una vez más, abra su editor de texto.

code .

Ahora abre tu spider. Debería llamarse quotes.py y estar dentro de la carpeta spiders. Deberías ver tu función parse() dentro de la clase spider. Al final del archivo, deberías ver un array llamado custom_settings. Nuestros ajustes han sido literalmente inyectados en la araña por Gerapy.

Configuración personalizada de la araña

Necesitamos añadir un nuevo ajuste. Necesitas usar 2.7. La 2.6 seguirá arrojando el error. Descubrimos esto después de numerosas instancias de prueba y error.

"REQUEST_FINGERPRINTER_IMPLEMENTATION": "2.7",

Ahora, al ejecutar la araña utilizando el botón de reproducción de Gerapy, se resuelven todos los errores. Como se puede ver a continuación, en lugar de un mensaje de error, sólo vemos una “Solicitud de seguimiento”.

Nuestra araña funciona ahora sin errores

Juntarlo todo

Construcción del rascador

Si vuelve a la pestaña “Proyectos” de Gerapy, verá una “X” en la columna “Construido” del proyecto. Esto significa que nuestro scraper no ha sido construido en un archivo ejecutable para su despliegue.

Nuestro proyecto de rascador aún no se ha construido

Haz clic en el botón “desplegar”. Ahora, haz clic en “construir”.

El paquete se compila correctamente

Uso del programador

Para programar su rascador para que se ejecute a una hora o intervalo específicos, haga clic en “Tareas” y cree una nueva tarea. A continuación, seleccione la configuración que desee para la programación.

Establecer el calendario

Una vez hecho esto, haz clic en el botón “Crear”.

Limitaciones del raspado con Gerapy

Dependencias

Su código heredado introduce muchas limitaciones que hemos abordado de frente durante este artículo. Para que Gerapy funcione, hemos tenido que editar su código fuente interno. Si no se siente cómodo tocando las partes internas del sistema, Gerapy no es para usted. ¿Recuerda el error BaseItem?

Mientras las dependencias de Gerapy siguen evolucionando, Gerapy permanece congelado en el tiempo. Para seguir utilizándolo, tendrá que mantener su instalación personalmente. Esto añade deuda técnica en forma de mantenimiento y un proceso muy real de prueba y error.

Recuerde este fragmento a continuación. Cada uno de estos números de versión fue descubierto a través de un meticuloso proceso de prueba y error. Cuando las dependencias se rompen, es necesario probar continuamente diferentes números de versión hasta obtener una que funcione. Sólo en este tutorial, hemos tenido que utilizar el método de prueba y error para encontrar versiones funcionales de 10 dependencias. A medida que pase el tiempo, esto sólo empeorará.

pip install setuptools==80.8.0
pip install scrapy==2.7.1 gerapy==0.9.13 scrapy-splash==0.8.0 scrapy-redis==0.7.3 scrapyd==1.2.0 scrapyd-client==1.2.0 pyopenssl==23.2.0 cryptography==41.0.7 twisted==21.2.0

Limitaciones del sistema operativo

Cuando intentamos este tutorial inicialmente, intentamos usar Windows nativo. Así fue como descubrimos las limitaciones iniciales debidas a las versiones de Python. Las versiones estables actuales de Python se limitan a 3.9, 3.11 y 3.13. Gestionar múltiples versiones de Python es difícil independientemente del sistema operativo. Sin embargo, Ubuntu nos ofrece el repositorio PPA deadsnakes.

Sin deadsnakes, es posible encontrar una versión compatible de Python, pero incluso entonces, necesitas manejar los problemas de PATH y diferenciar entre python (tu instalación por defecto) y python3.10. Es probable que sea posible manejar esto de forma nativa desde Windows y macOS, pero tendrás que encontrar una solución diferente. Con Ubuntu y otras distribuciones Linux basadas en apt, al menos consigues un entorno reproducible con acceso rápido a versiones anteriores de Python directamente instaladas en tu PATH.

Integración de proxy con Gerapy

Al igual que con Scrapy, la integración de proxy es fácil. En el verdadero espíritu de la inyección de configuraciones de Gerapy, podemos inyectar un proxy directamente en la araña. En el siguiente ejemplo, añadimos las opciones HTTPPROXY_ENABLED y HTTPPROXY_PROXY para conectarnos utilizando Web Unlocker.

"HTTPPROXY_ENABLED": True,
"HTTPPROXY_PROXY": "http://brd-customer-<your-username>-zone-<your-zone-name>:<your-password>@brd.superproxy.io:33335"

Aquí está la araña completa después de la integración del proxy. Recuerda cambiar el nombre de usuario, zona y contraseña por los tuyos.

Araña proxy integrada

Alternativas viables a Gerapy

  • Scrapyd: Esta es la columna vertebral detrás de Gerapy y casi cualquier otra pila Scrapy. Con Scrapyd, puedes gestionar todo a través de solicitudes HTTP y crear un panel de control si así lo deseas.
  • Funciones descraping: Nuestras funciones de scraping le permiten implementar sus scrapers directamente en la nube y editarlos desde un IDE en línea, con un panel de control como Gerapy pero más flexible y moderno.

Conclusión

Gerapy es un producto heredado en nuestro mundo en rápida evolución. Requiere un mantenimiento real y tendrá que ensuciarse las manos. Herramientas como Gerapy le permiten centralizar su entorno de scraping y supervisarlo todo desde un único panel. En los círculos de DevOps, Gerapy proporciona utilidad y valor reales.

Si Scrapy no es lo suyo, le ofrecemos muchas alternativas viables para satisfacer su necesidad de recopilación de datos. Los productos a continuación son sólo algunos.

  • Raspador personalizado: Cree raspadores sin necesidad de código e impleméntelos en nuestra infraestructura en la nube.
  • Conjuntos de datos: Acceda a conjuntos de datos históricos actualizados diariamente de toda la Web. Una biblioteca de la historia de Internet al alcance de tu mano.
  • Proxies residenciales: Tanto si prefiere escribir el código usted mismo o hacer scraping con IA, nuestros proxies le dan acceso a Internet con geotargeting en una conexión a Internet residencial real.

Regístrese hoy mismo para una prueba gratuita y lleve su recopilación de datos al siguiente nivel.

No se requiere tarjeta de crédito