利用Python實(shí)現(xiàn)簡單的網(wǎng)站模擬登錄 !爬蟲必會技能!
時間:2023-06-25 03:39:01 | 來源:網(wǎng)站運(yùn)營
時間:2023-06-25 03:39:01 來源:網(wǎng)站運(yùn)營
利用Python實(shí)現(xiàn)簡單的網(wǎng)站模擬登錄 !爬蟲必會技能?。? 本文主要利用Python的requests庫中的Session方法,保留登錄過的cookie,用于登錄之后的頁面。那下面一起來看一下具體怎么做吧。
01準(zhǔn)備工具 語言: Python(本文用的是3.6版本,建議使用Anaconda安裝)
編譯器:jupyter notebook(任一Python編譯工具)
Python庫:execjs,requests
瀏覽器:chrome
02分析頁面
我們先打開強(qiáng)智科技的頁面,輸好賬號密碼之后,按“F12”打開控制臺并選中網(wǎng)絡(luò)資源項(xiàng)(network)。注意要勾選preserve log(保留記錄)這個選項(xiàng),不然后面會找不到那個登錄請求。做好這些準(zhǔn)備工作后,我們按登錄。
之后會跳轉(zhuǎn)頁面,而且你會發(fā)現(xiàn)控制臺里出現(xiàn)了很多的信息。如下圖。
我們找到LoginToXk這個響應(yīng),然后點(diǎn)擊打開,我們可以很清楚的看到請求的信息(本文只是簡單的講解,對于那些網(wǎng)絡(luò)知識,請讀者回去仔細(xì)學(xué)習(xí))
然后要記下圖中所標(biāo)記的網(wǎng)站。第一個網(wǎng)站是我們發(fā)起請求的那個頁面,我們可以利用request的post方法,直接向其傳送表單信息和請求頭來達(dá)到登錄的效果,并保留下cookie。為此我們需要構(gòu)建請求頭和表單信息。
03構(gòu)建請求頭和表單信息
還是在Login那里,我們用鼠標(biāo)滾下去一些就可以找到剛才登錄的請求頭(request header)信息和提交的表單信息(form data)。如下圖。
我們可以看到,請求頭是鍵值對的形式,所以我們之后可以把這些信息復(fù)制下來,然后構(gòu)建成一個Python字典。
我們接著往下看,我們會發(fā)現(xiàn)表單信息并不是我們提交的密碼和賬號信息,而是一個encoded的編碼。
經(jīng)過分析頁面響應(yīng)里的js發(fā)現(xiàn)(很久以前看的,現(xiàn)在找不到那個js文件了,所以沒能截圖),encode是由賬號和密碼分別經(jīng)過base64編碼加密后拼接起來,然后在它們中間加“%%%”而制成的。
我們可以仿照base64的編碼過程編寫一段加密的函數(shù),然后將傳入的賬號和密碼分別加密成encode的形式并返回,之后就可以構(gòu)建請求表單(還是字典形式)。
下圖這個是我在網(wǎng)上找的實(shí)現(xiàn)base64編碼的js函數(shù),所以我需要execjs來執(zhí)行這段js代碼,你完全可以直接使用Python來編寫這個函數(shù)。
04實(shí)現(xiàn)模擬登錄 我們構(gòu)建好了請求頭和表單數(shù)據(jù)之后,就可以利用request庫對頁面進(jìn)行請求,之后沒什么難點(diǎn),直接上完整代碼。
我們在執(zhí)行l(wèi)ogin這個函數(shù)后,輸入正確的學(xué)號和密碼,便可以發(fā)現(xiàn)它返回了首頁的前端代碼。如下。
我們之后可以利用BeautifulSoup這種工具,將這些頁面代碼生成頁面對象。然后對頁面的信息進(jìn)行爬取。
總結(jié)
利用這個方法,我們可以爬取我們的學(xué)習(xí)成績等信息(至于怎么爬取可能以后會寫),然后可以制作成一個一鍵查詢成績的小功能等等。而其他的網(wǎng)站的模擬登錄,大多可以按照這個流程進(jìn)行實(shí)現(xiàn),只要分析好頁面,構(gòu)建好需要的信息即可。
最后,可能有些人會問,那個網(wǎng)站登錄要填驗(yàn)證碼怎么辦?這時候,我們就要接上驗(yàn)證碼識別這個函數(shù)了。至于怎么實(shí)現(xiàn),等我有空再寫一篇教程吧。我們下次再見。Bye!
關(guān)鍵詞:爬蟲,技能,模擬,實(shí)現(xiàn),簡單,利用