Пример #1
0
    def add_sub_category():
        data = request.json
        education_id = data.get('education_id', None)

        if ((data.get('name', '') == '')
                or (data.get('education_id', '') == '')):
            abort(422)
        try:
            sub_category = SubCategory(name=data.get('name'))
            sub_category.education_id = data.get('education_id')
            sub_category.rank = data.get('rank')
            sub_category.insert()
        except Exception:
            abort(422)

        return jsonify({'message': 'success', 'id': sub_category.id})
Пример #2
0
	except URLError,e:																				#如果出现URLError,将错误记录到日志,并返回错误信息和当前事件
		urlErrorHandler(log,e)																			#调用urlErrorHandler函数处理URLError
		log.currentEvent='Catch Category False'													#如果发生异常,则记录事件为'Catch Category False'
		log.save()																						#保存log数据
		return HttpResponse(log.errorInfo)															#返回log信息
	for top in topC:
		topLink=getGroup(top,'TopLink')															#调用getGroup函数,取出一级分类url,并对其转码
		topTitle=getGroup(top,'TopTitle')															#调用getGroup函数,取出一级分类标题,并对其转码
		tc=TopCategory(title=topTitle,url=topLink,siteId=id)										#将一级分类数据保存到TopCategory的模型中,siteId为当前抓取站点的id值
		tc.save()																						#保存一级分类到数据库
		subHtml=top.group()																			#得到当前一级分类的匹配信息(其中包括每个子分类的列表)
		subC=compiledSubPatterns.finditer(subHtml)												#对子分类进行匹配,得到当前一级分类下的所有子分类的一个迭代器
		for sub in subC:																				#对子分类迭代器进行循环
			subLink=getGroup(sub,'SubLink')														#取出子分类url,并对其转码
			subTitle=getGroup(sub,'SubTitle')														#取出子分类标题,并对其转码
			sc=SubCategory(title=subTitle,url=subLink,topcategory=tc,siteId=id)				#将子分类数据赋值给SubCategory模型
			sc.save()																					#保存子分类数据到数据库
			#--记录日志--#
			log.errorInfo='No Exception Raise'
			log.currentEvent='Save Category Success'
			log.save()
	return HttpResponse('抓取成功,请<a href="/bookcatch/addsites/">返回</a>')
	
def getPageUrl(firstUrl,num):
	"""公共函数--得到分页地址,分页地址示例:http://list.book.dangdang.com/01.01.01_P44.htm"""
	page='_P'+str(num)+'.htm'
	url=firstUrl.replace('.htm',page)
	return url
	
def singleBookSave(subcategory,log,b,itemId):
	"""***单本书函数:单本书籍的抓取、匹配、最后保存到数据库***"""
Пример #3
0
def createSubCategory(number, text, cat):
    subCat = SubCategory(CategoryID = number, CategoryDescription=text, Parent=cat)
    subCat.save()
    return subCat
Пример #4
0
		return HttpResponse(log.errorInfo)
	for top in topC:                                                                     							#对上面的迭代器进行循环
		topLink=top.group('TopLink')                                             							#取出一级分类url
		topTitle=top.group('TopTitle')                                           							#取出一级分类标题
		if topTitle !='进口原版':                                                     							#由于卓越的所有分类的进口原版分类url地址错误,所以要把这个分类排除在外,用其他方法抓取
			tc=TopCategory(title=topTitle,url=topLink,siteId=id)       							#将一级分类数据保存到TopCategory的模型中(即:保存到数据库中),siteId为当前抓取站点的id值
			tc.save()
			subHtml=top.group()                                                   							#得到当前一级分类的匹配HTML代码(其中包括每个子分类的列表)
			subC=compiledSubPatterns.finditer(subHtml)                            						#对子分类进行匹配,得到当前一级分类下的所有子分类的一个迭代器
			i=0
			for sub in subC:                                                           							#对子分类迭代器进行循环
				i+=1
				subLink=sub.group('SubLink')                                   							#取出子分类url
				subTitle=sub.group('SubTitle')                                 							#取出子分类名称
				if i !=1:                                                                 							#由于这个迭代器的第一个是一级分类名称,所以应该排除在外
					sc=SubCategory(title=subTitle,url=subLink,topcategory=tc,siteId=id)		#将子分类数据保存到数据库中
					sc.save()
					#--保存成功,将事件记录到日志--#
					log.errorInfo='No Exception Raise'                       								#保存日志错误信息
					log.currentEvent='Save Category Success'           								#保存当前事件
					log.save()
					
	#--抓取“进口原版”分类,由于卓越的所有分类的进口原版分类url地址错误,所以要从其他页面抓取--#
			
	#进口原版的分类地址#		
	IOUrl='http://www.amazon.cn/s/qid=1261309185/ref=sr_nr_n_49?ie=UTF8&rs=658391051&bbn=658391051&rnid=658391051&rh=n%3A658390051%2Cn%3A!658391051%2Cn%3A2045366051'

	try:
		IOData=compiledIOPatterns.finditer(getHtml(IOUrl))                       						#抓取进口原版分类下的子分类,得到一个子分类的迭代器
	except URLError,e:
		urlErrorHandler(log,e)																			#调用 urlErrorHandler函数处理异常