
一、背景需求
8月10日,园园通的托班孩子导入,因为前期已经制作了班级栏目所以托班孩子都顺利进入托X班。而且没有标红报错,说明托班不像小班需要外省地址自行补充。



我把托班孩子全部信息下载来,看看他们的居住地、户籍地是否完整。
二、下载托班幼儿数据












托班的户籍地址是完整的(包含省市区+县路弄号)

现在居住地(都是闵行区XXX弄)也基本完整,但是有些有“市”有些没有,所以需要完善地址

三、批量调整地址
1、先修改“居住地址”,一列筛选,升序

没有加“上海市”的都在最前面。替换规律“闵行区”替换为“上海市闵行区”。



出现问题
下面正确“上海市闵行区XXX”的地址变成了(上海市闵行区闵行区)

在把“上海市上海市闵行区”改成“上海市闵行区“”

这里错了,导致出现“上海市闵行区浦东新区“之类的表述,””应该“上海市上海市”改成上海市”

前面的省市都补全了
2、尾部的没有“室”

Python代码识别每一个地址最后是不是室,没有室,就补上室,但是也可能村里的地址(“XX村3号”,没有弄和号),所以还是人工检索,目前我就手动补一下。
3、街道
有两个地址里面有“上海市闵行区XXXX街道XXX路XX弄XX号XXX室”
需要把“XXX街道”替换成“空”


4、复杂地址

也是手动修改
四、户口地址
基本都是正确的,包含省市区,有三个地址有问题

用接龙管家制作的表单收集家长填写信息,

下载的表单

把户籍地址补全(现居住地的地址的长度差不多,因为都是居住在学校附近)

五、Python编程
复制“06外省市户口孩子更新地址.py"
改名“07托班双地址重输入(包含省市区).py”


读取的列名:姓名,户籍地址、现居地址




就可以显示列的数字

代码地址重新连接




改成 2


对了,要按索引数字走(列的数字-1)

调整点击坐标位置


这里可以选择只要读取第2-2行(后续也用它仅把2-26行幼儿信息重新填充地址)

'''
园园通托班孩子 两个地址补全(省市区)再次写入园园通。
火狐浏览器,必须100%
豆包,阿夏
20260817
'''
import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw
# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
win = vscode_wins[0]
# 自动最小化VSCode
win.minimize()
print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
time.sleep(5) # 等待5秒给你放鼠标
import random
# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
t = random.uniform(2, 3)
time.sleep(t)
file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260817托班幼儿地址补全.xlsx"
wb = openpyxl.load_workbook(file_path)
# 读取表格
for sheet_name in wb.sheetnames:
ws = wb[sheet_name]
for row in ws.iter_rows(min_row=51, values_only=True): # 从第二行开始读取姓名
# for row in ws.iter_rows(min_row=2, max_row=2, values_only=True): # 做测试一行
# for row in ws.iter_rows(min_row=21, values_only=True): # 如果出问题,断了,从第X行读取孩子姓名
name = row[2] # 姓名3
Registered_Address = row[26] # 户口地址27
Residential_Address = row[33] # 居住地址34
print(name)
# 点击姓名栏,
pyautogui.click(861,376)
# 1. 复制指定文字到剪贴板
# print('写入姓名:',name)
pyperclip.copy(name)
# 2. 模拟Ctrl+V粘贴
pyautogui.hotkey("ctrl", "v")
rand_sleep() # 延迟2秒切换窗口
# 搜索
pyautogui.click(758,497)
rand_sleep()
# 编辑
pyautogui.click(1652,671)
time.sleep(3)
# 模拟滚动到底部
pyautogui.click(1652,671)
for _ in range(2):
pyautogui.scroll(-1000)
rand_sleep()
# time.sleep(0.3) # 每滚轮一下间隔0.3秒
# 户籍地址点击三次
for i in range(3):
pyautogui.click(1404,473)
rand_sleep()
# 1. 复制指定文字到剪贴板
# print('写入姓名:',name)
pyperclip.copy(Registered_Address)
# 2. 模拟Ctrl+V粘贴
pyautogui.hotkey("ctrl", "v")
rand_sleep() # 延迟2秒切换窗口
# 居住地址点击三次
for i in range(3):
pyautogui.click(1173,771)
rand_sleep()
# 1. 复制指定文字到剪贴板
# print('写入姓名:',name)
pyperclip.copy(Residential_Address)
# 2. 模拟Ctrl+V粘贴
pyautogui.hotkey("ctrl", "v")
rand_sleep() # 延迟2秒切换窗口
# 下移到底部
for _ in range(1):
pyautogui.scroll(-1000)
rand_sleep()
# 确认,回到最初的界面
pyautogui.click(1027,857)
time.sleep(6) # 保存时间长一点
# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")

