编程语言
首页 > 编程语言> > Python问某星自动抢讲座

Python问某星自动抢讲座

作者:互联网

背景:
学院讲座可以加期末综测分,而综测分关系奖学金评比,所以每场讲座火爆。为了限制听讲人数,学院开始更换讲座报名预约形式:定时发放问卷星,截取最先提交的几十名或者一百名为成功报名的人。
使用python+selenium即可实现,但后面发现问某星会检测selenium并需要滑块验证,解决方法为屏蔽检测;寻找滑块元素自动点击。

from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome import options

#1.创建Chrome浏览器对象,并设置参数,屏蔽selenum检测。这会在电脑上在打开一个浏览器窗口
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options = options, executable_path = "/usr/bin/chromedriver") 
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
# 2.通过浏览器向服务器发送URL请求
url = "https://www.wjx.top/m/101322307.aspx"
driver.get(url)

# 3.设置浏览器的大小
driver.set_window_size(1400,690)

#4.找寻元素 方法1.用ID找
que1 = driver.find_element_by_id('q1').send_keys('name')
que2 = driver.find_element_by_id('q2').send_keys('student number')
que3 = driver.find_element_by_id('q3').send_keys('college')
submit = driver.find_element_by_id('ctlNext').click()

#5.滑块验证
sleep(0.5)
alter1 = driver.find_element_by_xpath("//button[@οnclick='closeAlert();']").click()
sleep(0.5)
alter2 = driver.find_element_by_id('rectBottom').click()
sleep(0.5)
submit = driver.find_element_by_id('ctlNext').click()

#6.截图
sleep(5)
driver.get_screenshot_as_file("/Users/feng/Downloads/Python3_cache/wjxtest.png")

sleep(0.5)

#关闭流浏览器
driver.close()
driver.quit()

标签:Python,driver,某星,element,讲座,sleep,id,options,find
来源: https://blog.csdn.net/weixin_53051920/article/details/115078683