如何不用Selenium实现Python自动勾选网页对应编号复选框
实现方案
你可以使用pyautogui+pyperclip组合,通过调用浏览器控制台执行JS代码完成勾选,完全不需要Selenium,不会触发网站的反爬检测,操作的是你本地正常打开的浏览器窗口。
前置依赖安装
执行以下命令安装需要的库:
pip install pyautogui pyperclip
可用代码
import pyautogui import pyperclip import time def click_checkbox_by_number(target_num: int): # 预留5秒时间切换到浏览器窗口,请提前打开目标网页并激活窗口 time.sleep(5) # 打开浏览器控制台,Chrome/Edge默认快捷键为F12,Firefox可改为Ctrl+Shift+K pyautogui.press('f12') time.sleep(1) # 呼出控制台输入区域,Chrome/Edge可通过ESC或Ctrl+`实现,不生效可手动调整快捷键 pyautogui.hotkey('ctrl', '`') time.sleep(0.5) # 匹配页面结构的JS执行逻辑 js_code = f""" // 定位对应编号的文本标签 const runnerSpan = Array.from(document.querySelectorAll('span.size14_f7opyze.Endeavour_fhudrb0.medium_f1wf24vo')).find(span => span.textContent.trim().startsWith('{target_num}.')); if (runnerSpan) {{ // 向上查找公共父容器 const container = runnerSpan.closest('.outcomeDetailsContainer_f13tqi60'); // 定位对应复选框并点击 const checkbox = container.querySelector('i[data-automation-id="correctIsolated"]'); checkbox && checkbox.click(); }} """ # 复制JS代码到剪贴板 pyperclip.copy(js_code) time.sleep(0.3) # 粘贴代码到控制台并执行 pyautogui.hotkey('ctrl', 'v') time.sleep(0.3) pyautogui.press('enter') time.sleep(0.5) # 关闭控制台 pyautogui.press('f12') if __name__ == '__main__': # 读取剪贴板中你从Excel复制的编号 target_number = int(pyperclip.paste().strip()) click_checkbox_by_number(target_number)
使用说明
- 先手动打开目标网站,正常完成登录操作
- 运行你已有的Autogui代码从Excel复制需要勾选的编号
- 运行上述代码,5秒内切换到浏览器的目标页面,等待自动执行即可
- 若快捷键不匹配你的浏览器,可自行修改代码中对应快捷键参数
内容的提问来源于stack exchange,提问作者GDog
相关产品推荐
相关产品推荐

