Maison  >  Article  >  développement back-end  >  Partage d'expérience sur la prise en main du robot d'exploration Python

Partage d'expérience sur la prise en main du robot d'exploration Python

小云云
小云云original
2017-12-05 09:53:134435parcourir

Un robot d'exploration Web est un programme qui obtient automatiquement du contenu Web et constitue un élément important des moteurs de recherche. Les robots d'exploration Web téléchargent des pages Web du World Wide Web pour les moteurs de recherche. Généralement divisé en robots d'exploration traditionnels et robots d'exploration ciblés.

L'apprentissage des reptiles est un processus étape par étape. En tant que novice sans fondation, il peut être grossièrement divisé en trois étapes. La première étape consiste à démarrer et à maîtriser les connaissances de base nécessaires. est d'imiter et de suivre les autres. Apprenez le code du robot et comprenez chaque ligne de code. À ce stade, vous commencez à avoir vos propres idées pour résoudre les problèmes et pouvez concevoir un système de robot de manière indépendante.

Les technologies impliquées dans les robots d'exploration incluent, sans s'y limiter, la maîtrise d'un langage de programmation (ici, nous prenons Python comme exemple), la connaissance du HTML, la connaissance de base des protocoles HTTP/HTTPS, les expressions régulières, la connaissance des bases de données, et l'utilisation d'outils courants de capture de paquets, l'utilisation de frameworks d'exploration, impliquant des robots d'exploration à grande échelle, nécessitent également une compréhension du concept de distribution, des files d'attente de messages, des structures de données et des algorithmes couramment utilisés, de la mise en cache et même de l'application de l'apprentissage automatique. . Les systèmes à grande échelle reposent sur de nombreuses technologies à prendre en charge. Les robots d'exploration servent uniquement à obtenir des données. L'analyse et l'exploration de ces données constituent donc la valeur. Par conséquent, elles peuvent également être étendues à l'analyse de données, à l'exploration de données et à d'autres domaines pour prendre des décisions pour les entreprises. faire.

Alors, dois-je apprendre toutes les connaissances ci-dessus avant de pouvoir commencer à écrire un robot ? Bien sûr que non, l'apprentissage dure toute la vie. Tant que vous pouvez écrire du code Python, vous pouvez commencer à explorer directement. C'est comme apprendre à conduire. Bien sûr, vous pouvez prendre la route. est beaucoup plus sûr que de conduire.

Pour écrire un robot d'exploration en Python, vous devez d'abord connaître Python, comprendre la syntaxe de base et savoir utiliser des fonctions, des classes et des méthodes courantes dans des structures de données courantes telles que list et dict, ce qui est un introduction de base. Ensuite, vous devez comprendre le HTML. HTML est une structure arborescente de documents. Il existe un didacticiel d'introduction de 30 minutes sur HTML sur Internet, ce qui suffit. Ensuite, il y a la connaissance du HTTP. Le principe de base d'un robot est le processus de téléchargement de données depuis un serveur distant via une requête réseau, et la technologie derrière cette requête réseau est basée sur le protocole HTTP. En tant que robot d'exploration débutant, vous devez comprendre les principes de base du protocole HTTP. Bien que la spécification HTTP ne puisse pas être écrite dans un seul livre, le contenu approfondi peut être lu plus tard, combinant théorie et pratique.

Le framework de requêtes réseau est une implémentation du protocole HTTP. Par exemple, la célèbre bibliothèque de requêtes réseau Requests est une bibliothèque réseau qui simule un navigateur envoyant des requêtes HTTP. Après avoir compris le protocole HTTP, vous pouvez apprendre spécifiquement les modules liés au réseau. Par exemple, Python est livré avec urllib, urllib2 (urllib en Python3), httplib, Cookie, etc. Bien sûr, vous pouvez les ignorer directement pour apprendre à les utiliser. Demandes directement, le principe est que vous connaissez le contenu de base du protocole HTTP. Un livre que je dois recommander ici est "HTTP Illustrated". Les données analysées sont principalement du texte HTML, et quelques-unes sont des données basées sur le format XML ou Json. Pour traiter ces données correctement, vous devez connaître les solutions pour chaque type de données. Par exemple, les données JSON peuvent être directement utilisées. en Python. Pour le module json de données HTML, vous pouvez utiliser BeautifulSoup, lxml et d'autres bibliothèques pour le traiter. Pour les données XML, vous pouvez utiliser des bibliothèques tierces telles que untangle et xmltodict.

Pour les robots d'exploration d'entrée de gamme, il n'est pas nécessaire d'apprendre les expressions régulières. Vous pouvez les apprendre lorsque vous en avez vraiment besoin. Par exemple, après avoir analysé les données, vous devez les nettoyer lorsque vous en avez besoin. découvrez qu'en utilisant des expressions régulières Lorsque la méthode d'opération sur chaîne ne peut pas être traitée du tout, vous pouvez alors essayer de comprendre les expressions régulières, qui peuvent souvent obtenir le double du résultat avec la moitié de l'effort. Le module re de Python peut être utilisé pour traiter des expressions régulières. Voici également plusieurs tutoriels recommandés : Tutoriel d'introduction de 30 minutes aux expressions régulières, guide des expressions régulières Python, guide complet des expressions régulières

