网站表单自动填写【使用pyautogui 】

最近总是要填问卷星问题多达30个,每天一次非常麻烦,于是打算写个脚本自动完成。
本来想用python的selenium配合可开发的火狐浏览器驱动实现(毕竟网上大家都是这么做的)。可是由于以下几个问题让我取消了这个念头:

  1. 【主要原因】不知道网怎么了就是打不开github下载不了驱动。
  2. 本质上还需要对网页布局和js进行针对性的分析,感觉还是写个js脚本,然后复制到 浏览器的console中运行算了。

就这样我先用 js 写出自动填写脚本,然后交给浏览器运行。之后还是想体验一下自动化过程,于是想到如果能控制鼠标,进行鼠标键盘操作就可以了,这样pyautogui就出现在我的视野中,其对鼠标位置的定位是通过屏幕图片搜索的,这个很让我吃惊(以前搞过通过程序控件的id确定位置)。

那就分章节简单介绍

js 脚本

需要根据网页自行分析,有时还需要分析js脚本。通过火狐或者谷歌浏览器。

给个示例

function getById(idnm){ return document.getElementById(idnm) }
function getCurrentDate() {
    var now = new Date();
    var year = now.getFullYear(); //得到年份
    var month = now.getMonth();//得到月份
    var date = now.getDate();//得到日期
    month = month + 1;
    if (month < 10) month = "0" + month;
    if (date < 10) date = "0" + date;
    return year + "-" + month + "-" + date;
}

getById("q1").value="xx"
getById("q2_1").parentNode.click()
getById("q6").value="xxx"
getById("q7").value=getCurrentDate()

getById("ctlNext").click()

半自动填写

就是用谷歌, ctrl+shift+j 把代码贴上回车就完成。
火狐是 ctrl+shift+k

使用pyautogui 全自动填写

自己把上面的过程走一次,这样就可以针对性的写程序。用到鼠标定位的部分,就自己提前截好图片。

下面的脚本运行过程包括。打开火狐浏览器找到输入网址的地方,输入网址(主要不要用那个什么typewrite),回车,等待网页加载结束, ctrl+shift+k 打开console,代码复制里面,回车。

其中用了三张图片。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这三个图片的作用分别为:

  1. 确定地址框的位置
  2. 确定console的位置
  3. 确定目标网页是否加载完成

使用的顺序是 1->3->2

import time
def p(*info): print(*info)
import os

url="https://www.wjx.top/m/xxxx.aspx"
os.system(r'"C:\Program Files\Mozilla Firefox\firefox.exe"')
time.sleep(1)
while True:
    cposition = pyautogui.locateOnScreen('pics/ff1.png')
    if cposition: break
    time.sleep(0.5)

cc = pyautogui.center(cposition)
_bias=cposition.width
pyautogui.moveTo(cc[0]+_bias,cc[1]) 
pyautogui.click(clicks=1) # 点一下
set_text( url )
pyautogui.hotkey("Ctrl","v")
pyautogui.keyDown('Enter')

time.sleep(2)
while True:
    cposition = pyautogui.locateOnScreen('pics/ff3.png')
    if cposition: break
    time.sleep(0.5)
    
cc = pyautogui.center(cposition)
pyautogui.moveTo(cc[0],cc[1])  
pyautogui.click(clicks=1)
pyautogui.hotkey("Ctrl","Shift","k")

time.sleep(1)
while True:
    cposition = pyautogui.locateOnScreen('pics/ff2.png')
    if cposition: break
    time.sleep(0.5)

with open("casia.js", encoding='UTF-8') as fp:
    #code=fp.readlines()
    code=fp.read()

set_text( code )
pyautogui.hotkey("Ctrl","v")
#pyautogui.click(clicks=1)

pyautogui.keyDown('Enter')

里面用到一个剪贴板复制的函数

import win32con
import win32clipboard

def set_text(string):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, string)
    win32clipboard.CloseClipboard()

总结

这种思路下,其实很多软件都可以自动执行了。以前真没有想到可以借助图片来辅助定位。当然图片一定要选择有特点的,否则会出现检测不到的情况。另外还要注意延时等待。

图片匹配的算法如果自己写的话可以参考 这里

一个自动填写网页表单并提交的工具软件,可同时监控提交后内容并报警提示。自动填写表单内容,可以从文件读取内容并自动填写网页,支持验证码自动填写填写完毕后自动提交。适合批量提交网页。定时提交可实现在无人值守时自动填表并提交网页。完全模拟手工操作,展示实时页面及整个提交过程。程序可后台运行,完全不影响键盘鼠标操作。 程序广泛用于网站自动登录,自动注册用户,批量查询并保存信息,批量数据录入等网页自动填写操作。 1、支持各种文本框、列表框、选择框填写,多任务多操作连续提交,实现无人值守。 2、自动填写表单项,填写内容可以是固定值、也可以从文件中读取的内容。 3、支持图片验证码识别,对接远程打码模块,支持验证码快速自动识别输入 4、支持手机验证码自动输入,对接手机验证码平台 5、支持按钮提交、表单提交以及自定义脚本等多种提交方式交。 6、支持网页任意脚本删除、替换、注入、执行等。 7、提交时显示实时速度,自动统计提交效果与流量。 8、支持代理服务器,换IP提交。可导入大量免费代理服务器,可随机使用或环使用代理服务器,自动对代理服务器使用情况进行统计管理。 9、支持ADSL自动重拔号更换IP。 10、支持验证码手工快速录入,支持验证码云识别自动输入。 11、网页内容变化监控,包括脚本执行产生的变化。 12、网页内容关键字监控,同时监控多个关键字。 13、网页HTML元素级监控,同时监控多个元素,进行数据比较。 14、网络故障监控,本地网络故障时报警。 15、提交失败监控,网站服务器出现问题,或网页打不开时报警。 16、监控报警处置方式:弹出提示对话框;声音提示;任务中止;启动新任务;启动外部处置程序;保存当前页面;程序关闭;自动关机。 WINXP,WIN2003用户安装必须安装补丁Microsoft .NET Framework 2.0 Service Pack 2 注意是SP2补丁. 声明:本软件不得用于非法用途,非法使用本软件与软件作者无关.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值