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


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