def _get_year_bound(self, date, days): params = {} if date is None: return params params['date_gkr_from'] = date2str(date) ret = False if days: old_year = date.year to = date + timedelta(days=days) if to.year != old_year: ret = True if days is None or ret: to = datetime(date.year, 12, 31) params['date_gkr_to'] = date2str(to) return params
def _crawl_page_done(self, total_count, item): """爬取页面完成后的操作""" # 更新值 self.redis.inc_index() self.redis.add_cur_count(count=len(item['array'])) self.logger.info('爬取%s: 第%d页%d条,当前共%d条' % (self.redis.main_cls_number, self.redis.cur_page, len(item['array']), self.redis.cur_count)) self.redis.inc_page() # 使用到了天数且爬取完成 is_next = self.redis.cur_count < total_count if not is_next and self.redis.is_using_date(): is_next = True self._cookie_dirty = True self.redis.set_cur_page(1) self.redis.set_cur_count(0) # 年份处理 old_year = self.redis.date.year date = self.redis.date + timedelta(days=self.redis.days) # 超出年份, 切换到下一年 if date.year != old_year: # 最低年限,超出这个年限则不再进行爬取 BOUND_YEAR = int(os.getenv('BOUND_YEAR', 1989)) if BOUND_YEAR > old_year - 1: is_next = False else: date = datetime(old_year - 1, 1, 1) self.redis.set_days(366) self.redis.set_date(date) if is_next: self.logger.info('爬取从%s开始' % date2str(self.redis.date)) # 是否继续爬取页面 return is_next
def set_date(self, date): self.date = date dateStr = date2str(date) self.redis.hset('process', 'date', dateStr)