认识爬虫:怎样管理爬虫过程中已使用和未使用的 URL 地址?

URL 管理器是爬虫过程中重要的一环,使用它来管理在爬虫过程中众多的 URL 地址以免造成重复获取爬虫地址、爬虫 陷入死循环等情况的发生。比如,我们要根据 baidu.com 来进行爬虫,如果在爬虫的子页面中也包含 baidu.com 不做处理的话就会陷入循环,所以说,在爬虫过程中对 URL 进行很好的维护是非常重要的。

1、创建 url 管理对象及属性定义

 1# 导入队列
 2from collections import deque
 3
 4# 定义 url 管理器类
 5class url_queue():
 6    def __init__(self):
 7        # 定义待爬取的队列
 8        self.queue = deque()
 9        # 定义已经爬取的集合,使用 set 集合保证去重
10        self.set = set()

2、将页面上获取到的 url 添加到没有爬取的队列

 1def add_nocrawl_url(self,url):
 2    '''
 3    :return: 将爬取的新的 url 添加到未爬取队列
 4    '''
 5    # 校验 url 是否为 None
 6    if url is None:
 7        # 返回 False
 8        return False
 9    # 校验 url 是否已经存在在已经爬取或未被爬取的集合
10    elif url not in self.queue and url not in self.set:
11        # 若不存在时,则将该条新的 url 添加到未被爬取的队列中
12        self.queue.append(url)
13        # 返回 True
14        return True

3、获取一条 url 进行下一次爬虫

1def get_nocrawl_url(self):
2    '''
3    :return: 获取一个未爬取的 url
4    '''
5    # 取出一个没有爬取的 url
6    nocrawl_url = self.queue.popleft()
7    # 将未爬取的 url 添加到已经爬取的 url 集合中
8    self.set.add(nocrawl_url)
9    return nocrawl_url

4、获取未爬取或已经爬取的 url 长度

 1def get_nocrawl_size(self):
 2    '''
 3    :return: 获取待爬取的队列长度
 4    '''
 5    nocrawl_size = len(self.queue)
 6    return nocrawl_size
 7
 8def get_crawl_size(self):
 9    '''
10    :return: 获取已爬取的集合长度
11    '''
12    crawl_size = len(self.set)
13    return crawl_size
14
15def is_nocrawl(self):
16    '''
17    :return: 是否存在未爬取的 url
18    '''
19    if self.get_nocrawl_size() <= 0:
20        return False
21    else:
22        return True

实力的提升是最重要的,进入公众号回复:“python计算题”,领取100道 python 案例计算题、快去领取刷题吧~

更多精彩前往微信公众号【Python 集中营】,关注获取《python 从入门到精通全套视频》

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python 集中营

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值