存在问题:
1.肉眼看不见的没有帅选出来的错误
再系统个自动复制时,我也是盯着看,果然看到不少问题。把名字写下来,后续手动打开名字调整。







感悟:可能要来回修改,来回下载多次
2、运行40条最有,网页明显就变慢,变卡了。影响默认的间隔秒数。
感悟:每次运行30条,关闭园园通,重新登陆,再运行40条
再导出一次


改名字


有些地址没有提到区,手动补全,补全后,填充黄色,这样就不要从头到尾每个孩子都重新写一次

‘


目前看,就这几个外省户籍地址没有填全“省市区”(户口本上可能就是省略的)。

换了地址

重新生成一次从2-26行,重新写一遍“户籍地址的详细地址(省市区县),

“居住地”都正确了,所以隐藏居住地的代码。

'''
园园通托班孩子 两个地址补全(省市区)再次写入园园通。
火狐浏览器,必须100%
豆包,阿夏
20260817
'''
import openpyxl
import pyautogui
import time
import pyperclip
import pygetwindow as gw
# 1. 找到VSCode窗口(匹配标题含 Visual Studio Code)
vscode_wins = gw.getWindowsWithTitle("Visual Studio Code")
if not vscode_wins:
print("未找到VSCode窗口,请先打开VSCode再运行!")
else:
win = vscode_wins[0]
# 自动最小化VSCode
win.minimize()
print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置")
time.sleep(5) # 等待5秒给你放鼠标
import random
# 随机休眠:1~3秒,带小数,模拟真人操作
def rand_sleep():
t = random.uniform(2, 3)
time.sleep(t)
file_path = r"C:\Users\mhjg2\Desktop\20260805园园通小班分班\20260818托班幼儿地址补全.xlsx"
wb = openpyxl.load_workbook(file_path)
# 读取表格
for sheet_name in wb.sheetnames:
ws = wb[sheet_name]
# for row in ws.iter_rows(min_row=51, values_only=True): # 从第二行开始读取姓名
for row in ws.iter_rows(min_row=2, max_row=26, values_only=True): # 做测试一行
# for row in ws.iter_rows(min_row=21, values_only=True): # 如果出问题,断了,从第X行读取孩子姓名
name = row[2] # 姓名3
Registered_Address = row[26] # 户口地址27
Residential_Address = row[33] # 居住地址34
print(name)
# 点击姓名栏,
pyautogui.click(861,376)
# 1. 复制指定文字到剪贴板
# print('写入姓名:',name)
pyperclip.copy(name)
# 2. 模拟Ctrl+V粘贴
pyautogui.hotkey("ctrl", "v")
rand_sleep() # 延迟2秒切换窗口
# 搜索
pyautogui.click(758,497)
rand_sleep()
# 编辑
pyautogui.click(1652,671)
time.sleep(3)
# 模拟滚动到底部
pyautogui.click(1652,671)
for _ in range(2):
pyautogui.scroll(-1000)
rand_sleep()
# time.sleep(0.3) # 每滚轮一下间隔0.3秒
# 户籍地址点击三次
for i in range(3):
pyautogui.click(1404,473)
rand_sleep()
# 1. 复制指定文字到剪贴板
# print('写入姓名:',name)
pyperclip.copy(Registered_Address)
# 2. 模拟Ctrl+V粘贴
pyautogui.hotkey("ctrl", "v")
rand_sleep() # 延迟2秒切换窗口
# # 居住地址点击三次
# for i in range(3):
# pyautogui.click(1173,771)
# rand_sleep()
# # 1. 复制指定文字到剪贴板
# # print('写入姓名:',name)
# pyperclip.copy(Residential_Address)
# # 2. 模拟Ctrl+V粘贴
# pyautogui.hotkey("ctrl", "v")
# rand_sleep() # 延迟2秒切换窗口
# 下移到底部
for _ in range(1):
pyautogui.scroll(-1000)
rand_sleep()
# 确认,回到最初的界面
pyautogui.click(1027,857)
time.sleep(6) # 保存时间长一点
# 自动最大化VSCode
win.maximize()
print("VSCode已自动最大化,程序结束")

&spm=1001.2101.3001.5002&articleId=163829836&d=1&t=3&u=d6c895cde84b421aa42652d6c6cda5fc)
361

被折叠的 条评论
为什么被折叠?



