为了不再被点名,我竟干了这事……

这个悲催的故事,得从那一个月明星稀的晚上说起。

2月27号晚上八点多,写了一天爬虫代码的我,拿起手机开始摸鱼,打开微信,收到了我们尊敬的男班长的几条信息(之后的那天也收到了几条,原因:忘记了新学期开学线上注册,在此对两位班长的尽职表示跪谢),然后再看了一下年级通知群,嗯,被全级公开点名了。

实话实说,我个人是很讨厌这种简单重复性无意义工作的,现在支付宝和微信都已经有健康码了,学校接入一下平台不就可以了吗?但考虑老师们也是按学校要求办事的,也够辛苦和折腾了,所以我决定洗心革面,按要求按时填写,不给老师和班长增添不必要的麻烦。

这个自动填写问卷的程序是用python+selenium写的,用selenium的目的主要是开发速度快,可见即可得,分析网页和敲代码前后也就大概用不到20分钟。需要下载安装selenium模块和下载webdriver配合google chrome浏览器使用。因为每个人的问卷都不一样,但原理相同,自行修改代码即可。

from selenium.webdriver.support.select import Select
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

#问卷地址,自行替换
url = "https://www.wjx.cn/m/xxxx.aspx"

#引入chrome驱动文件
#driver_path为chromedriver的路径,自行替换
driver_path = r"E:\PythonProject\chromedriver.exe"
driver = Chrome(executable_path=driver_path)
#如果不想显示窗口的,使用以下设置
# chromeOptions = ChromeOptions()
# chromeOptions.add_argument('headless')
# chromeOptions.add_argument('window-size=1200x600')
# driver = Chrome(executable_path=driver_path, options=chromeOptions)
driver.get(url)	#打开网页
print("打开问卷网页--Completed!")

#姓名输入
name = driver.find_element_by_xpath('//*[@id="q1"]')
name.send_keys("XXX")
print('填写姓名--Completed!')

#班级选择
class2 = driver.find_element_by_xpath('//*[@id="div2"]/div[2]/div[6]/span/a')
class2.click()
print('选择班级--Completed!')

#所在地选择
#这里注意下,html分析的时候这个弹出的窗口是使用了iframe的,需要跳到iframe填写的
#http://www.wjx.cn/joinnew/setcitymobo2.aspx?activityid=xxxxx&ct=1&pos=3
local = driver.find_element_by_xpath('//*[@id="q3"]') #打开所在地隐形的选择框对象
local.click()
driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="yz_popwinIframe"]'))
provice = driver.find_element_by_xpath('//*[@id="province"]')
Select(provice).select_by_value('广东')
city = driver.find_element_by_xpath('//*[@id="city"]')
Select(city).select_by_value('佛山')
btn = driver.find_element_by_xpath('/html/body/div/div[3]/a')
btn.click()
print('选择所在地--Completed!')
print('提交--Completed!')

#是否待在原地
stayloc = driver.find_element_by_xpath('//*[@id="div4"]/div[2]/div[1]/span/a')
stayloc.click()
print('选择待在原地--Completed!')

#个人身体健康状况
is_healthy = driver.find_element_by_xpath('//*[@id="div5"]/div[2]/div[1]/span/a')
is_healthy.click()
print('选择个人健康状况--Completed!')

#常规性填个无
wu = driver.find_element_by_xpath('//*[@id="q6"]')
wu.send_keys('无')
print('填写无--Completed!')

#Last but not least,点击确认提交,大功告成
btn2 = driver.find_element_by_xpath('//*[@id="ctlNext"]')
btn2.click()

driver.quit() #退出浏览器,程序运行结束

运行一下,大概1秒就能把问卷填写完毕。

填写效果如图

最后,就放上装了Windows系统的服务器上,使用crontab设置一个定时任务,每天早上固定时间运行一次就可以了!

当然,这也不是万全之策,还是有风险的,万一服务器在那个时间点崩了呢?

所以,为了不再被点名,还是老老实实……

买个好点的服务器。

恰饭链接:

【阿里云】首购阿里云服务器/测试/搭应用/国内地域服务器精选 ¥89

【自营】阿里云云服务器突发性能实例(t5)入门型轻量级上云 ¥593.40
【自营】阿里云服务器ECS共享型N4/通用版本/华北2华东12华南1 ¥726
Share

You may also like...