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
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
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!