def save(self,task_id): """ 保存录制的站点规则 :param task_id: 任务id :return: """ try: task_name = self.prev.basic.site_name_edit.text() task_url = self.prev.basic.site_url_edit.text() theme = self.prev.basic.task_theme_box.itemData(self.prev.basic.task_theme_box.currentIndex()) category = self.prev.basic.task_category_box.itemData(self.prev.basic.task_category_box.currentIndex()) rule_content = {} if self.basic_info_check(task_name,task_url,theme,category): # ==========================基本信息=================================== basic = {} basic['id'] = self.task_id basic["name"] = task_name basic["url"] = task_url basic["theme"] = theme basic["category"] = category basic['state'] = 0 basic['user'] = '******' basic['acqType'] = self.prev.step_label.acq_type rule_content["basic"] = basic # ==========================规则信息=================================== navi_data = Table_Util.get_navi_table(self.prev.transcribe.step.navi_table) flip_data = Table_Util.get_flip_table(self.prev.transcribe.step.flip_table) field_data = Table_Util.get_field_table(self.prev.transcribe.step.field_table) rule_content['rule'] = {} rule_content['rule']['navi'] = navi_data rule_content['rule']['flip'] = flip_data rule_content['rule']['field'] = field_data if self.task_id == 0: id = BasicDao.insert_single_task(rule_content) if id: self.task_id = id else: BasicDao.update_single_task(rule_content) QMessageBox.information (self.prev, "温馨提示", "保存成功") print(rule_content) except Exception as a: QMessageBox.warning (self.prev, "温馨提示", "保存出错啦"+traceback.format_exc())
def deal_data(self, data): try: info = json.loads(data) acq_type = self.prev.prev.step_label.acq_type table_list = [ self.prev.step.navi_table, self.prev.step.flip_table, self.prev.step.field_table ] self.target_table = list( filter(lambda x: not x.isHidden(), table_list))[0] Table_Util.insert_single_data(self.target_table, info) self.add_more_data() except Exception as a: QMessageBox.warning(self.prev.step, "温馨提示", "规则录制出现异常:{}".format(traceback.format_exc()))
def deal_data_once(self, data): try: info_list = json.loads(data) acq_type = RestService.widget.prev.step_label.acq_type table_list = [ RestService.widget.step.navi_table, RestService.widget.step.flip_table, RestService.widget.step.field_table ] self.target_table = list( filter(lambda x: not x.isHidden(), table_list))[0] if isinstance(info_list, list): for info in info_list: Table_Util.insert_single_data(self.target_table, info) else: Table_Util.insert_single_data(self.target_table, info_list) except Exception as a: QMessageBox.warning(RestService.widget.step, "温馨提示", "规则录制出现异常:{}".format(traceback.format_exc()))
def getHtml(self, *k, **v): try: html = k[0] start = int(re.findall(r'\d+', self.diff_str)[0]) selectors = etree.HTML(html) while start <= 100: self.diff_str = self.diff_str.replace(str(start), str(start + 1)) self.xpath_before_list[self.index] = self.diff_str xpath = "/".join(self.xpath_before_list) content = selectors.xpath(xpath) if len(content): resultContent = ''.join( content[0].xpath('string(.)').replace('\n', '').split()) info = {} info['xpath'] = xpath info['text'] = resultContent Table_Util.insert_single_data(self.target_table, info) start = start + 1 except Exception as a: print(traceback.format_exc())
def load_data(self, task_id): """ 根据站点id加载采集的录制规则 :param task_id: :return: """ theme_list = BasicDao.get_all_theme() self.widget.task_theme_box.addItem("请选择", "0") theme_code_list = ['0'] for theme in theme_list: self.widget.task_theme_box.addItem(theme['name'], theme['code']) theme_code_list.append(theme['code']) info = BasicDao.task_info_by_id(task_id) if info: # =================================基本信息===================================================== self.widget.site_name_edit.setText(info['name']) self.widget.site_url_edit.setText(info['url']) self.widget.task_theme_box.setCurrentIndex( theme_code_list.index(info['theme'])) index = self.widget.category_code_list.index(info['category']) if index > 0: index = index - 1 self.widget.task_category_box.setCurrentIndex(index) # ==================================采集模式===================================================== self.widget.prev.mode.mode_1.setPixmap( QPixmap('../images/mode-1.png')) self.widget.prev.mode.mode_2.setPixmap( QPixmap('../images/mode-2.png')) self.widget.prev.mode.mode_3.setPixmap( QPixmap('../images/mode-3.png')) self.widget.prev.step_label.acq_type = info['acqType'] if info['acqType'] != 0: mode_list = [ self.widget.prev.mode.mode_1, self.widget.prev.mode.mode_2, self.widget.prev.mode.mode_3 ] mode_list[info['acqType'] - 1].setPixmap( QPixmap('../images/s-mode-{}.png'.format( str(info['acqType'])))) # ==================================列表内容===================================================== rule = json.loads(info['rule']) if rule['navi']: for info in rule['navi']: Table_Util.insert_single_data( self.widget.prev.transcribe.step.navi_table, info) # ==================================翻页内容===================================================== if rule['flip']: for info in rule['flip']: Table_Util.insert_single_data( self.widget.prev.transcribe.step.flip_table, info) # ==================================详情内容===================================================== if rule['field']: for info in rule['field']: Table_Util.insert_single_data( self.widget.prev.transcribe.step.field_table, info)