前言
研究生期间第一次没有抢到讲座,需求是第一次生产力,于是写了一个脚本,就可以轻松的抢讲座啦~
环境配置
- 编辑器:有一个vscode或者pycharm等等都可;
- 配置环境,安装 selenium 包;
- 浏览器:安装一个谷歌浏览器;
- 然后接下来需要安装Chrome 驱动文件,进入到谷歌浏览器驱动的下载网址 http://npm.taobao.org/mirrors/chromedriver/找到对应版本的驱动文件;
- 将驱动文件解压,将chromedriver.exe复制到和python安装目录下与python.exe相同的文件夹中;
- 下一步根据问卷内容修改适合自己的代码就可以愉快地抢讲座啦~
代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
if __name__ == '__main__':
option = webdriver.ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option('useAutomationExtension', False)
browser = webdriver.Chrome(options=option)
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
while True:
url='https://www.wjx.cn/vj/rlbhz46.aspx' #问卷地址
time_now=time.strftime("%H:%M:%S", time.localtime())
if time_now=="13:47:01": #自行修改时间
browser.get(url)
#问卷相关问题(根据问卷内容进行调整)
#1.姓名(填空题)
text1 = 'XXX' #名称
browser.find_element_by_id("q1").send_keys(text1)
#2.学号(填空题)
text2 = 'XXXXXXXXX' #学号
browser.find_element_by_id("q2").send_keys(text2)
#此处为下一页
next='btnNext'
browser.find_element_by_id(next).click()
#3.班级(选择题)
js ='document.getElementById("q3_1").click()' # q3_1 为学硕1 q3_2 为学硕2 q3_3为专硕1 q3_4为专硕2
browser.execute_script(js)
# 模拟点击提交按钮
browser.find_element_by_xpath("//input[@value='提交']").click()
time.sleep(0.5)
# 模拟点击智能验证按钮
# 先点确认
browser.find_element_by_xpath("//button[text()='确认']").click()
# 再点智能验证提示框,进行智能验证
browser.find_element_by_xpath("//div[@id='captcha']").click()
print('去听讲座吧!')
参考
跳过只能验证这一步一开始一直没有解决,参考了Python selenium自动化刷问卷+绕过智能验证