Scrapy est un framework Python largement utilisé dans les projets de robots d'exploration Web. Le framework Scrapy présente les avantages d'une efficacité élevée, d'une encapsulation élevée et d'une expansion facile, il est donc largement utilisé dans les applications sur chenilles dans diverses industries. Lors du développement à l'aide du framework Scrapy, afin de garantir la stabilité et l'exactitude du projet, nous devons déboguer le code. Cependant, le framework Scrapy présente de nombreuses différences en matière de débogage par rapport aux autres frameworks Python, ce qui nous oblige à maîtriser certaines techniques et précautions spéciales. Cet article se concentrera sur les compétences de débogage et les précautions du framework Scrapy pour aider les lecteurs à déboguer le code de manière plus efficace et précise lors de l'utilisation du framework Scrapy.
1. Utilisez le débogueur
Tout d'abord, nous pouvons utiliser le débogueur pdb (Python DeBugger) largement utilisé dans la communauté Python pour déboguer le framework Scrapy en définissant des points d'arrêt, en surveillant les variables, etc. L'opération est simple et directe. Vous devez ajouter l'instruction import pdb à la ligne de commande ou au script Python, puis ajouter pdb.set_trace() au point où le code veut s'arrêter. Une fois la fonction exécutée, le programme s'arrêtera à cet emplacement et attendra que l'utilisateur entre des commandes pour le débogage. Pour les commandes spécifiques du débogueur, veuillez vous référer à la documentation du pdb du débogueur Python.
2. Modifier le niveau LOG
Nous pouvons changer le niveau de journalisation du framework Scrapy en niveau DEBUG, afin que plus d'informations puissent être envoyées à la console. La méthode consiste à définir LOG_LEVEL = 'DEBUG' dans le fichier settings.py. De cette façon, Scrapy affichera les informations de débogage sur la console. Cependant, comme trop d'informations sont affichées, trop d'informations de débogage encombreront la console. Par conséquent, il est recommandé de limiter le niveau de journalisation de sortie sur la ligne de commande en attendant que les informations détaillées soient affichées. Par exemple, exécutez l'instruction suivante sur la ligne de commande :
scrapy crawl myspider -s LOG_LEVEL=DEBUG
3 Observez la situation de Request
Dans le framework Scrapy, Request est l'unité de base de communication entre le framework et le. site Web, donc la demande de débogage est très importante. Nous pouvons utiliser la fonction start_requests() dans Spider pour vérifier si chaque objet Request répond à nos attentes. La fonction start_requests() est utilisée pour définir l'objet Request envoyé pour la première fois et peut définir la fonction de rappel, les cookies, les en-têtes et d'autres informations de la requête via la valeur de retour. Nous pouvons définir des points d'arrêt dans la fonction start_requests() pour afficher les conditions spécifiques de chaque requête. Dans le même temps, nous pouvons également stocker des informations supplémentaires dans Request via la propriété Request.meta à des fins de débogage et à d'autres fins. Par exemple, dans la fonction start_requests(), définissez la requête suivante :
yield scrapy.Request(
url=url, meta={'proxy': 'http://user:pass@ip:port'} callback=self.parse
)
De cette façon, nous pouvons obtenir les méta-informations de la requête via l'attribut réponse.meta dans l'analyse fonction.
4. Débogage avec Scrapy Shell
Scrapy fournit un outil de commande très utile Scrapy Shell, qui peut nous aider à déboguer le code et à comprendre la structure de la page pendant le processus de développement. Le shell Scrapy nous permet d'utiliser le framework Scrapy pour simuler des requêtes HTTP afin de tester rapidement les sélecteurs XPath et CSS, etc. dans la console Python. Utiliser le shell Scrapy est très simple. Il vous suffit de saisir dans la ligne de commande :
scrapy shell "http://www.example.com"
pour accéder au shell Scrapy. Le téléchargeur fourni dans Scrapy téléchargera automatiquement l'URL spécifiée. et stockez le résultat dans l’objet de réponse. De cette façon, nous pouvons obtenir la valeur de retour de la requête via l'attribut réponse.body et utiliser les méthodes xpath() et css() pour obtenir les éléments correspondants, afin de déboguer rapidement nos règles d'exploration.
5. Gestion des exceptions
Enfin, vous devez également faire attention au comportement du framework Scrapy lors de la gestion des exceptions. Qu'arrive-t-il au framework Scrapy lorsqu'une exception se produit dans le programme ? La configuration par défaut du framework Scrapy consiste à arrêter le programme lorsqu'une exception non gérée est reçue au moment de l'exécution. Pour les projets de robots d'exploration, cela est inacceptable, car il existe toujours de nombreuses situations particulières sur le site Web, telles que des problèmes de site Web, des anomalies dans les données des pages, etc., qui peuvent provoquer le blocage du programme. Par conséquent, lorsque nous écrivons un programme d'exploration, nous devons capturer toutes les exceptions possibles et développer les gestionnaires correspondants.
Il existe de nombreuses façons de gérer les exceptions, telles que la détection des exceptions, l'utilisation d'instructions try-sauf, l'impression de messages d'erreur, etc. Le framework Scrapy lui-même fournit également des interfaces pour gérer les exceptions, telles que les fonctions spider_idle(), close(), ainsi que les fonctions de cycle de vie du middleware de téléchargement et du middleware Spider. Lors de l'utilisation de Scrapy, nous devons comprendre le rôle de ces interfaces et les utiliser de manière raisonnable pour gérer d'éventuelles exceptions afin de garantir la stabilité du programme d'exploration.
Conclusion :
Avec les conseils et précautions ci-dessus, nous pouvons déboguer et tester plus efficacement et plus précisément dans le développement Scrapy, découvrir d'éventuelles erreurs et exceptions dans le code et améliorer la robustesse et la précision du programme d'exploration. Lorsque nous utilisons le framework Scrapy, nous devons avoir une compréhension approfondie du cycle de vie, du middleware, du planificateur, du robot d'exploration et des autres composants principaux du framework Scrapy, et prendre les mesures appropriées pour gérer les exceptions, définir les journaux, etc. J'espère que les lecteurs pourront s'inspirer et aider de cet article lors du développement de projets Scrapy et mieux utiliser le framework Scrapy pour le développement de projets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!