zwq-

在做RPA项目的网页表格填报时总结了几个方法,记录一下:

import os
import datetime
import copy
import requests

# 主流程配置
rpatime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# 一、排污单位基本信息子流程配置
# 网页模板中c1与excle数据不对应但实际为同一种类型的映射关系
web_excel_dict = {"原料": "主要原料用量", "辅料": "主要辅料用量", "主要产品": "生产规模"}
# 网页中列数比其他类别多一列的类别配置
web_special_c1 = ["能源消耗"]
# 新增选择c1时网页中与excle数据不对应但实际为同一种类型的映射关系
excel_web_c1_add_dict = {"主要原料用量": "主料原料用量"}


# 网页表格模板中的分类c1
# web_c1_dict = {\'主要原料用量\': \'1\', \'主要辅料用量\': \'2\', \'能源消耗\': \'3\', \'生产规模\': \'4\', \'运行时间和生产负荷\': \'5\', \'主要产品产量\': \'6\', \'取排水\': \'7\', \'污染治理设施计划投资情况\': \'8\'}
# num_c1_dict = {\'1\': "主要原料用量", \'2\': "主要辅料用量", \'3\': "能源消耗", \'4\': "生产规模", \'5\': \'运行时间和生产负荷\', \'6\': "主要产品产量", \'7\': "取排水", \'8\': "污染治理设施计划投资情况"}
# web_table中的原始样式数据
# data_li.pop(0)
# new_data = {}

def is_int(s):
    """判断字符串是否为整数"""
    try:
        int(s)
        return True
    except ValueError:
        pass
    return False


def dispose_web_tb(web_table_li):
    """对网页表格进行处理,行列对齐"""
    tb_li = copy.deepcopy(web_table_li)
    tb_li.pop(0)
    num = \'\'
    web_c1 = \'\'
    web_c2 = \'\'
    web_c3 = \'\'
    for row in tb_li:
        if row[-1].strip() in [\'编辑\', \'删除\']:
            row.pop()
        if is_int(row[0]):
            if row[1] in web_excel_dict:
                row[1] = web_excel_dict[row[1]]
            if len(row) != 8:  # 少c4
                row.insert(4, \'\')
            num = row[0]
            web_c1 = row[1]
            web_c2 = row[2]
            web_c3 = row[3]
        else:
            row.insert(0, num)
            row.insert(1, web_c1)
            if web_c1 not in web_special_c1:
                row.append("")  # 缺少c4
            if len(row) == 8:
                web_c2 = row[2]
                web_c3 = row[3]
            else:
                row.insert(2, web_c2)
                if len(row) == 8:
                    web_c3 = row[3]
                else:
                    row.insert(3, web_c3)
    # log.info("len验证")
    # log.info([len(i) for i in tb_li])  # 验证len是否一致为8
    return tb_li

# new_web_tb = dispose_web_tb(web_table_li)
# log.info(new_web_tb)
# log.info([len(i) for i in new_web_tb])
# log.info(new_data)


def get_tr_td(table_li, new_tb_index):
    """
    获取tr和td号
    :param table_li: 原始网页表格,二维数组
    :param new_tb_index:所在新表格中的索引
    :return: tr, 数量td
    """
    org_tb_index = new_tb_index + 1  # 索引加一得到源列表的索引(因新列表去掉了表头)
    tr_num = org_tb_index + 1  # 该行tr

    tr_content = table_li[org_tb_index]  # tr内容
    subtractor = 2  # 长度需减去的数值, 初始值
    if is_int(tr_content[0]):
        subtractor += 1
    if tr_content[-1].strip() in [\'编辑\', \'删除\']:
        subtractor += 1
    td_count_num = len(tr_content) - subtractor  # 填入数量的td
    return tr_num, td_count_num


def get_add_tr_td(table_li, c1):
    """
    获取新增时的tr和 数量的td
    :param table_li: 原始网页表格内容
    :param c1: 记录内容c1
    :return:
    """
    for index, item_li in enumerate(table_li):
        if item_li[1] == c1:
            tr_num = index + 1
            td_count_num = len(item_li) - 4
            return tr_num, td_count_num

 

分类:

技术点:

相关文章:

  • 2021-12-16
  • 2022-02-21
  • 2021-09-03
  • 2021-12-15
  • 2022-12-23
  • 2022-02-28
猜你喜欢
  • 2021-12-26
  • 2022-12-23
  • 2021-04-11
  • 2021-12-17
  • 2021-11-14
  • 2021-05-22
相关资源
相似解决方案