Gerapy Web Scraping : Guide de déploiement de Scrapy en pile complète

Maîtrisez le scraping web avec Gerapy. Ce guide couvre l’installation, les corrections d’erreurs, les conseils de déploiement, et plus encore.
12 min de lecture
Web Scraping with Gerapy blog image

Gerapy est une solution complète pour le déploiement de Scrapy. Si vous regardez l’historique des livraisons, il a reçu quelques modifications de dépendances mais n’a pas vraiment été mis à jour depuis 2022. Démarrer Gerapy peut être un processus difficile, souvent rempli d’essais et d’erreurs.

Ce guide a pour but de faciliter l’utilisation de Gerapy. A la fin de ce guide, vous serez capable de répondre aux questions suivantes.

  • Pourquoi Gerapy ne fonctionne-t-il pas avec mon installation standard de Python ?
  • Comment configurer Python et pip pour Gerapy ?
  • Comment créer un compte administrateur ?
  • Comment écrire mon premier scraper ?
  • Comment puis-je dépanner mon scraper ?
  • Comment tester et déployer mon scraper ?

Introduction à Gerapy

Comprenons mieux ce qu’est Gerapy et ce qui la rend unique.

Qu’est-ce que la gérontologie ?

Gerapy nous fournit un tableau de bord Django et l’API Scrapyd. Ces services vous donnent une interface simple mais puissante pour gérer votre pile. À ce stade, il s’agit d’un programme hérité, mais il améliore toujours le flux de travail et accélère le déploiement. Gerapy rend le scraping web plus accessible aux équipes orientées DevOps et gestion.

  • Tableau de bord GUI pour la création et la surveillance de scrapers.
  • Déployez un scraper en cliquant sur un bouton.
  • Obtenez une visibilité en temps réel des journaux et des erreurs dès qu’elles se produisent.

Qu’est-ce qui rend Gerapy unique ?

Gerapy vous offre un guichet unique pour la gestion des scrappers. La mise en place de Gerapy est un processus fastidieux en raison de son code hérité et de ses dépendances. Cependant, une fois que vous l’avez fait fonctionner, vous débloquez un ensemble complet d’outils conçus pour gérer les scrapeurs à grande échelle.

  • Construisez vos scrapers à l’intérieur du navigateur.
  • Déployez-les sur Scrapyd sans toucher à la ligne de commande.
  • Gestion centralisée de tous vos crawlers et scrapers.
  • Frontend construit sur Django pour la gestion des araignées.
  • Backend alimenté par Scrapyd pour faciliter la construction et le déploiement.
  • Planificateur intégré pour l’automatisation des tâches.

Comment gratter le Web avec Gerapy

Le processus d’installation de Gerapy est laborieux. Il faut s’occuper de la dette technique et effectuer la maintenance du logiciel. Après de nombreux essais et erreurs, nous avons appris que Gerapy n’est même pas compatible avec les versions plus modernes de Python. Nous avons commencé avec une installation moderne de Python 3.13. Elle était trop moderne pour les dépendances de Gerapy. Nous avons essayé la version 3.12 – toujours pas de chance – juste plus de problèmes de dépendances.

Il s’est avéré que nous avions besoin de Python 3.10. En plus de cela, nous devions modifier une partie du code de Gerapy pour corriger une classe dépréciée – et nous devions ensuite rétrograder manuellement presque toutes les dépendances de Gerapy. Python a subi des changements significatifs au cours des trois dernières années et le développement de Gerapy n’a pas suivi. Nous devons recréer les conditions idéales de Gerapy d’il y a trois ans.

Configuration du projet

Python 3.10

Pour commencer, nous devons installer Python 3.10. Cette version n’est pas éteinte, mais elle n’est plus largement disponible. Sur Ubuntu native et Windows WSL avec Ubuntu, elle peut être installée avec 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

Vous pouvez ensuite vérifier qu’il est installé avec l’option --version.

python3.10 --version

Si tout se passe bien, vous devriez obtenir une sortie similaire à la sortie ci-dessous.

Python 3.10.17

Création d’un dossier de projet

Créez d’abord un nouveau dossier.

 mkdir gerapy-environment

Ensuite, nous devons aller dans le dossier de notre nouveau projet et configurer un environnement virtuel.

cd gerapy-environment
python3.10 -m venv venv

Activer l’environnement.

source venv/bin/activate

Une fois que votre environnement est actif, vous pouvez vérifier la version active de Python.

python --version

Comme vous pouvez le voir, python est maintenant installé par défaut dans notre installation 3.10 à partir de l’environnement virtuel.

Python 3.10.17

Installation des dépendances

La commande ci-dessous installe Gerapy et ses dépendances. Comme vous pouvez le voir, nous devons cibler manuellement de nombreux paquets hérités en utilisant 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

Nous allons maintenant créer un projet Gerapy avec la commande init.

gerapy init

