第一次是调度器初始化函数中,创建这个urlmanager对象,
第二次是调用了add_new_url方法来将最初始的url加入到带爬取的集合中,
第三次是在爬取过程中来判断是否有待爬取的url,
第四次是将要爬取的url从集合中取出来,
第五次是将页面解析出来的新的一组url再次添加到带爬去集合中
那么我们接下来就要做的是用代码来实现这些功能:
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
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did84898