Après le nettoyage des données, un stockage persistant doit être effectué. Vous pouvez utiliser le stockage de fichiers, tel. sous forme de fichiers CSV, vous pouvez également utiliser le stockage de base de données, simplement utiliser SQLite, utiliser MySQL de manière plus professionnelle ou la base de données de documents distribuée MongoDB. Ces bases de données sont très conviviales pour Python et disposent d'un support de bibliothèque prêt à l'emploi. Python exploite la base de données MySQL et se connecte à la base de données via Python

Le processus de base, de la capture des données au nettoyage en passant par le stockage, est terminé. Il peut être considéré comme une introduction de base. Il est ensuite temps de tester vos compétences internes. De nombreux sites Web ont mis en place des stratégies anti-crawler. Ils essaient par tous les moyens de vous empêcher d'obtenir des données par des moyens anormaux. Par exemple, il y aura toutes sortes de codes de vérification étranges pour limiter vos opérations de demande, limiter la vitesse de la demande, limiter. l'IP, et même chiffrer les données, bref, pour augmenter le coût d'obtention des données. À ce stade, vous devez maîtriser davantage de connaissances. Vous devez comprendre le protocole HTTP en profondeur, vous devez comprendre les algorithmes de cryptage et de décryptage courants, vous devez comprendre les cookies en HTTP, le proxy HTTP et divers HEADER en HTTP. Les reptiles et les anti-reptiles forment un couple qui s'aime et s'entretue. Chaque fois que le Tao est élevé, le diable est élevé. Il n’existe pas de solution unifiée établie pour gérer les anti-crawlers. Cela dépend de votre expérience et du système de connaissances que vous maîtrisez. Ce n’est pas quelque chose que vous pouvez réaliser avec seulement un didacticiel d’introduction de 21 jours.

Structure des données et algorithme

Pour effectuer une exploration à grande échelle, nous commençons généralement l'exploration à partir d'une URL, puis ajoutons le lien URL analysé dans la page à l'ensemble d'URL à explorer. pour utiliser la file d'attente ou la priorité La file d'attente est utilisée pour faire la différence entre l'exploration de certains sites Web en premier et l'exploration de certains sites Web ultérieurement. Chaque fois qu'une page est explorée, que ce soit pour utiliser l'algorithme de profondeur d'abord ou de largeur d'abord pour explorer le lien suivant. Chaque fois qu'une requête réseau est lancée, un processus de résolution DNS est impliqué (conversion de l'URL en IP). Afin d'éviter des résolutions DNS répétées, nous devons mettre en cache l'IP résolue. Il y a tellement d'URL. Comment déterminer quelles URL ont été explorées et lesquelles n'ont pas été explorées ? Pour faire simple, utilisez une structure de dictionnaire pour stocker les URL qui ont été explorées. Cependant, si un grand nombre d'URL sont rencontrés. , l'espace mémoire occupé par le dictionnaire sera très important. À ce stade, vous devez envisager d'utiliser un filtre Bloom pour explorer les données une par une avec un thread. L'efficacité est pitoyablement faible. vous devez utiliser des opérations multi-threads, multi-processus, coroutines ou distribuées.

À propos de la pratique

Il existe de nombreux tutoriels sur les robots d'exploration sur Internet. Les principes sont fondamentalement les mêmes. Ils changent simplement un site Web différent pour explorer. simulez la connexion à un site Web et simulez l'enregistrement. Un peu comme, allez sur Douban pour des films, des livres, etc. Grâce à une pratique continue, de la rencontre des problèmes à leur résolution, ce genre de gain ne peut être comparé à la lecture d'un livre.

Bibliothèques communes pour les robots d'exploration

  • urllib, urlib2 (urllib en Python) bibliothèque de requêtes réseau intégrée à Python

  • urllib3 : Bibliothèque de requêtes réseau HTTP thread-safe

  • requêtes : la bibliothèque de requêtes réseau la plus utilisée, compatible avec py2 et py3

  • grequests : asynchrone requêtes

  • BeautifulSoup : bibliothèque d'analyse des opérations HTML et XML

  • lxml : Une autre façon de traiter HTML et XML

  • Tornado : framework de réseau asynchrone

  • Gevent : framework de réseau asynchrone

  • Scrapy : le framework de crawler le plus populaire

  • pyspider : framework d'exploration

  • xmltodict : convertir du XML en dictionnaire

  • pyquery : exploiter le HTML comme jQuery

  • Jieba : segmentation de mots

  • SQLAlchemy : framework ORM

  • céleri : file d'attente des messages

  • rq : File d'attente de messages simple

  • python-goose : Extraire le texte du HTML

Recommandations de livres :

  • "HTTP illustré"

  • "Le guide définitif du HTTP"

  • "Réseaux informatiques : automatisation Haut -down méthode》

  • 《Écriture de robots d'exploration Web en Python》

  • 《Collecte de données réseau Python》

  • "Maîtriser les expressions régulières"

  • "Démarrer avec Python pour s'entraîner"

  • "Écrire votre propre robot d'exploration Web"

  • "Crypto101"

  • "Illustrated Cryptozoology Technology"

Le contenu ci-dessus concerne le niveau d'entrée expérience de la technologie des robots d'exploration Python Partagez, j'espère que cela pourra aider tout le monde.

Recommandations associées :

Introduction au robot d'exploration de base Python3

Tutoriel de robot d'exploration de sites Web le plus simple de Python

Pratique du robot python

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn