栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫URL管理器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫URL管理器

python爬虫URL管理器
  • 1.前述
  • 2.结构分层
    • 2.1两个集合
    • 2.2 主要方法
  • 3.全部代码

1.前述

在爬虫中需要对URL进行处理,统一管理URL,方便使用URL。

2.结构分层 2.1两个集合

定义两个集合放在类的初始化方法中,选择集合这个数据类型,是因为集合的天然去重性,在同一个集合中不会出现一样的数据。
这两个集合分别时:未爬取的URL集合,已爬取的URL集合
用来存储没有爬取过数据的URL和已经爬取过数据的URL,为防止重复爬取同一个URL的数据。

def __init__(self):
        self.new_urls = set() # 未爬取的URL集合
        self.old_urls = set() # 已爬取的URL集合
2.2 主要方法
  • 获取未爬取URL集合的大小
def new_url_size(self):
        '''
        获取未爬取URL集合的大小
        :return: 新的URL集合的大小
        '''
        return len(self.new_urls) # 返回未爬取的URL集合的大小
  • 获取已爬取URL的大小
def old_url_size(self):
        '''
        获取已爬取URL的大小
        :return: 旧的URL的大小
        '''
        return len(self.old_urls) # 返回已爬取的URL集合的大小
  • 判断是否有未爬取的URL

判断未爬取的URL集合中还有没有URL,如果有返回Ture,否则返回False

def has_new_url(self):
        '''
        判断是否有未爬取的URL
        :return:true or false
        '''
        return self.new_url_size() != 0 # 返回判断后的真假
  • 获取一个未爬取的URL
def get_new_url(self):
        '''
        获取一个未爬取的URL
        :return: 一个新的URL
        '''
        new_url = self.new_urls.pop() # 从未爬取的URL集合中获取一个URL并且从原集合中删除
        self.old_urls.add(new_url)    # 把这条URL放入已爬取的URL集合中
        return new_url                # 返回这条URL
  • 将新的URL添加到未爬取的URL集合

下面是添加一个URL链接到未爬取的URL集合

def add_new_url(self,url):
        '''
        将新的URL添加到未爬取的URL集合
        :param url: 单个URL
        :return: 没有
        '''
        if url is None:
            return
        if url not in self.new_urls and url not in self.old_urls: # 判断URL是否在未爬取的URL集合和已爬取的URL集合中
            self.new_urls.add(url)                                # 若不在就加入未爬取的URL集合中

下面是添加多个URL链接到未爬取的URL集合

 def add_new_urls(self,urls):
        '''
        将新的URL添加到未爬取的URL集合
        :param urls: URL集合
        :return: 没有
        '''
        if urls is None or len(urls) == 0:
            return
        for url in urls:
            self.add_new_url(url) # 调用添加单个URL的方法
3.全部代码
# URL管理器
class URLManager(object):
    def __init__(self):
        self.new_urls = set() # 未爬取的URL集合
        self.old_urls = set() # 已爬取的URL集合
    def new_url_size(self):
        '''
        获取未爬取URL集合的大小
        :return: 新的URL集合的大小
        '''
        return len(self.new_urls) # 返回未爬取的URL集合的大小
    def old_url_size(self):
        '''
        获取已爬取URL的大小
        :return: 旧的URL的大小
        '''
        return len(self.old_urls) # 返回已爬取的URL集合的大小
    def has_new_url(self):
        '''
        判断是否有未爬取的URL
        :return:true or false
        '''
        return self.new_url_size() != 0 # 返回判断后的真假
    def get_new_url(self):
        '''
        获取一个未爬取的URL
        :return: 一个新的URL
        '''
        new_url = self.new_urls.pop() # 从未爬取的URL集合中获取一个URL并且从原集合中删除
        self.old_urls.add(new_url)    # 把这条URL放入已爬取的URL集合中
        return new_url                # 返回这条URL
    def add_new_url(self,url):
        '''
        将新的URL添加到未爬取的URL集合
        :param url: 单个URL
        :return: 没有
        '''
        if url is None:
            return
        if url not in self.new_urls and url not in self.old_urls: # 判断URL是否在未爬取的URL集合和已爬取的URL集合中
            self.new_urls.add(url)                                # 若不在就加入未爬取的URL集合中
    def add_new_urls(self,urls):
        '''
        将新的URL添加到未爬取的URL集合
        :param urls: URL集合
        :return: 没有
        '''
        if urls is None or len(urls) == 0:
            return
        for url in urls:
            self.add_new_url(url) # 调用添加单个URL的方法
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/499185.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号