爬虫url去重管理

用于记录学习爬虫过程中遇到的断点续爬、url去重问题学习 。
环境

  1. redis
  2. python
  3. 第三方库 redis 。安装 pip install redis

核心功能,基于redis里面set类型,达到去重,插入,记录的小功能。
代理实现:


import redis

class UrlManager:
	def __init__(spider_name='',host='127.0.0.1',port=6379):
		'''初始redis连接'''
		self.__conn = redis.Redis(host=host,port=port)
		self.__new = spider_name + '_new'#存放待爬取url
		self.__old = spider_name +'_old'#存放已爬取url
	def adds(self,*args):
		"""插入待爬取url,记录已爬取url"""
			for url in agrs:
				if not self.__conn.sismember(self.__old,url):#判断是否是已爬取url元素,返回TRUE则存在,否则,写入待爬取url
					self.__conn.sadd(self.__new,url)
			else:
				return True
	def get_url(self):
		"""从待爬取集合获取要爬取url供给爬虫"""
		url = self.__conn.spop(self.__new)#待爬取集合获取url
		if url :
			self.__conn.sadd(self.__old,url)#写入已爬取集合,并且返回该条url
			return url
		else:
			return False
	def back_error(self,url):
		"""对于请求失败的url,则继续加入代爬取集合"""
		try :
			self.__conn.smove(self.__old,self__new,url,url)
			return True
		except:
			return False
	
	def count_newurl(self):
		"""获取未爬取url数量"""
		return self.__conn.scard(self.__new)
				


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值