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.
Cliquez sur l’onglet “Projets” et créez un nouveau projet. Nous l’appellerons ” devis"
.
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.
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.
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.
Nous devons remplacer cette ligne par la suivante.
from scrapy import Item
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.
Si vous exécutez votre spider, vous recevrez une nouvelle erreur.
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.
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”.
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.
Cliquez sur le bouton “deploy”. Cliquez ensuite sur “build”.
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.
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.
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