def searchLink(self, strUrl): ''' 反向搜索未找到数据爬取 @params strUrl string 商品链接地址 ''' strModel = 'single' base.getProd(self, strUrl, strModel) # 判断参数是否正确,如果不正确,结束本次执行 if not self.dicParams: return # 如果状态不存在,结束本次执行 if not self.request_status: return # 判断请求状态,如果状态存在且值不等于200,通知API,将商品做下架处理 if self.request_status and self.request_status != 200: self.setUnavailable(self.dicParams['jgb_asin']) return # 检测是否是验证码 booStatus = self.checkCaptcha() if booStatus: base.getProd(self, strUrl, strModel) return self.getPageDom() print self.jsonEncode(self.dicProduct) intReturn = self.sendData(self.jsonEncode(self.dicProduct)) # 判断是否删除请求商品ASIN对应的商品和索引 self.delProd(self.dicParams['jgb_asin'], self.dicProduct['parent_asin'], self.dicProduct['sub_asin']) # 抓取子订单 if self.dicProduct['sub_asin']: dicSubAsin = self.dicProduct['sub_asin'] dicSubAsin.append(self.dicProduct['parent_asin']) for item in dicSubAsin: self.getPage(item, strModel)
def getProd(self, strUrl, strModel = ''): ''' 单品爬取 @params strUrl string 商品链接地址 ''' base.getProd(self, strUrl, strModel) # 判断参数是否正确,如果不正确,结束本次执行 if not self.dicParams: return # 如果状态不存在,结束本次执行 if not self.request_status: return # 判断请求状态,如果状态存在且值不等于200,通知API,将商品做下架处理 if self.request_status and self.request_status != 200: self.setUnavailable(self.dicParams['jgb_asin']) return # 检测是否是验证码 booStatus = self.checkCaptcha() if booStatus: base.getProd(self, strUrl, strModel) return self.getPageDom() if not self.dicProduct['title']: self.outPut('no title, reload...', 'error') base.getProd(self, strUrl, strModel) return print self.jsonEncode(self.dicProduct) intReturn = self.sendData(self.jsonEncode(self.dicProduct)) # 判断是否删除请求商品ASIN对应的商品和索引 self.delProd(self.dicParams['jgb_asin'], self.dicProduct['parent_asin'], self.dicProduct['sub_asin']) # 抓取子订单 if self.dicProduct['sub_asin']: dicSubAsin = self.dicProduct['sub_asin'] dicSubAsin.append(self.dicProduct['parent_asin']) for item in dicSubAsin: self.getPage(item, strModel) # 发送邮件 self.sendEmail(self.dicParams['email'], self.dicProduct['id'], self.dicParams['url']) # 更新单品数据爬取时间 self.updateSingleTime(self.dicParams['single_id'])
def getPage(self, strAsin, strModel): ''' 获取页面 @params strAsin string asin @params strCategory string 分类ID ''' strUrl = self.strProdUrl + strAsin + '?psc=1&smid=ATVPDKIKX0DER|' + self.dicParams['category'] base.getProd(self, strUrl, strModel) # 判断参数是否正确,如果不正确,结束本次执行 if not self.dicParams: print 'no self.dicParams' return # 如果状态不存在,结束本次执行 if not self.request_status: print 'no status' return # 判断请求状态,如果状态存在且值不等于200,通知API,将商品做下架处理 if self.request_status and self.request_status != 200: self.setUnavailable(self.dicParams['jgb_asin']) return # 检测是否是验证码 booStatus = self.checkCaptcha() if booStatus: base.getProd(self, strUrl, strModel) return self.getPageDom() if not self.dicProduct['title']: self.outPut('no title, reload...', 'error') base.getProd(self, strUrl, strModel) return print self.jsonEncode(self.dicProduct) intReturn = self.sendData(self.jsonEncode(self.dicProduct))