Technologie

Une façon simple de commencer (Scrapy and Selenium, Part I)

Une façon simple de commencer (Scrapy and Selenium, Part I)


F
Tout d’abord, ce n’est pas sorcier.

On peut soutenir que la meilleure approche pour lancer ce type de projet consiste à apprendre sur le tas, et pour certains sites Web, vous pouvez construire un grattoir fonctionnel en quelques jours avec une connaissance de base de Python et un tutoriel décent à portée de main. J'ai commencé à apprendre de cela [really helpful] Bien sûr, ce qui coûte environ 10 $ en vente. Pour la plupart, le cours couvre l'utilisation de Scrapy pour l'exploration de sites Web, mais aborde également l'utilisation de Sélénium. Ces deux peuvent être utilisés séparément et fusionnés dans un seul grattoir. Leur fusion peut nécessiter des recherches supplémentaires si vous êtes un débutant en Python / JavaScript, mais cela en vaut la peine. Personnellement, je trouve que la chaîne YouTube de Corey est d’une aide précieuse lorsqu’il s’agit de réviser les bases de Python, car il a un excellent moyen de briser les concepts.


Différents sites Web - différents outils
.
Tandis que Scrapy est un framework Python spécialement conçu pour l’analyse Web, le plus adapté à un rendu correct. XML et HTML pages, et risquent de ne pas fonctionner pour les pages JavaScript, qui utilisent des cadres tels que React et Angular. En pratique, cela signifie que vous passerez un sélecteur d’élément valide à Scrapy, mais que vous obtiendrez une sortie vide. Un exemple en est différents types de minuteries et d’éléments interactifs. Une autre particularité de Scrapy est qu’il parcourt les pages en accédant à leurs URL. Toutefois, vous constaterez que certains boutons ne sont associés à aucune URL lorsque vous inspectez l’élément ou obtenez le code source (via xpath ou css). Par exemple, cette visite guidée a une href (URL), attaché à celui-ci, afin que vous puissiez être redirigé vers l'info de la tournée.

airbnb.ae

D'autre part, ce bouton Airbnb «Devenir un hôte» n'a pas de href (= URL) lorsque vous inspectez le code source.

airbnb.ae

Un exemple différent pour le dernier scénario est celui des pages à chargement infini et des boutons «Charger plus» ou «Suivant» dans certains cas. Comme ce bouton "Tout afficher":

airbnb.ae

Dans ces cas, si vous souhaitez utiliser Python, vous utiliserez d’autres outils, tels que Sélénium, que j’ai trouvé être un outil de raclage assez convivial, mais moins optimisé pour les débutants. Plus précisément, le sélénium facilite la interagir avec le site Web, ou tout simplement cliquez sur les pages, tout en allant à l'élément de mon intérêt.

En même temps, Sélénium est maladroit à manipuler certaines exceptions que Scrapy gère avec élégance. Un de ces exemples est le NoSuchElementException, pour lequel Scrapy renvoie une liste vide, alors que Selenium ne renvoie pas tous les éléments d’une page donnée. Par exemple, considérons ce nombre de commentaires pour les maisons sur Airbnb, si une propriété a un commentaire, le compteur est affiché, vous pouvez le voir dans class = "_ 1lykgvlh", à l'intérieur de la travée.

airbnb.ae

La propriété ci-dessous, cependant, n’a pas de critiques et le compteur n’est pas là en tant qu’élément du code source, et il n’ya rien à «inspecter» de la même manière. class = "_ 1lykgvlh":

airbnb.ae

Ainsi, si vous parcourez toutes ces classes pour en extraire tous les éléments, telles que la balise «new», les commentaires comptés et la balise «annulation gratuite», Selenium renverra tous ces éléments pour la première propriété et les déposera pour la deuxième (même si seulement la recherche d’un élément déclenche l’exception NoSuchElementException). Pour cette raison, la gestion de cette exception et de toutes les autres exceptions dans Selenium est importante. Votre racleur est donc robuste et fonctionnel.

