Maison  >  Article  >  développement back-end  >  Comment utiliser le planificateur Python

Comment utiliser le planificateur Python

零下一度
零下一度original
2017-06-25 10:15:331735parcourir

Poursuivant le contenu de l'article précédent, dans l'article précédent, le planificateur de robots a été écrit. Le planificateur est le « cerveau » de l'ensemble du programme de robots d'exploration et peut également être appelé le centre de commande. Maintenant, ce que nous devons faire est d'écrire d'autres composants utilisés dans le planificateur. Le premier est le gestionnaire d'URL Puisqu'il fait office de gestionnaire, il doit faire la distinction entre les URL à explorer et les URL qui ont été explorées, sinon l'exploration sera répétée. Le didacticiel utilise ici une collection définie pour stocker temporairement les deux URL dans la collection, c'est-à-dire dans la mémoire. Après tout, les données analysées sont relativement petites. Bien sûr, elles peuvent également être stockées dans d'autres endroits, comme le cache ou. base de données relationnelle.

La première fois consiste à créer l'objet urlmanager dans la fonction d'initialisation du planificateur,

La deuxième fois consiste à appeler la méthode add_new_url pour ajouter l'URL initiale à la collection analysée

<.> La troisième fois consiste à déterminer s'il y a une URL à explorer pendant le processus d'exploration,

La quatrième fois consiste à retirer l'URL à explorer de la collection,

Le la cinquième fois, c'est d'ajouter à nouveau un nouvel ensemble d'URL analysées à partir de la page à la collection d'exploration

Ensuite, ce que nous devons faire est d'utiliser du code pour implémenter ces fonctions :

 1 class UrlManager(object): 2     """docstring for UrlManager""" 3     def __init__(self): 4         self.new_urls = set() 5         self.old_urls = set() 6     #向管理器中添加一个新的url 7     def add_new_url(self,url): 8         if url is None: 9             return10         if url not in self.new_urls and url not in self.old_urls:11             self.new_urls.add(url)12     #从爬取数据中向管理器中批量添加url13     def add_new_urls(self,urls):14         if urls is None or len(urls) == 0:15             return16         for url in urls:17             self.add_new_url(url)18     #判断是否有新的url19     def has_new_url(self):20         return (len(self.new_urls) != 0)21     #从管理器中取出一个新的url22     def get_new_url(self):23         new_url = self.new_urls.pop()24         self.old_urls.add(new_url)25         return new_url
Bon, ça y est, le gestionnaire d'url est terminé !

L'étape suivante est le téléchargeur d'URL. C'est une fonction très simple qui enregistre la page consultée par le programme.

Le téléchargeur n'apparaît que deux fois dans le planificateur :

La première fois est créée lors de l'initialisation

La deuxième fois est immédiatement après l'obtention de l'url. Appelez-le pour télécharger la page.

Dans le téléchargeur d'url, le tutoriel original utilise la bibliothèque urllib, ce que je trouve un peu encombrant. Je suis donc passé à une bibliothèque plus utile : les requêtes. Cette bibliothèque peut m'aider à bloquer de nombreuses difficultés techniques et à explorer directement les pages que nous souhaitons visiter, et elle est très simple à utiliser.

 

 1 import requests 2  3 class HtmlDownloader(object): 4     """docstring for HtmlDownloader"""     5     def download(self,url): 6         if url is None: 7             return  8         response = requests.get(url, timeout = 0.1) 9         response.encoding = 'utf-8'10         if response.status_code == requests.codes.ok:11             return response.text12         else:13             return

Laissez-moi parler brièvement de ce code :

a. bibliothèque. En effet, il s'agit d'une bibliothèque tierce, vous devez donc la télécharger vous-même. Entrez sur la ligne de commande : pip install request

b. Ensuite, commencez à écrire la classe de téléchargement. méthode, qui est le téléchargement. Cette méthode acceptera d’abord l’URL que vous avez donnée, puis déterminera si elle existe.

c. Appelez ensuite la méthode get des requêtes, qui accepte deux paramètres, l'un est l'url et l'autre est le délai d'attente

Le délai d'attente est ajouté par moi-même, qui est le délai d'attente d'accès. Si aucun délai d'attente n'est ajouté, le programme se bloquera, ce qui signifie qu'il attendra toujours la réponse de la page sans lever d'exception.

d. Définissez ensuite l'encodage de la réponse renvoyée. Étant donné que la page de l'Encyclopédie Baidu explorée est en utf-8, il est préférable de la définir ici. Bien que les requêtes la jugent intelligemment, il est préférable de la modifier manuellement. .

e. Déterminez ensuite si la page est réactive. Le code.ok ici est en fait de 200, ce qui signifie que la page Web répond normalement si vous écrivez directement réponse.status_code == 200.

f. Enfin, renvoie tout le contenu de la page. Le texte ici est une chaîne, qui contient tout le code (html, css, js) d'une page.

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