THU羽毛球场预约脚本

THU羽毛球场预约脚本

环境准备

  • python3

  • pip安装库

time, selenium, PIL, re, baidu-aip
  • Chrome浏览器

  • 下载Chrome驱动

在chrome浏览器的设置–关于Chrome中查询Chrome版本,在https://chromedriver.chromium.org/downloads中下载对应的驱动。
对于较新版本,可以在https://googlechromelabs.github.io/chrome-for-testing/中找,最好使用stable的。
下载驱动并解压后,将其复制到Chrome的安装目录(右击快捷方式,选择打开文件所在的目录,如下图中的chromedriver.exe)
在这里插入图片描述

  • 配置环境变量

打开环境变量,选择系统变量中的Path,点击编辑,新建,复制上述文件夹目录添加进去。我这里就是

C:\Program Files\Google\Chrome\Application\
  • 注册百度API

这里我们对验证码的识别是使用的百度手写字体识别的API,可以在百度智能云官网https://cloud.baidu.com/
申请。点击产品——识别——文字识别,选择手写文字识别,即可在应用列表创建应用。这里是有每天免费调用额度的。
创建应用后可以看到AppID、API Key、Secret Key,这里需要复制自己的并粘贴到Captcha_OCR.py的对应位置。

  • 新建端口

需要新建一个供Chrome浏览器打开和控制的端口。打开设置,隐私和安全性——Windows安全中心——防火墙和网络保护——高级设置,
在入站规则中新建规则,可以自行设置一个新的端口号。

代码修改

  • 自定义开抢时间

set_time = time.mktime(time.strptime("2023-08-25 15:21:00", "%Y-%m-%d %H:%M:%S"))
wait_until(browser, set_time)

main.py修改开抢的日期和时间。

  • 修改端口号

将上述开通的端口号,复制到main.py

chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:2028")

注意这里ip地址不用修改。

  • 自定义抢场地的类型、日期、时间等

这里需要手动选择是哪个体育场,如选择气膜馆,接下来
脚本按按钮的顺序是,先点击类型(乒乓球/羽毛球),再点击日期,再点击时间和场地号,
最后点击提交。如果想要自行改变预约的运动场类型、时间段、场地,需要手动查询网页中
对应的XPATH并粘贴到代码中。

例如如果将场地类型改为紫荆网球场,则在网页中右击紫荆网球场对应的位置,
点击“检查”,在弹出的网页源码中高亮的部分右击,选择copy–copy full Xpath,
粘贴到main.py

type_xpath = '/html/body/div[2]/div/div[2]/div[1]/div/div/div[3]/ul/li[3]/a'

对应的部分。修改日期也是同理。

修改时间和场地号稍微麻烦一点,需要修改两处。在想要选择的时间框右击,点击
检查进入网页源码后,还是copy full Xpath,粘贴到main.py

time_xpath = '/html/body/table/tbody/tr[10]/td[1]'

但这里还需要复制iframe的Xpath,方法是沿着时间对应的高亮源码往上找,
找到对应的iframe右击复制,粘贴到main.py

time_iframe_xpath = '/html/body/div[2]/div/div[2]/div[1]/div/div/div[5]/iframe'
  • 修改截图坐标

这里对验证码的识别是在屏幕中固定位置截图并识别,因此对于不同尺寸的屏幕,位置也不同。
默认的是13.6寸屏幕的位置,对于其他屏幕,运行代码后会得到captcha.png,需要调整Captcha_OCR.py中截图位置的语句

bbox = (830, 600, 950, 665)
im = ImageGrab.grab(bbox)

修改对应坐标点,保证得到的captcha.png是验证码图片。

运行代码

1、在cmd中输入

chrome.exe --remote-debugging-port=2028 --user-data-dir="D:\selenum\AutomationProfile"

其中端口号为自己开通的端口号。于是可以打开一个新的Chrome界面。
在这个界面登录info并打开预约界面后,关闭其他所有界面。

2、在main.py中点击运行,运行后切换到Chrome界面并全屏。
若未到时间会不断刷新,到点后会开始自动点击选择并提交,直至出现
选择付款界面,这时已经锁定场地。

需要注意的是,这里验证码的识别成功率并不高,因此可能会出现多次刷新重复尝试的现象,
这属于正常。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值