Une des particularités de Selenium est qu’il doit ouvrir un navigateur pour chaque demande adressée à obtenir l'URL. Cela signifie que Selenium est un outil exigeant en mémoire et que vous risquez d'être confronté à des problèmes d'utilisation de la mémoire. Pour cette raison, j'ai choisi d'utiliser Selenium uniquement lorsque cela était nécessaire et de ne pas en abuser. Dans l'exemple Airbnb, si j'ai le choix, je vais extraire tous les détails des propriétés de la page du catalogue au lieu d'aller dans chaque profil de propriété pour en extraire les détails et revenir au catalogue.

S
les crapiers ne sont pas universels
Il va sans dire que différents sites Web nécessiteront la construction de différents racleurs, à moins que leur code source ne soit identique. Cela dit, il se peut que vous deviez modifier un racleur écrit pour un site Web spécifique une fois que celui-ci a été modifié. Vous devrez donc peut-être ajuster le script. À titre d'exemple, les développeurs peuvent modifier le nom de la classe ou l'identifiant d'un élément, ce qui vous laissera avec des exceptions ou des résultats vides. Pour cette raison, il est utile de surveiller le processus de raclage dans un navigateur, un terminal ou simplement de regarder le fichier de sortie.

B
e sympa. Et éviter d'être bloqué

En général, soyez gentil et approchez doucement le serveur. Si le site Web dispose d'une API, utilisez-la, sinon, et si vous en avez vraiment besoin, veillez à ne pas mettre le serveur en panne et à éviter de bloquer votre adresse IP. Prenez donc le risque de DOWNLOAD_DELAY, sleep (), définissant la limite des demandes simultanées. ou d'autres moyens de mettre votre grattoir en pause. Une bonne idée est d'éviter de lancer le racloir à partir de votre poste de travail principal, au moins au début, lorsque vous vous familiarisez avec son comportement. En effet, si l'adresse IP est bloquée ou si elle est étiquetée comme suspecte, cela pourrait être douloureux non seulement pour vous, mais également pour vos collègues, votre famille et tous ceux qui utilisent le même réseau. Cela signifie que vous devez être particulièrement attentif aux sites Web d'importance stratégique tels que google.com (qui ne vous bloque pas, mais vous invite à des sessions CAPCHAs).

J'aime bien me familiariser avec la politique du site en matière de robots et lire le fichier robots.txt pour mieux comprendre ce qu'ils préfèrent autoriser et interdire aux robots, et effectuer une recherche sur leur site Web pour savoir s'ils autorisent ou non les robots sur leur site. site Internet.

robots.txt pour airbnb.ae

Un simple coup d'œil à la liste des restrictions vous donnera une idée de la rigueur avec laquelle elles sont appliquées. Les sites Web peuvent traiter les robots différemment et les grattoirs sont souvent bloqués automatiquement. Vous pouvez reconnaître ce comportement si vous avez 500 statuts de demande dans vos journaux avec Demande refusée ou Le statut HTTP n'est pas géré ou autorisé, etc.

Au cas où il n’y aurait pas d’API et que vous continuiez à obtenir 500 unités après le délai, vous pouvez définir un AGENT UTILISATEUR pour votre racloir, ce qui changera l'en-tête de celui-ci pythonX.X ou tout autre nom par défaut, facilement identifiable et filtré par le serveur, au nom de l'agent que vous avez spécifié, afin que le serveur voit votre bot comme un navigateur. L'un des moyens les plus simples de le faire dans Scrapy consiste à définir des paramètres. Gardez toutefois à l'esprit que vous souhaitez que l'agent utilisateur soit en ligne avec le nom du système d'exploitation de votre ordinateur et de votre navigateur. Par exemple, cela USER_AGENT = 'Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 61.0.3163.100 Safari / 537.36' fonctionnera pour Mac, mais ne fonctionnera pas pour Ubuntu.

T
voici beaucoup d'outils là-bas

Scrapy et Selenium ne sont pas les seules options pour l'exploration Web. Il existe de nombreuses bibliothèques Python (par exemple, BeautifulSoup, urllib, lxml, Requests) et d'autres outils tels que puppeteer de Google (Node.js), qui peuvent fournir des résultats similaires. La différence réside dans les cadres qu’ils peuvent gérer et à quel coût. Par conséquent, votre objectif est de vous familiariser avec leurs capacités et de les utiliser de la manière la plus efficace possible.

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close