Ensuite, nous allons aller dans notre dossier gerapy et lancer migrate pour créer notre base de données.

cd gerapy
gerapy migrate

Il est maintenant temps de créer un compte administrateur. Cette commande vous donne des privilèges d’administrateur par défaut.

gerapy initadmin

Enfin, nous démarrons le serveur Gerapy.

gerapy runserver

Vous devriez obtenir un résultat comme celui-ci.

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.

Utilisation du tableau de bord

Si vous visitez http://127.0.0.1:8000/, vous serez invité à vous connecter. Votre nom de compte par défaut est admin et votre mot de passe également. Une fois connecté, vous serez dirigé vers le tableau de bord de Gerapy.

Tableau de bord de Gerapy

Cliquez sur l’onglet “Projets” et créez un nouveau projet. Nous l’appellerons ” devis".

Création d'un nouveau projet Gerapy

Obtenir le site cible

Nous allons maintenant créer une nouvelle araignée. Dans votre nouveau projet, cliquez sur le bouton “add spider”. Dans la section “Start Urls”, ajoutez https://quotes.toscrape.com. Dans la section “Domaines”, entrez quotes.toscrape.com.

Ajouter notre URL et notre domaine

Logique d’extraction

Ensuite, nous ajouterons notre logique d’extraction. La fonction parse() ci-dessous utilise des sélecteurs CSS pour extraire les citations de la page. Pour en savoir plus sur les sélecteurs , cliquez ici.

Descendez jusqu’à la section “Inner Code” et ajoutez votre fonction d’analyse.

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,
        }

Cliquez ensuite sur le bouton “Enregistrer” situé dans le coin inférieur droit de l’écran. Si vous exécutez le spider maintenant, vous rencontrerez une erreur critique. Gerapy essaie d’utiliser BaseItem de Scrapy. Cependant, BaseItem a été supprimé de Scrapy il y a plusieurs années.

Erreur BaseItem

Correction de l’erreur BaseItem

Pour résoudre cette erreur, nous devons modifier le code interne de Scrapy. Vous pouvez le faire à partir de la ligne de commande. Cependant, il est beaucoup plus facile de le faire à partir d’un éditeur de texte à interface graphique doté de fonctions de recherche.

cd dans les fichiers sources de votre environnement virtuel.

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

Pour ouvrir le dossier dans VSCode, vous pouvez utiliser la commande ci-dessous.

code .

Ouvrez le fichier parser.py, et vous trouverez notre coupable.

Scrapy tente d'importer BaseItem

Nous devons remplacer cette ligne par la suivante.

from scrapy import Item
Remplacement de BaseItem par Item dans notre 
importations

Maintenant que nous avons supprimé l’importation de BaseItem, nous devons supprimer toutes les instances de BaseItem avec Item. Notre seule instance se trouve dans la fonction run_callback(). Lorsque vous avez terminé d’enregistrer les modifications, fermez l’éditeur.

Remplacement de BaseItem par Item dans tout le fichier

Si vous exécutez votre spider, vous recevrez une nouvelle erreur.

REQUEST_FINGERPRINTER_IMPLEMENTATION Erreur de dépréciation

Correction de la dépréciation de REQUEST_FINGERPRINTER_IMPLEMENTATION

Ce n’est pas apparent, mais Gerapy injecte en fait nos paramètres directement dans notre spider. cd hors de notre dossier actuel et ensuite dans le dossier projects.

cd
cd gerapy-environment/gerapy/projects/quotes

Ouvrez à nouveau votre éditeur de texte.

code .

Ouvrez maintenant votre spider. Il devrait s’intituler quotes.py et se trouver dans le dossier spiders. Vous devriez voir votre fonction parse() à l’intérieur de la classe spider. Au bas du fichier, vous devriez voir un tableau appelé custom_settings. Nos paramètres ont été littéralement injectés dans le spider par Gerapy.

Paramètres personnalisés de l'araignée

Nous devons ajouter un nouveau paramètre. Vous devez utiliser la version 2.7. La version 2.6 continuera à générer l’erreur. Nous l’avons découvert après de nombreux essais et erreurs.

"REQUEST_FINGERPRINTER_IMPLEMENTATION": "2.7",

Maintenant, lorsque vous exécutez le spider en utilisant le bouton play de Gerapy, toutes les erreurs sont résolues. Comme vous pouvez le voir ci-dessous, au lieu d’un message d’erreur, nous voyons juste un “Follow Request”.

Notre Spider fonctionne désormais sans aucune erreur

Tout assembler

Construction du grattoir

Si vous retournez dans votre onglet “Projets” dans Gerapy, vous verrez un “X” dans la colonne “Construit” pour le projet. Cela signifie que notre scraper n’a pas été construit dans un fichier exécutable pour le déploiement.

Notre projet de grattoir n'a pas été construit

Cliquez sur le bouton “deploy”. Cliquez ensuite sur “build”.

Le paquet se construit avec succès

