偷懒激发人改变,回家后自己的行程基本是不变的,不太想每天去点一点点一点自己的移动校园,有时候也会忘记,所以自己在CSDN上找了找大佬们有没有做过类似的尝试,果不其然,这种念头太常见了,课参考的代码也很完整很易懂,虽然瞧不起自己的拿来主义,参考尝试之后,确实好用啊。代码参考博主CookiePie的文章Python—利用Requests实现每日微信自动打卡,我只是代码的搬运工以及实现目的的更完整步骤提供者,主要是为了学习,实现2021年“100次代码助攻”小目标。
(1) 官网安装
Fiddler软件安装官网
(2) 按步骤配置
配置:打开Fiddler文件夹,点击Fiddler.exe运行fiddler进行配置
点击Tools–options
视情况而定,由于我用的是Pycharm,所以直接参考博主HW140701的Python配置Selenium+Chrome环境和Selenium+PhantomJS环境还是比较方便的。
我本以为一劳永逸,后续代码中用driver = webdriver.Chrome()
就行,可能是因为我的Chrome浏览器版本问题,在代码中和原博主Python—利用Requests实现每日微信自动打卡一样设置会报错,所以我又尝试在代码中重新配置下载的Phantomjs的地址,就没有报错了,这是受上一次做的小代码的启发,同时也感谢博主HW140701的Python配置Selenium+Chrome环境和Selenium+PhantomJS环境的提示。其中,第5点说明了无界面的浏览器包PhantomJS的应用。
(1)首先在官网下载地址
PhantomJS官网下载
(2)安装配置
安装PhantomJS后,将exe文件复制到python安装路径或者C:windows下,只要是系统的环境path目录都行,Pycharm就比较容易直接在setting-interpreter中添加package就行。然后把driver=webdriver.Chrome()
改成driver=webdriver.PhantomJS(r'D:\crewl\venv\Scripts\phantomjs-2.1.1-windows\bin\phantomjs.exe')
输入自己的安装路径即可。
但是…最开始尝试可能还是会遇到问题,查资料之后发现是selenium需要旧版本才能够和phantomjs一起用,具体原因我还不知道,所以我把selenium的版本修改为了selenium2.48.0版本,亲测可以。
以下核心代码主要是参考了原博主的,我用了自己学校的网站跟着博主的思路将过程看了个遍,确实是异曲同工,基本如出一辙,主要需要重新梳理的点就只有三个地方(拿来主义可耻,努力学明白):
import requests
from selenium import webdriver
from time import sleep
def get_cookie(url_, user_):
driver = webdriver.PhantomJS(r'D:\crewl\venv\Scripts\phantomjs-2.1.1-windows\bin\phantomjs.exe') ##添加自己的安装路径
driver.get(url_)
driver.find_element_by_xpath('//*[@id="username"]').send_keys(user_['name'])
driver.find_element_by_xpath('//*[@id="password"]').send_keys(user_['password'])
driver.find_element_by_xpath('//*[@id="casLoginForm"]/p[4]/button').click()
sleep(2)
cookie_ = driver.get_cookies()[0]
driver.quit()
return cookie_['name'] + '=' + cookie_['value']
user = {
'name': '账号', 'password': '密码'} ##输入自己的账号密码
cookie = get_cookie(
'https://authserver.XXX.edu.cn/authserver/login?service=http://XXXX.XXX.info/jinzhi/index.php', user) ##网页打卡入口
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Cookie': cookie
}
data = {
'mymethod': 'POST',
'myurl': 'https://10.9.249.17/api/v1/ncp/student/daka/update',
'id': '',
't1': '否',
't2': '',
't3': '否',
'stsfyc': '否',
'stsfycxq': '',
'dqszdpro': '{"code":"","name":""}',
'dqszdcity': '{"code":"","name":""}',
'dqszdreg': '{"code":"","name":""}',
'sfdgyq': '否',
'dgyqqt': '[]'
} ##更新自己的数据信息,包括myurl,id,t1,t2,t3,stsfyc,stsftcxq,code,name等
url = 'http://XXXXX.XXXXX.info/jinzhi/jump.php' ##提交信息时候的php
s = requests.session()
response = s.post(url=url, headers=headers, data=data)
html = response.text
print(html)
最后如何打卡成果就不会出现"resultCode":40001之类的错误,而是和会返回{“resultCode”:0,“resultMessage”:"",“data”:{“message”:"\u66f4\u65b0\u6210\u529f"}}。不出意外,通过代码实现打卡的步骤就如上,但是这貌似并没有实现自动打卡, 只是换个方式打卡,那如何设置的更自动呢?目前只是尝试了一个笨方法,还是没有全自动,不好意思。
过程设置非常简单,方法就是通过win10的“任务计划程序”实现Pycharm的定时自动启动程序。
过程如下:
创建基本任务——>按步骤设置——>程序或脚本设置为Pycharm应用程序的安装路径,参数为此次所写的.py代码存储路径——>完成,即可。这样可以在PC端实现定时运行程序了,算是节省了一点时间(我差这一点时间?就是想学点新东西而已,让生活模式改变一点点。)
以上,感谢CSDN各大博主的经验、成熟的代码以及详细的解释。
参考博文:
[1] https://blog.csdn.net/CookiePie/article/details/109698484
[2] https://blog.csdn.net/qq_44574333/article/details/108427545
[3] https://blog.csdn.net/HW140701/article/details/59109649?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161140090116780261940479%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161140090116780261940479&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-59109649.first_rank_v2_pc_rank_v29&utm_term=pycharm%20webdriver.PhantomJS&spm=1018.2226.3001.4187