Maison > Article > développement back-end > Introduction et utilisation de Python Crawler-Scrapy
Le processus de scrapy
Le processus peut être décrit comme suit :
● Le planificateur gère les demandes--> ;Engine- ->Télécharger le middleware--->Téléchargeur
● Le téléchargeur envoie une requête et obtient une réponse---->Télécharger le middleware---->Engine---> Parties centrales du robot --->Crawler
● Le robot extrait l'adresse URL et l'assemble dans un objet de requête ---->Middleware Crawler--->Moteur--->Scheduler
● Le robot d'exploration extrait les données ---> Moteur ---> Pipeline
● Le pipeline traite et enregistre les données
Apprentissage recommandé : Tutoriel vidéo Python
Remarque :
Les lignes vertes sur l'image représentent le transfert de données
Faites attention à la position du middleware dans l'image, qui détermine son rôle
Faites attention à la position du moteur, tous les modules étaient auparavant indépendants les uns des autres et n'interagissaient qu'avec le moteur
Le rôle spécifique de chaque module dans scrapy
1. projet scrapy Processus de mise en œuvre
Créer un projet scrapy : scrapy startproject Nom du projet
Générer un robot : scrapy genspider Le nom du robot permet d'explorer plage
pour extraire les données : Améliorez Spider, utilisez XPath et d'autres méthodes
Enregistrez les données : enregistrez les données dans le pipeline
Créer un projet Scrapy
Commande : scrapy startproject +< ;Nom du projet>
Exemple : scrapy startproject myspider
Les résultats du répertoire et du fichier générés sont les suivants :
settings.py Champs clés et connotations
● USER_AGENT Définir ua
● ROBOTSTXT_OBEY S'il faut se conformer au protocole des robots, la valeur par défaut est de se conformer
● CONCURRENT_REQUESTS Définir le nombre de requêtes simultanées, la valeur par défaut est 16
● DOWNLOAD_DELAY Délai de téléchargement, pas de délai par défaut
● COOKIES_ENABLED Activer ou non les cookies, c'est-à-dire que chaque requête apporte la précédente cookie, la valeur par défaut est activée
● DEFAULT_REQUEST_HEADERS Définir l'en-tête de requête par défaut
● Middleware de robot d'exploration SPIDER_MIDDLEWARES, le processus de configuration est le même que celui du pipeline
● Middleware de téléchargement DOWNLOADER_MIDDLEWARES
Créer un robot
commande : scrapy genspider +
Les résultats du répertoire et du fichier générés sont les suivants :
Araignée parfaite
Araignée parfaite pour effectuer l'extraction de données et d'autres opérations via des méthodes :
Remarque :
● Le résultat de retour de la réponse Liste de chaînes
● extract_first() renvoie la première chaîne de la liste. . Si la liste est vide, Aucun n'est renvoyé
● La méthode d'analyse dans spider doit avoir
● L'adresse URL qui doit être explorée doit appartenir à Allowed_domains, mais l'adresse URL dans start_urls n'a pas cette restriction
● Lors du démarrage du robot, faites attention à l'emplacement de départ. Démarrez-le dans le chemin du projet
Les données sont transmises au pipeline
Pourquoi utiliser le rendement ?
● Quels sont les avantages de transformer l'ensemble de la fonction en générateur ? ● Lors du parcours de la valeur de retour de cette fonction, lisez les données dans la mémoire une par une, ce qui n'entraînera pas une utilisation instantanée de la mémoire trop élevée ● La plage en python3 est le même que le xrange en python2 Remarque : Les objets qui génèrent ne peuvent passer que : BaseItem, Request, dict, NoneAméliorer le pipeline.
Les pipelines peuvent être activés dans les paramètres. Pourquoi devez-vous activer plusieurs pipelines ?
● Différents pipelines peuvent traiter les données de différents robots d'exploration ● Différents pipelines peuvent effectuer différentes opérations de traitement de données, comme une pour le nettoyage des données et une pour la sauvegarde des donnéesRemarques sur l'utilisation du pipeline
● Vous devez l'activer dans les paramètres avant utilisation
● La clé dans le réglage du pipeline représente la position (c'est-à-dire que la position du pipeline dans le projet peut être personnalisée) et la valeur représente la distance du moteur. Plus les données sont proches, plus vite. les données passeront par
● Il existe plusieurs pipelines À ce stade, la méthode process_item doit renvoyer l'élément, sinon les données obtenues par ce dernier pipeline auront la valeur Aucune
● La méthode process_item dans le pipeline doit exister, sinon l'élément ne peut pas accepter et traiter
● process_item La méthode accepte l'élément et l'araignée, où l'araignée représente l'araignée qui passe actuellement l'élément
Cet article provient du python colonne tutoriel, bienvenue pour apprendre !
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!