[PYTHON] Scrapy est une bonne conversation

introduction

Bonjour. Cet article s'intitule MYJLab Advent Calendar Day 16. Cela fait deux jours de suite, donc je suis un peu essoufflé, mais j'aimerais faire de mon mieux pour enseigner mon outil de recommandation. Dans l'article précédent, j'ai fait l'environnement d'analyse Introduction de Jupyter Lab. C'est un très bon outil, alors veuillez l'utiliser. Aujourd'hui, je voudrais vous présenter les outils utilisés pour la collecte de données avant de commencer l'analyse.

À propos du grattage et de l'exploration

Comment collectez-vous des données lorsque vous collectez des données par apprentissage automatique, etc.? Si vous le développez vous-même, vous ne pouvez pas acheter les données, mais vous ne pouvez pas créer les données à partir de zéro. Dans mon cas, si j'ai un problème avec les données, j'essaye de les gratter pour le moment. [Grattage](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83 % AC% E3% 82% A4% E3% 83% 94% E3% 83% B3% E3% 82% B0) est une technologie qui extrait les informations nécessaires d'une page Web. L'exploration est une technique similaire, mais la différence entre le grattage et l'exploration varie d'une personne à l'autre. Dans cet article, nous les classons comme suit.

En général, l'exploration et le grattage sont effectués ensemble, car les informations que vous souhaitez extraire ne sont généralement pas complétées sur une seule page Web. Par exemple, supposons que vous souhaitiez collecter des données Yahoo News pour faire de fausses nouvelles dans la chaîne Markov. Les pages Yahoo News peuvent être divisées en deux pages principales.

  1. Une page répertoriant les articles de presse
  2. Page affichant les détails des actualités

Si vous souhaitez collecter toutes les actualités, procédez comme suit.

  1. Obtenez la page d'affichage de la liste des articles d'actualité
  2. Obtenez le lien de la page pour afficher les détails de l'actualité à partir de la page d'affichage de la liste Accédez au lien obtenu en 3.2
  3. Obtenez les informations dont vous avez besoin
  4. Répétez les étapes 2 à 4

En effectuant ce processus, vous pouvez obtenir les informations sur les nouvelles que vous souhaitez. Cependant, lorsque ces tâches sont transformées en code, moi, un petit ingénieur de pêche, produisons du code illisible au milieu. Et ce n'est pas la seule chose dont vous devez être conscient lors de l'exploration.

Je ne suis pas un ingénieur capable d'écrire du code proprement tout en étant conscient de ces choses. Cependant, ce problème peut être facilement résolu avec ** Scrapy **.

À propos de Scrapy

Scrapy est un framework pour l'exploration et le scraping Web en Python. C'est un gars formidable qui peut tout faire, de la surveillance aux tests automatisés. Il effectue le traitement fastidieux de l'exploration et du grattage comme mentionné ci-dessus. De plus, il crée automatiquement un modèle de code pour le scraping, vous pouvez donc écrire un code unifié (?).

Comment fonctionne Scrapy

Pour être honnête, je vais omettre l'utilisation de Scrapy car c'est le plus rapide à voir Tutoriel. Ici, je voudrais faire de mon mieux pour expliquer le mécanisme de Scrapy, qui était difficile à comprendre personnellement. Scrapy fonctionne avec le mécanisme suivant.

Screenshot from Gyazo

Je pense que ce chiffre est un peu difficile à comprendre, alors je ferai de mon mieux pour l'expliquer. Scrapy se compose principalement de 6 parties.

Engine Le moteur est responsable du contrôle du flux de données Scrapy. Scrapy est écrit dans un cadre de programmation réseau tordu, axé sur les événements. Le moteur déclenche un événement lorsqu'une action particulière se produit.

Scheduler Le planificateur est une partie qui stocke les demandes reçues du moteur et contrôle la synchronisation. Dans la figure ci-dessus, ②③⑧ est le travail du planificateur.

Downloader Le travail du téléchargeur est d'obtenir la page Web et de la transmettre à Spider via le moteur. L'accès au site Web se fait toujours via ce téléchargeur.

Spider Spider est une partie que les développeurs modifient principalement, et il extrait et enregistre des éléments. Scrapy gère les données dans des unités appelées Items, et si vous retournez un objet Item dans Spider, l'enregistrement des données commencera et si vous renvoyez un objet Request, il sera à nouveau analysé.

Item pipeline Le pipeline d'articles est responsable du traitement des articles extraits par Spider. C'est le rôle du pipeline Item de stocker et de nettoyer les éléments dans MySQL.

Middleware L'intergiciel est la partie située entre les interactions entre chaque partie (la partie bleu foncé de la figure ci-dessus). Il existe deux types de middleware, le middleware de téléchargement et le middleware Spider, et chacun a un rôle différent.

À la fin

C'est un article désorganisé, mais j'espère que vous pouvez vous sentir Scrapy d'une manière ou d'une autre. Il existe de nombreuses autres fonctionnalités utiles dans Scrapy, donc si vous êtes intéressé, veuillez le vérifier.

Recommended Posts

Scrapy est une bonne conversation
Bakthat est bon pour la sauvegarde, n'est-ce pas?