?明明365天都不得不待在家里面,居然還要天天去騰訊文檔打卡,煩死人了。
天天都填一樣的內(nèi)容,重復(fù)無意義的事情,時(shí)間就是金錢,浪費(fèi)人時(shí)間約等于謀財(cái)害命呀。
所以參考了網(wǎng)絡(luò)上的代碼,并做了改進(jìn),用python寫了個(gè)腳本,可以每天定時(shí)自動(dòng)在騰訊文檔上打卡,且不需要填寫的位置原本有數(shù)據(jù)。
(本文摘自自己的私人公眾號(hào),水印什么的就無視8)
【教學(xué)開始】
首先,我們需要到官網(wǎng)下載一個(gè)pycharm,下載社區(qū)版本就行。
鏈接:https://www.jetbrains.com/pycharm/download/#section=windows
然后再去python的官網(wǎng)
鏈接:https://www.python.org/downloads/release/python-383/
下載python的最新版本,配置好環(huán)境變量(配置環(huán)境變量這種常識(shí)應(yīng)該無須贅述了8),環(huán)境變量的地址就copy一下你的Python安裝在的目錄就行。
注意:我紅框圈起了兩個(gè),這兩個(gè)都要添加,不然待會(huì)無法使用pip安裝所需要的插件。
安裝玩這兩玩意后,打開控制臺(tái),輸入【python】和【pip】驗(yàn)證一下安裝是否成功,環(huán)境變量配置是否順利。如果如下圖所示,那就是成功了。
成功后,我們打開命令行,輸入pip install selenium
以及:pip install openpyxl
(因?yàn)槲乙呀?jīng)安裝過了所以會(huì)有點(diǎn)不一樣,你們安裝是會(huì)有進(jìn)度條的)
【重點(diǎn)】然后,我們還需要下載個(gè)chromedriver,最好下載最新版本的8.3。
如果運(yùn)行中還是出錯(cuò),就去谷歌瀏覽器設(shè)置那里,左邊的關(guān)于chrome看你的瀏覽器的版本是什么,如果不是最新版本會(huì)自動(dòng)更新的。
鏈接:https://npm.taobao.org/mirrors/chromedriver/
【下載完畢之后,將chormedriver放到python根目錄下】
至此,所有的準(zhǔn)備工作都完成了。
成功以后我們就打開pycharm,新建一個(gè)項(xiàng)目。
在左邊的導(dǎo)航欄里面新建一個(gè)Python文件。
接下來就是代碼了,主要思路就是通過模擬回車鍵enter和tab鍵實(shí)現(xiàn)表格行列移動(dòng):
import time
import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
#先獲得時(shí)間
today_time=str(datetime.datetime.now().year)+"/"+str(datetime.datetime.now().month)+"/"+str(datetime.datetime.now().day)
?
#接下來寫腳本自動(dòng)登錄網(wǎng)頁
?
driver = webdriver.Chrome()
driver.get("")#將健康表的地址copy過來就行。
time.sleep(1)
driver.find_element_by_class_name('unlogin-container').click()#點(diǎn)擊登入按鈕
time.sleep(1)
driver.switch_to.frame(driver.find_element_by_id('login_frame'))
driver.find_element_by_class_name('img_out_focus').click()
#登入賬號(hào),用快速登入的功能,前提,已經(jīng)電腦qq登入了
driver.switch_to.parent_frame()
time.sleep(2)
driver.find_element_by_xpath('//*[@id="canvasContainer"]/div[1]/div[2]').click()
time.sleep(0.5)
#下面是模擬按下ctrl+f,打開搜索框,找到當(dāng)前你想填寫的列。我這里是找到對(duì)應(yīng)的年月日,在相應(yīng)的年月日下填寫當(dāng)天的信息。
ActionChains(driver).key_down(Keys.CONTROL).key_down('f').perform()
time.sleep(2)
#下面的send_keys就是輸入當(dāng)天日期,因?yàn)椴恢罏槭裁聪旅娴拇a一次沒有用,所以重復(fù)了兩次。
driver.find_element_by_id('search-panel-input').send_keys(str(today_time))
time.sleep(2)
driver.find_element_by_id('search-panel-input').send_keys(str(today_time))
time.sleep(2)
#搜索到之后關(guān)閉搜索框
driver.find_element_by_class_name('dui-button').click()
time.sleep(1)
####################################################################################
#對(duì)以下地方進(jìn)行修改
for i in range(0, 21):#這里的循環(huán)的次數(shù),修改為自己的信息所在的行號(hào)。
#如果無效,可以將其改為driver.find_element_by_id('alloy-simple-text-editor').send_keys(Keys.ENTER)
ActionChains(driver).key_down(Keys.ENTER).perform()
?
#以下的的信息填寫為自己的信息即可,你有多少列信息,就重復(fù)多少次,最后Keys.ENRER收尾。
driver.find_element_by_id('alloy-simple-text-editor').click()
driver.find_element_by_id('alloy-simple-text-editor').send_keys("你的信息一")
ActionChains(driver).key_down(Keys.TAB).perform()
driver.find_element_by_id('alloy-simple-text-editor').click()
driver.find_element_by_id('alloy-simple-text-editor').send_keys("你的信息二")
ActionChains(driver).key_down(Keys.TAB).perform()
driver.find_element_by_id('alloy-simple-text-editor').click()
driver.find_element_by_id('alloy-simple-text-editor').send_keys("你的信息三")
#。。。。。。。。。。。。。。。。。。
driver.find_element_by_id('alloy-simple-text-editor').send_keys(Keys.ENTER)
time.sleep(1)
如果對(duì)自己的電腦沒有自信,中間的time.sleep()里面的參數(shù)可以改大一點(diǎn),因?yàn)閟elenium常常會(huì)因?yàn)殡娔X網(wǎng)速或者硬件不行,而在頁面還沒加載出來就進(jìn)行下一步,會(huì)容易出錯(cuò)。我建議每一條語句里面都sleep10秒。
可能會(huì)有人出現(xiàn)搜索后enter和tab無效的情況,我同學(xué)用了我的代碼后發(fā)現(xiàn)動(dòng)不了,最后發(fā)現(xiàn)是chormedriver放錯(cuò)位置導(dǎo)致ActionChains無效,每個(gè)人都可以遇見不同的坑,到時(shí)就全憑毅力了。
記得電腦掛著qq,否則自動(dòng)快捷登錄無效。
改完后嘗試性的運(yùn)行一下,瀏覽器會(huì)自動(dòng)打開,自動(dòng)登錄騰訊文檔,然后自動(dòng)修改表格,你就盯著看有沒有改對(duì)地方,如果不小心把別人的給改了記得改回去。
如果以上全部都沒有問題,就可以進(jìn)行最后一步了。
電腦搜索管理工具,打開。
點(diǎn)擊“任務(wù)計(jì)劃程序”。
建立基本工作。
這里隨意。
選擇每天,然后選擇自己想要運(yùn)行的時(shí)間。
選擇啟動(dòng)程序后,選擇自己剛剛的python文件所在的位置,完成。
如果到點(diǎn)運(yùn)行后命令行報(bào)錯(cuò),那就要檢查一下是不是網(wǎng)絡(luò)不行或者硬件不行,而sleep又太短導(dǎo)致selenium出錯(cuò)了。