針對(duì)公司考勤管理系統(tǒng)實(shí)現(xiàn)的自動(dòng)簽到腳本店读,實(shí)現(xiàn)很簡(jiǎn)陋乓旗,將就著用吧禽最。至少請(qǐng)假再也不用調(diào)休了:)
為什么選擇python
極簡(jiǎn)主義,簡(jiǎn)單就是最好的毛嫉。
開發(fā)環(huán)境搭建
- 安裝python,在官網(wǎng)下載對(duì)應(yīng)版本(https://www.python.org/)
這里選擇python2.7版本妇菱,也可以是python3.5 - 安裝requests模塊
目前最新版本的python都集成了pip工具承粤,用pip工具安裝非常方便。進(jìn)入python安裝目錄下的scripts目錄闯团,pip工具在此目錄下辛臊,運(yùn)行命令行執(zhí)行
pip install requests
當(dāng)然也可以使用python原生工具集urllib,urllib2房交。同樣是處理http請(qǐng)求彻舰,只是requests更好用一些。
具體實(shí)現(xiàn)
工具目的主要是充當(dāng)http客戶端候味,模擬登錄簽到和簽出流程
-
登錄
利用requests模塊的post方法刃唤,在此之前我們需要分析考勤網(wǎng)站登錄網(wǎng)頁(yè)的html,抽取需要的參數(shù)數(shù)據(jù)白群,具體方法如下:
1.在google瀏覽器打開考勤系統(tǒng)網(wǎng)址尚胞,按F12并刷新網(wǎng)頁(yè),選擇network帜慢,在name列表框選擇第一項(xiàng)的url笼裳,右邊點(diǎn)擊headers子選項(xiàng)。Request以及Reponse信息都可以查看到
2.我們所需要的是Request Headers以及Form Data字段信息粱玲,簡(jiǎn)單粗暴全部照著拷貝了躬柬。
post方法代碼如下:
def postLogin(session):
headers={
'Host':host,
'Origin':origin,
'Referer':referer,
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}
formData={}
formData['username'] = username
formData['password'] = password
session.post(loginUrl, data=formData,headers=headers,)
- 簽到和簽出
這里所謂的簽到和簽出也都是調(diào)用post方法發(fā)送Http請(qǐng)求,重點(diǎn)在于對(duì)目標(biāo)網(wǎng)址的報(bào)文解析抽减,具體參考登錄過(guò)程中的google瀏覽器debug方法允青。簽到與簽出唯一不一樣的就是請(qǐng)求的url地址不同。
def postSave(session, url):
return session.post(url)
checkin_resp = postSave(s, url)
print checkin_resp
checkout_resp = postSave(s, url)
print checkout_resp
這里防止多次簽到和簽出是通過(guò)時(shí)間來(lái)區(qū)分的
工具打包和使用
- 利用PyInstaller簡(jiǎn)單的編譯exe
安裝PyInstaller:
pip install pyinstaller
國(guó)內(nèi)網(wǎng)絡(luò)比較慢胯甩,因?yàn)檫@種方式最直接簡(jiǎn)單昧廷。如果安裝過(guò)程中報(bào)錯(cuò)堪嫂,就是網(wǎng)絡(luò)斷連,重新執(zhí)行命令木柬。
打包命令也很簡(jiǎn)單:
pyinstaller -F D:/workspace/python/om/om.py
- 工具的使用
在windows系統(tǒng)下利用任務(wù)計(jì)劃程序設(shè)置定時(shí)任務(wù)皆串,工具需要傳遞兩個(gè)參數(shù),用戶名和密碼眉枕。按照簽到簽出的時(shí)間設(shè)置兩個(gè)任務(wù)恶复,每天定時(shí)執(zhí)行,具體設(shè)置定時(shí)任務(wù)的方法不在這里說(shuō)明速挑,具體操作步驟參照百度說(shuō)明谤牡。