Utilisation du planificateur

Pour programmer l’exécution de votre scraper à une heure ou à un intervalle spécifique, cliquez sur “Tâches” et créez une nouvelle tâche. Sélectionnez ensuite les paramètres souhaités pour la programmation.

Établissement du calendrier

Une fois que vous avez terminé, cliquez sur le bouton “créer”.

Limites de l’utilisation de Gerapy

Dépendances

Son code hérité introduit de nombreuses limitations que nous avons abordées de front dans cet article. Pour faire fonctionner Gerapy, nous avons dû modifier son code source interne. Si vous n’êtes pas à l’aise avec le code interne du système, Gerapy n’est pas fait pour vous. Vous vous souvenez de l’erreur BaseItem?

Alors que les dépendances de Gerapy continuent d’évoluer, Gerapy reste figé dans le temps. Pour continuer à l’utiliser, vous devrez maintenir votre installation personnellement. Cela ajoute une dette technique sous la forme de maintenance et d’un processus très réel d’essais et d’erreurs.

Rappelez-vous l’extrait ci-dessous. Chacun de ces numéros de version a été découvert grâce à un processus méticuleux d’essais et d’erreurs. Lorsque des dépendances se cassent, vous devez continuellement essayer différents numéros de version jusqu’à ce que vous obteniez une version fonctionnelle. Dans ce seul tutoriel, nous avons dû procéder par essais et erreurs pour trouver des versions fonctionnelles de 10 dépendances. Au fil du temps, la situation ne fera qu’empirer.

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

Limites du système d’exploitation

Lorsque nous avons commencé ce tutoriel, nous avons essayé d’utiliser Windows en mode natif. C’est ainsi que nous avons découvert les limitations initiales dues aux versions de Python. Les versions stables actuelles de Python sont limitées à 3.9, 3.11 et 3.13. Gérer plusieurs versions de Python est difficile quel que soit le système d’exploitation. Cependant, Ubuntu nous offre le dépôt PPA deadsnakes.

Sans deadsnakes, il est possible de trouver une version compatible de Python, mais même dans ce cas, vous devez gérer les problèmes de PATH et faire la différence entre python (votre installation par défaut) et python3.10. Il est probablement possible de gérer cela de manière native depuis Windows et macOS, mais vous devrez trouver une solution de contournement différente. Avec Ubuntu et d’autres distributions Linux basées sur apt, vous disposez au moins d’un environnement reproductible avec un accès rapide aux anciennes versions de Python directement installées dans votre PATH.

Intégration de Proxy avec Gerapy

Comme avec Scrapy vanille, l’intégration d’un proxy est facile à réaliser. Dans le véritable esprit de l’injection de paramètres de Gerapy, nous pouvons injecter un proxy directement dans le spider. Dans l’exemple ci-dessous, nous ajoutons les paramètres HTTPPROXY_ENABLED et HTTPPROXY_PROXY pour se connecter en utilisant Web Unlocker.

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

Voici le spider complet après l’intégration du proxy. N’oubliez pas de remplacer le nom d’utilisateur, la zone et le mot de passe par les vôtres.

Proxy Integrated Spider (araignée intégrée)

Alternatives viables à Gerapy

  • Scrapyd: C’est l’épine dorsale de Gerapy et de toute autre pile Scrapy. Avec Scrapyd, vous pouvez tout gérer via de simples requêtes HTTP et construire un tableau de bord si vous le souhaitez.
  • Fonctions de scraping: Nos fonctions de scraping vous permettent de déployer vos scrapers directement sur le cloud et de les éditer à partir d’un IDE en ligne – avec un tableau de bord comme Gerapy mais plus flexible et moderne.

Conclusion

Gerapy est un produit ancien dans un monde qui évolue rapidement. Il nécessite une réelle maintenance et vous devrez mettre les mains dans le cambouis. Des outils comme Gerapy vous permettent de centraliser votre environnement de scraping et de tout surveiller à partir d’un tableau de bord unique. Dans les cercles DevOps, Gerapy offre une utilité et une valeur réelles.

Si Scrapy n’est pas votre truc, nous proposons de nombreuses alternatives viables pour répondre à vos besoins en matière de collecte de données. Les produits ci-dessous n’en sont que quelques-uns.

  • Gratte-papier personnalisé: Créez des scraper sans code et déployez-les dans notre infrastructure en nuage.
  • Jeux de données: Accédez à des ensembles de données historiques mis à jour quotidiennement et provenant de l’ensemble du web. Une bibliothèque de l’histoire de l’internet à portée de main.
  • Proxies résidentiels: Que vous préfériez écrire du code vous-même ou faire du scrape avec l’IA, nos proxies vous donnent accès à l’internet avec géo-ciblage sur une véritable connexion internet résidentielle.

Inscrivez-vous pour un essai gratuit dès aujourd’hui et faites passer votre collecte de données à la vitesse supérieure !

Aucune carte de crédit requise