表格数据提取

本贴最后更新于 1526 天前,其中的信息可能已经事过境迁
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time  : 2020/12/14 13:07
# @Author : cuijianzhe
# @File  : xlwt.py
# @Software: PyCharm

import openpyxl
import requests
import os
import random
name = input('请输入表格名称:')
path = name + '.xlsx'
wb = openpyxl.load_workbook(path)

sheetnames = wb.sheetnames #获取文件中所有的sheet
sheetData = wb[sheetnames[0]]  #第一个sheet的内容

rows_max = sheetData.max_row  #最大行数
cols_max = sheetData.max_column  #最大列数

ApprovalNumber = sheetData.cell(row = 1,column = 4).value
def get_case(): #获取所有表头功能
    case_list = []
    for cols in range(1,cols_max):  #列数
        cases = sheetData.cell(row=1,column=cols).value
        case_list.append(cases.replace('\n\n','\n'))
    return case_list

def generate_code(char):
    all_char = '0123456789qazwsxedcrfvtgbyhnujmikolpQAZWSXEDCRFVTGBYHNUJIKOLP'
    index = len(all_char) - 1
    code = ''
    for _ in range(int(char)):
        num = random.randint(0,index)
        code += all_char[num]
        res = ''.join(code)
    return res

def get_carNum():
    '''    提取并添加站点名称    '''
    # 第一个方法使用列表
    cars_list = [] #存储车牌号
    try:
        for cols in range(1,cols_max):
            carNum = sheetData.cell(row = 1,column = cols).value #每列的值
            if carNum == '车牌号':
                for rows in range(2,rows_max+1):  #遍历最大行数
                    carnumName = sheetData.cell(row = rows,column=cols).value
                    if carnumName != "":
                        cars_list.append(carnumName)
                    else:
                        cars_list.append("空车牌号在第%s行"%(rows))
    except Exception as error:
        print('get车牌号错误', 'error:{}'.format(error))
    return cars_list

def get_url(case_list):
    url_list = []

    for cols in range(1, cols_max):  # 列数
        datas = sheetData.cell(row=1, column=cols).value
        if datas == case_list:
            for rows in range(2,rows_max+1):
                images_url = sheetData.cell(row=rows, column=cols).value
                if images_url != "":
                    url_list.append(images_url.replace('\n\n','\n'))
                else:  #如果此单元格可能为空的话,添加自定义链接占位
                    url_list.append('https://file.cjzshilong.cn/pictures_file/guohui-e67e7b3b.png\n')
        else:
            continue
    return url_list

def Download(url,car_name):
    for num in range(len(car_name)):
        ApprovalNumber = sheetData.cell(row=num+2, column=1).value  # 订单编号
        name = car_name[num] #车牌目录
        name_dir = car_name[num] + '_' + ApprovalNumber #同车牌 不同订单 创建目录
        list_files = os.listdir('./')
        if name not in list_files:
            os.mkdir(name)
            os.chdir(name)
            os.mkdir(name_dir)
            os.chdir(name_dir)
            file_list = url[num].split('\n')
            with open('./统计' + name_dir + '_' + generate_code(4)  + '的图片url_共计' + str(len(file_list)) + '条.txt', 'w', encoding='utf-8') as f:
                f.write(url[num])

            for url_car in file_list:
                if url_car != '':
                    response = requests.get(url_car)
                    with open(name +'_'+ generate_code(15) + '.jpg', 'wb') as car:
                         car.write(response.content)
                    print('%s下载完毕' %name_dir)

            os.chdir('../../')
        else:
            namedir_list = os.listdir('./' + name)
            os.chdir(name)
            if name_dir not in namedir_list:
                os.mkdir(name_dir)
                os.chdir(name_dir)
                file_list = url[num].split('\n')
                with open('./统计' + name_dir + '_' + generate_code(4)  + '的图片url_共计' + str(len(file_list)) + '条.txt', 'w', encoding='utf-8') as f:
                    f.write(url[num])

                for url_car in file_list:
                    if url_car != '':
                        response = requests.get(url_car)
                        with open(name +'_'+ generate_code(15) + '.jpg', 'wb') as car:
                             car.write(response.content)
                        print('%s下载完毕' %name_dir)
                os.chdir('../../')
            else:
                os.chdir(name_dir)
                file_list = url[num].split('\n')
                with open('./统计' + name_dir + '_' + generate_code(4) + '的图片url_共计' + str(len(file_list)) +  '条.txt', 'w', encoding='utf-8') as f:
                    f.write(url[num])

                for url_car in file_list:
                    if url_car != '':
                        response = requests.get(url_car)
                        with open(name + '_' + generate_code(15) + '.jpg', 'wb') as car:
                            car.write(response.content)
                        print('%s下载完毕' % name_dir)
                os.chdir('../../')

if __name__ == '__main__':
    case_list = ['车辆正面照&车辆安全检查照','司机安全照','起始用车仪盘公里数','结束用车仪盘公里数','路桥费照片','停车费照片']
    car_name = get_carNum()
    for func in case_list:
        url_img = get_url(func)
        Download(url_img, car_name)
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    548 引用 • 674 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
cuijianzhe
6 号黑客成员, 2000-03-03 23:22:13 加入 北京

推荐标签 标签

  • gRpc
    11 引用 • 9 回帖 • 82 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 345 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 215 关注
  • abitmean

    有点意思就行了

    31 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    77 引用 • 430 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 425 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 72 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 2 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 236 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 1 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 1 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 86 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 1 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    498 引用 • 1388 回帖 • 262 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 414 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 13 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 148 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 263 关注