Points à garder à l'esprit lors du développement d'un robot d'exploration en Python

Caractéristiques des chenilles

Crawler avec état

HTTP est un protocole conçu sans état Si vous souhaitez avoir un état, utilisez un cookie. Il n'est pas toujours nécessaire d'implémenter l'envoi et la réception de cookies en créant un robot d'exploration. Utilisez l'objet Session de la bibliothèque Request. L'état peut également être exprimé par Referer.

Utilisé pour implémenter la connexion, etc.

Crawler interprétant JavaScript

SPA, etc. n'incluent pas de contenu en HTML. Dans ce cas, il est nécessaire d'interpréter JavaScript.

Etc. sont disponibles comme outils d'opération automatique.

Crawler pour un nombre non spécifié de sites Web

Google bot etc.

Il y a ces trois caractéristiques, mais vous devez être conscient des points suivants quel que soit le modèle de robot.

Soyez prudent lorsque vous utilisez les données collectées

Remarques sur la charge d'exploration

--Nombre de connexions simultanées

robots.txt Les balises Meta Robots.txt et robots sont largement utilisées pour demander aux administrateurs de sites Web de ne pas explorer une page particulière.

robots.txt: un fichier texte situé dans le répertoire supérieur du site Web balise meta robots: contient des instructions pour le robot d'exploration.

Vous pouvez obtenir des informations sur le fichier robots.txt à l'aide d'une bibliothèque Python appelée urllib.robotparser.

Plan du site XML

Un fichier XML permettant aux administrateurs de sites Web de présenter une liste d'URL qu'ils souhaitent que le robot d'exploration explore.

L'analyse en référence au plan de site XML est efficace, car il vous suffit d'analyser les pages à explorer.

Clarification des informations de contact

Entrez une chaîne de caractères arbitraire dans l'en-tête User-Agent pour y accéder.

Code d'état et gestion des erreurs

En modifiant le traitement des erreurs en fonction du code d'état, il est possible d'effectuer un traitement tel qu'une nouvelle tentative en cas d'erreur réseau (telle que l'impossibilité de se connecter).

Recommended Posts

Points à garder à l'esprit lors du développement d'un robot d'exploration en Python
Points à garder à l'esprit lors de la copie de listes Python
Points à garder à l'esprit lors du traitement des chaînes en Python2
Points à garder à l'esprit lors du traitement des chaînes en Python 3
Précautions lors de l'utilisation de Python avec AtCoder
Choses à garder à l'esprit lors de l'utilisation de cgi avec python.
Points à garder à l'esprit lors de l'utilisation de Python pour ceux qui utilisent MATLAB
Points à garder à l'esprit lors de la création d'outils automatisés pour l'atelier en Python
Points à garder à l'esprit lors du déploiement de Keras sur votre Mac
Points à garder à l'esprit lors de la conversion d'un vecteur de ligne en vecteur de colonne avec ndarray
Choses à noter lors de l'initialisation d'une liste en Python
Points à garder à l'esprit lors de la prédiction par lots avec GCP ML Engine
Résumé des points à garder à l'esprit lors de l'écriture d'un programme qui s'exécute sur Python 2.5
Erreur lors de la tentative d'installation de psycopg2 en Python
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Choses à faire lorsque vous commencez à développer avec Django
Je veux faire quelque chose avec Python à la fin
Pour vider stdout en Python
Connectez-vous au site Web en Python
Attention lorsque os.mkdir en Python
Parler avec Python [synthèse vocale]
Comment développer en Python
Publier sur Slack en Python
Méthode d'écriture pratique lors de l'ajout continu à la liste en Python
Que faire lorsque "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" apparaît en Python
[Sous-processus] Lorsque vous souhaitez exécuter un autre programme Python en code Python
Comment ne pas échapper au japonais en traitant avec JSON en Python
[Python] Comment faire PCA avec Python
Précautions lors de l'utilisation de Pit avec Python
Points à prendre en compte lors de l'attribution d'un nom au routage dynamique dans nuxt.js
Convertir Markdown en PDF en Python
Comment collecter des images en Python
Comportement lors de la liste dans Python heapq
Comment utiliser SQLite en Python
Précautions lors de l'exécution de Python sur EC2 à partir d'AWS Lambda (Exécuter la commande)
Dans la commande python, python pointe vers python3.8
Spécification du fuseau horaire lors de la conversion d'une chaîne de caractères en type datetime avec python
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
Essayez de calculer Trace en Python
Précautions lors du passage de def aux fonctions triées et groupby en Python? ??
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
6 façons d'enchaîner des objets en Python
Comment utiliser PubChem avec Python
Articles à lire lorsque le code de script Python de Blender ne fonctionne pas dans 2.80
Que faire lorsque ModuleNotFoundError: Aucun module nommé'XXX 'ne se produit en Python
Précautions lors de l'attribution de valeurs par défaut aux arguments dans les définitions de fonctions Python
Comment gérer le japonais avec Python
Une alternative à `pause` en Python
Que faire lorsque le type de valeur est ambigu en Python?
Lors de l'utilisation d'expressions régulières en Python
Lors de l'écriture d'un programme en Python
Points à surveiller lors de la création d'un environnement Python sur un Mac
Comment masquer l'invite de commande lors de l'exécution de python dans Visual Studio 2015
Comment écrire une chaîne de caractères lorsqu'il y a plusieurs lignes en python
Lors de la spécification de plusieurs clés dans le tri python
J'ai essayé d'implémenter PLSA en Python
[Introduction à Python] Comment utiliser la classe en Python?
Essayez de vous connecter à qiita avec Python
Installez Pyaudio pour lire des vagues en python