爬虫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)
				


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章