太贊了! 菜鳥利用Python實現(xiàn)網(wǎng)站自動簽到


前情提要
小五收藏了一些論壇網(wǎng)站,經(jīng)常需要自己登錄簽到,以此來獲得積分金幣等等。
步驟倒是并不復(fù)雜,只需要填寫賬號密碼登錄,然后點擊簽到即可。

但天天手動太容易忘了這件事啦。畢竟我們都會用python了,那就可以使用Selenium操作;瀏覽器實現(xiàn)自動簽到啊!
現(xiàn)在開始上手工作??
準(zhǔn)備工作
首先我們需要先安裝Selenium,從而實現(xiàn)后續(xù)自動化操控瀏覽器。我們可以利用它來模擬鼠標(biāo)按鍵,跟按鍵精靈很類似。
pip install selenium
待其安裝完成后,準(zhǔn)備另一個必需工具。
selenium可以操控多款瀏覽器,包括谷歌,火狐等,這里小五使用的是谷歌瀏覽器。
這里需要知道瀏覽器的版本信息,只需打開“關(guān)于Chrome”,就可以看到了。

如上圖所示,我的瀏覽器版本是89.0.4389.114。然后我們需要前往(http://chromedriver.storage.googleapis.com/index.html)找到與瀏覽器相匹配的版本,沒有一模一樣的選擇最近的版本也可以。

點擊進(jìn)去選擇對應(yīng)的系統(tǒng)版本,下載后將chromedriver.exe解壓出來,最后將其放到與python.exe文件相同的路徑下。
如果你是用的anaconda就放在下面目錄下
C:\Users\Administrator\anaconda3
具體位置如下圖所示??

下面我們就可以正式用python自動簽到了。
代碼及講解
首先打開我要登錄的網(wǎng)站,具體域名就不分享給大家了。
先導(dǎo)入selenium庫,這里只需使用selenium中的webdriver模塊,運行
from selenium import webdriver
打開下載的瀏覽器驅(qū)動,設(shè)置隱式等待時
wd=webdriver.Chrome()
wd.implicitly_wait(1)
??執(zhí)行代碼的時候會自行去尋找chromedriver.exe(在python目錄下尋找)。如果我們前面沒有把它放在固定的路徑下,就需要在這里指定chromedriver.exe路徑。
打開登錄網(wǎng)頁
wd.get('待登錄網(wǎng)站URL')

如上圖所示,模擬瀏覽器已經(jīng)打開了網(wǎng)站的登錄界面。這個時候我們需要定位到輸入框、密碼框以及登錄按鈕等。
這里不用擔(dān)心,Selenium提供了很多種定位DOM元素的方法,各有各的特點和優(yōu)勢。今天就主要使用 by_xpath() 這個方法來定位元素,這個方法比較靈活方便,大部分屬性都可以通過它來定位。
【檢查】→【進(jìn)入開發(fā)者模式】點擊左上角的圖標(biāo),再點擊你要找的對象,即可得到該對象的信息。點位該對象后,右鍵copy它的XPath!

input = wd.find_element_by_xpath('//*[@id="email"]')
input.send_keys('[email protected]')
同理,我們可以定位到密碼框,再send_keys輸入密碼
password = wd.find_element_by_xpath('//*[@id="password"]')
password.send_keys('kxpython')

至于需要點擊的對象,可以使用click()來實現(xiàn)模擬點擊的功能。
點擊登錄
button_login = wd.find_element_by_xpath('//*[@id="app"]/section/div/div/div/div[2]/form/div/div[5]/button')
button_login.click()
點擊跳過彈窗
一般登錄后會有個小彈窗,關(guān)閉即可。

wd.find_element_by_xpath('//*[@id="popup-ann-modal"]/div/div/div[3]/button').click()
嘗試簽到

try:
wd.find_element_by_xpath('//*[@id="checkin-div"]/a').click()
except:
print("已簽到")
最后要記得關(guān)閉瀏覽器窗口
wd.quit()
注:close()關(guān)閉當(dāng)前窗口,wd.quit()則是關(guān)閉所有窗口。
點擊運行上面的全部代碼,即可實現(xiàn)python對網(wǎng)站的自動簽到。我們還可以將該python腳本設(shè)置為定時任務(wù),這樣就不用每天手動去簽到啦!

小結(jié)
作為演示的這個網(wǎng)站非常簡單,如果大家也想用python來自動簽到的話,要根據(jù)自己的網(wǎng)站情況來改寫腳本。
其實 Selenium 更多的用法是自動化測試、爬蟲等,具體Selenium的詳細(xì)用法,可以參考文檔。
地址:http://selenium-python.readthedocs.org/
我們學(xué)習(xí)python時,可以嘗試用來解決自己的生活問題,這樣學(xué)得也更扎實,學(xué)得也更有趣味!
推薦閱讀:
入門: 最全的零基礎(chǔ)學(xué)Python的問題 | 零基礎(chǔ)學(xué)了8個月的Python | 實戰(zhàn)項目 |學(xué)Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機器學(xué)習(xí)做個迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會做詩的機器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機器學(xué)習(xí)做個迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!| 再見PDF提取收費! | 用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!|
年度爆款文案
點閱讀原文,看B站我的視頻!

