背景需求:
上周“园园通”(上海的幼儿数据采集平台)突然更新的“直报通”的页面
![]()
![]()
导致全部幼儿都变成需要处理的数据
![]()
点开一看“总园-中大班”幼儿信息页,原来是幼儿的“出生地区县、籍贯城市、籍贯区县”需要更新。
![]()
几百条要参考下面的户籍地址进行修改,实在崩溃!
又看“分园-托小班”,这里只有““出生地区县、籍贯区县”需要填写。
![]()
原来托小班的项目里,所以孩子无论是否本市户籍,都默认籍贯身份是上海,所以籍贯城市就默认上海。因此,只需要填写“出生地区县”“籍贯区县”。
![]()
大班升学系统应用的数据并不是“园园通”的数据,因此我对托小班的数据只需要“填全”而不需要“准确”。
因此默认对托小班的出生地区县、籍贯区县都填写“闵行区”
![]()
![]()
然后把页面下滑到最下面,按保存
![]()
这一块,完全可以用一个Python模拟坐标来实现“三次按钮”
''' 园园通新版,有大量孩子的数据不全。 包含Vscode界面最小化,完成后csdn界面也最小化 星火讯飞,deepseek、阿夏 # 打开火狐浏览的园园通新版yyt,默认页面大小,100% 逐条选择出生区县,籍贯区县(不管是不是上海户籍,都选两个闵行) 20260121 ''' import os,time import pyautogui import pyperclip import re import win32api import win32con import time import pygetwindow as gw # 获取当前活动窗口。把P测试测试01 current_window = gw.getActiveWindow() if current_window: current_window.minimize() else: print("未找到活动窗口") time.sleep(2) # 预设人数,如果10人 看页面左上角的 num = 10 for i in range(1, num + 1): # 修改 pyautogui.moveTo(1785, 451) pyautogui.click() time.sleep(5) # 移动到出生地区县的三角 pyautogui.moveTo(1640, 737) pyautogui.click() time.sleep(1) # 点击下箭头10次 for _ in range(8): pyautogui.press('down') time.sleep(0.1) # 稍微等待一下,确保每次按键都被处理 pyautogui.press('enter') time.sleep(2) # 移动到籍贯区县的三角 pyautogui.moveTo(1633, 798) pyautogui.click() time.sleep(1) # 点击下箭头10次 for _ in range(8): pyautogui.press('down') time.sleep(0.1) # 稍微等待一下,确保每次按键都被处理 pyautogui.press('enter') time.sleep(2) # 鼠标移动到滚动条,再详细滚 pyautogui.moveTo(1911, 576) for x in range(14): pyautogui.click (1916, 1039) time.sleep(0.1) # 蓝色保存按钮 pyautogui.click(902, 1015) time.sleep(5) # # 选择Python # pyautogui.click(910, 516) # time.sleep(1) # 关闭所有打开的窗口 pyautogui.moveTo (1889, 19) pyautogui.click() time.sleep(1) # 获取当前活动窗口 CSDN最小化 current_window = gw.getActiveWindow() if current_window: current_window.minimize() else: print("未找到活动窗口")
运行到一半,我发现里面有些出生地写了外地,导致有三个框要填写,程序就报错了
![]()
![]()
因此代码里面我再加一个身份证号码作为筛选
![]()
![]()
![]()
我发现只要写一次3101就行,返回后这个3101还在
''' 园园通新版,有大量孩子的数据不全。 包含Vscode界面最小化,完成后csdn界面也最小化 星火讯飞,deepseek、阿夏 # 打开火狐浏览的园园通新版yyt,默认页面大小,100% 逐条选择出生区县,籍贯区县(不管是不是上海户籍,都选两个闵行) 20260121 ''' import os,time import pyautogui import pyperclip import re import win32api import win32con import time import pygetwindow as gw # 获取当前活动窗口。把P测试测试01 current_window = gw.getActiveWindow() if current_window: current_window.minimize() else: print("未找到活动窗口") time.sleep(2) # 预设人数,如果10人 看页面左上角的 # 输入身份证前面数据 name=f'3101' pyautogui.moveTo (1072, 275) pyautogui.click() pyperclip.copy(name) # 黏贴图片地址 pyautogui.hotkey('ctrl', 'v') time.sleep(1) # 检索 pyautogui.moveTo (1576, 277) pyautogui.click() time.sleep(2) num = 10 for i in range(1, num + 1): # 修改 pyautogui.moveTo(1785, 451) pyautogui.click() time.sleep(5) # 移动到出生地区县的三角 pyautogui.moveTo(1640, 737) pyautogui.click() time.sleep(1) # 点击下箭头10次 for _ in range(8): pyautogui.press('down') time.sleep(0.1) # 稍微等待一下,确保每次按键都被处理 pyautogui.press('enter') time.sleep(2) # 移动到籍贯区县的三角 pyautogui.moveTo(1633, 798) pyautogui.click() time.sleep(1) # 点击下箭头10次 for _ in range(8): pyautogui.press('down') time.sleep(0.1) # 稍微等待一下,确保每次按键都被处理 pyautogui.press('enter') time.sleep(2) # 鼠标移动到滚动条,再详细滚 pyautogui.moveTo(1911, 576) for x in range(14): pyautogui.click (1916, 1039) time.sleep(0.1) # 蓝色保存按钮 pyautogui.click(902, 1015) time.sleep(5) # # 选择Python # pyautogui.click(910, 516) # time.sleep(1) # # 关闭所有打开的窗口 # pyautogui.moveTo (1889, 19) # pyautogui.click() # time.sleep(1) # # 获取当前活动窗口 CSDN最小化 # current_window = gw.getActiveWindow() # if current_window: # current_window.minimize() # else: # print("未找到活动窗口")
还剩非沪籍的孩子
![]()
我准备遇到报错,修改后再次运行。这个只能消耗时间,原则上都是两个框。只有个别人会三个框。
漫长运行后,未填全幼儿没有了
![]()
同样方式做一分园和总园:先把3101的孩子做掉
虽然电脑做时间也很长,也容易中断,但是可以减少人力反复操作的暴躁感,顺利运行时,还能够做点其他事情。
做了两个小时,处理掉100多条,明天继续
![]()