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()
Ejemplo n.º 3
0
def flush_req_data():
    from crawler_assist.tidy_req_data import TidyReqData
    TidyReqData.flush_data("*.req")
    return "缓存的请求数据已经删除"
Ejemplo n.º 4
0
    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小时失效时间设置完成")