• 分享一下办公自动化常用的思想


    网页获取数据需求①

    大体思路:Python+selenium+Xpath

    我们在利用Python做办公自动化,从网页中获取数据时,其实理应想到的时爬虫技术,但是有时候很多网页数据都是加密的,尤其是我们公司的数据,所以当你想利用爬虫进行数据获取时,这是一个很好的想法,但是无奈数据加密,这时候我们就会另辟蹊径,直接从加载出来的网页中,通过Xpath直接定位元素获取数据,大体逻辑如下:

    ①利用以下代码,开启一个指定端口号的谷歌浏览器进程(Python3.8以上):

    chrome_options = Options()
    chrome_options.add_experimental_option('debuggerAddress', '127.0.0.1:9222')
    chrome_driver = './chromedriver.exe'
    service = Service(chrome_driver)
    driver = webdriver.Chrome(service=service, options=chrome_options)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    利用以下代码,开启一个指定端口号的谷歌浏览器进程(Python3.8以下):
    注意:C:\Program Files (x86)\Google\Chrome\Application,这一行这指的是自己电脑谷歌浏览器可执行程序的位置,请按照不同的电脑进行灵活变动

     cd C:\Program Files (x86)\Google\Chrome\Application & chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\selenum\AutomationProfile"
    
    
    • 1
    • 2

    ②接下来就是利用Xpath定位指定元素进行如:点击、文本获取等操作

    参考案例:点我进入案例


    网页获取数据需求②

    大体思路:requests爬虫

    如果数据没有加密参数,我们直接可以利用爬虫进行获取数据,模板我也给你写好了,你只需要更改一下自己网址以及携带的参数即可

    import json
    import time
    import requests
    
    url = '网址'
    params = {
      "参数键": '值',
      "参数键": '值',
      "参数键": '值',
    }
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
    }
    
    res_data = requests.get(url=url,params=params,headers=headers)
    res_data.encoding= "utf-8"
    data  = res_data.text
    '''
    对获取的数据进行进一步分析
    '''
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    参考案例1:点我进入案例1

    参考案例2:点我进入案例2

    参考案例3:点我进入案例3


    批量生成需求

    ①文件的移动、重命名

    我常用的时os模块

    参考案例1(多文件夹内文件移动):点我进入案例1

    参考案例2(单个夹内文件移动):点我进入案例2

    参考案例3(批量修改图片后缀):点我进入案例3

    ②word、Excel批量生成

    我常用的模块时 python-docx,openpyxl,以下时非常典型的两个例子:

    参考案例1(将Word文件中的内容写入Excel文件):点我进入案例1

    参考案例2(将Excel文件内容写入Word文件):点我进入案例2


    匹配需求

    匹配需求的逻辑其实就两条,这两条可以涵盖Excel表之间:一对多、多对一、多对多的匹配需求,我们假设不论是一对多、多对一、多对多,我们统称 A 数据 匹配 B数据

    ① 将B数据制作成json文件

    ②加载json数据为字典,读取数据A数据进行匹配

    典型案例1(多表之间互匹):点我进入案例2

    案例中的第二段代码,可改为以下代码,这样就无需将json合并,因为读取的就是合并的

    import csv
    import os
    from collections import defaultdict
    def write_json():
        list_a = []  # 列表用来存放 (A列,B列) 的元组,所有的数据
        d = defaultdict(list)  # 创建字典
        for f in os.listdir("./csv版/"):
            with open("./csv版/" + f, newline='', encoding='utf-8') as csvfile:
                # 读取 CSV 文件内容
                reader = csv.reader(csvfile, delimiter=',', quotechar='"')
                # 遍历 CSV 文件中的每一行数据
                print(f, "加载完毕")
                for d in reader:
                    # 处理每一行数据
                    # print(d)
                    list_a.append((d[0], d[0]))  # 这个就不翻译了吧,添加数据
                
        for key, value in list_a:
            d[key].append(value)  # 省去了if判断语句,添加字典
        with open(f"./json文件/data.json", "w", encoding="utf-8") as f2:
            f2.write(json.dumps(d, ensure_ascii=False))  # 写入json,防止乱码
    
    
    write_json()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    今天分享的大致就是我在日常办公过程中常见的一些需求的解决方案

    希望对你有所帮助

    希望大家点赞收藏支持一下

    最后祝大家 1024 快乐

  • 相关阅读:
    本地无法正常连接ubuntu问题
    数组扁平化
    Verilog结构语句和函数、任务语句
    短视频账号矩阵源码saas开发-----
    蓝桥杯构造法|两道例题(C++)
    vue3的element-plus的el-dialog的样式修改无效问题
    【Linux网络】工作环境救急——关于yum安装的5个花式操作
    pdf文件怎么转化为word,pdf转换成word的方法
    RabbitMQ四种交换机类型
    丹麦技术大学首创将量子计算应用于能源系统潮流建模
  • 原文地址:https://blog.csdn.net/weixin_42636075/article/details/134022094