def get_part_req_data(self, nickname): """ 仅获取阅读量和评论的请求数据 :param nickname:公众号昵称 :return:最后成功与否取决在redis中是否找到有有效数据 """ TidyReqData.flush_data() redis_instance.set('current_nickname', nickname) self.home_to_gzh_search() self.search_gzh(nickname) self.click_a_message(args=1) self.check_comments() self.home()
def get_all_req_data(self, nickname, hand=False): """ 获取关于一个公众号的全部请求数据 当前程序使用baidu API受到网络和并发限制效果并十分理想 :param nickname: 公众号昵称 :return:最后成功与否取决在redis中是否找到有有效数据 """ TidyReqData.flush_data("*.req") redis_instance.set('current_nickname', nickname) self.home_to_gzh_search() self.search_gzh(nickname) if hand == False: self.all_message() self.click_a_message() # self.check_comments() else: input("请一一手动或取参数 回车退出") self.home()
def flush_req_data(): from crawler_assist.tidy_req_data import TidyReqData TidyReqData.flush_data("*.req") return "缓存的请求数据已经删除"
def get_xcx_item_list(self, nickname, hand=False): """ 获取小程序所有请求数据 :param hand: 是否手动 :param nickname: 小程序名称 :return: """ print(nickname) TidyReqData.flush_data("*.req") self.home_to_search() self.search_xcx(nickname) # 选中第一个结果后进入小程序,先选择第一个栏目 self.oap.tap(tuple(eval(self.data['BTN']['JIU_QIAN_ZFJY']))) time.sleep(1) # self.oap.tap(tuple(eval(self.data['BTN']['JIU_QIAN_HWYJ']))) # 截图 与记录匹配获取相关信息 # 方案一:先拉取全部文章列表,然后遍历获取每篇文章 # 方案二:现截现获取信息 get_list_slide_num = 0 while redis_instance.get("xcx_get_list_stop") is None: self.oap.swap([60, 1000], [60, 250]) get_list_slide_num = get_list_slide_num + 1 time.sleep(0.5) # 回退到首部 if redis_instance.get("xcx_get_list_stop"): for i in range(get_list_slide_num): self.oap.swap([60, 250], [60, 1000]) # 获取小程序信息列表 xcx_item_list = TidyReqData.get_xcx_req_data("*._xcx") # xcx_item_list = [] for item in xcx_item_list: print("当前文档", item['title']) if xcx.doc_exist("jqzt", item['id']): self.oap.swap([60, 500], [60, 250]) continue # 遍历每一项,并截图处理 item_pos = self.vc.click_by_words(item['title'], tap=False) print(item_pos, "", item['title']) self.oap.tap(item_pos) time.sleep(3) self.oap.key(self.data['KEY']['BACK_KEYEVENT']) # 到达限制次数,退出循环 if redis_instance.get("xcx_get_detail_stop"): break self.oap.swap([60, 500], [60, 250]) # 滑动拉取列表拉完停止 time.sleep(1) self.oap.key(self.data['KEY']['BACK_KEYEVENT']) self.oap.key(self.data['KEY']['BACK_KEYEVENT']) print("原始数据进入mongo %s" % ("xcx_jqzt")) TidyReqData.insert_xcx_to_mongo("xcx_jqzt") print("原始数据进入mongo %s 完成" % ("xcx_jqzt")) print("正在为 %s 创建索引..." % ("jqzt")) index_result = xcx.index_db_docs("jqzt") print("索引完成", index_result) print("redis 相关数据设置缓存时间") ttl_result = TidyReqData.set_redis_ttl(60 * 60 * 5) print("redis 5小时失效时间设置完成")