node爬蟲-模擬登錄(一)

執(zhí)行環(huán)境?

windows 7 64位

node 5.8.0

最近在寫有關(guān)模擬登錄的模塊,查了一些資料,很多都沒有驗(yàn)證碼這部分的處理,總結(jié)一下,我認(rèn)為在寫之前要理解爬蟲的工作原理,理解了數(shù)據(jù)如何在瀏覽器與服務(wù)器之間進(jìn)行交互,實(shí)現(xiàn)起來就簡單了。

爬蟲的主要目的是將互聯(lián)網(wǎng)上的網(wǎng)頁下載到本地形成一個(gè)或聯(lián)網(wǎng)內(nèi)容的鏡像備份。當(dāng)我們將學(xué)號(hào)、密碼及驗(yàn)證碼提交后,瀏覽器首先通過與服務(wù)器進(jìn)行連接,確認(rèn)我們填的信息正確后,服務(wù)器會(huì)生成一個(gè)sessionId來表示登陸成功的狀態(tài),并返回給瀏覽器,瀏覽器接受到SessionId之后,作為cookies值保存在瀏覽器,之后每次要獲取登錄后頁面的數(shù)據(jù)時(shí)都會(huì)提交cookies值來驗(yàn)證是否已經(jīng)登錄。因此,獲取cookies值是我們做爬蟲很關(guān)鍵一步,這樣才可以對(duì)登錄后的頁面數(shù)據(jù)進(jìn)行爬蟲,找到自己需要的數(shù)據(jù)。

一、準(zhǔn)備工作:

1.安裝superagent(一個(gè)的請(qǐng)求代理模塊api,可處理get,post,put,delete,head請(qǐng)求)

npm install superagent

2.安裝cheerio(裝載已爬取的html網(wǎng)頁,類似jQuery,方便獲取網(wǎng)頁指定數(shù)據(jù)。)

npm install?cheerio

3.安裝nodecr(解析驗(yàn)證碼)

npm install ?nodecr

二:分析網(wǎng)頁cookies

首先在瀏覽器中輸入正確的用戶和密碼進(jìn)行登錄,登錄成功后服務(wù)器會(huì)發(fā)送生成的cookie值給瀏覽器,用來之后的瀏覽中驗(yàn)證登錄身份。所以我們不僅需要利用post模擬登錄,還要保存好其發(fā)送給我們的cookie值,在之后的請(qǐng)求中將cookie值設(shè)置在請(qǐng)求頭中進(jìn)行發(fā)送,以獲取登錄后的其它頁面信息。可在控制臺(tái)中進(jìn)行查看分析。

三、分析post需要提交的字段

方法一:在同樣的控制臺(tái)頁面下面我們可以看到我們需要post提交的字段信息。

方法二:可以查看源碼,進(jìn)行查找相應(yīng)提交字段。

四、驗(yàn)證碼處理

往往很多登錄頁面都需要驗(yàn)證碼,我們?cè)撊绾潍@取驗(yàn)證碼,并對(duì)其進(jìn)行解析呢?這就需要nodecr(前身為tesseract),它可以解析到驗(yàn)證碼中的數(shù)字,本文的解析流程,首先獲取登錄頁面的驗(yàn)證碼并保存到本地指定目錄,然后通過nodecr第三方工具進(jìn)行解析得到相應(yīng)驗(yàn)證碼,之后與用戶名、密碼一并提交,進(jìn)行模擬登錄。部分截圖如下:

1.保存過程

2.解析登錄過程

注:(紅色框中輸入自己爬取網(wǎng)頁的相應(yīng)字段)

五。轉(zhuǎn)碼過程(可選)

有時(shí)候我們所要爬取的頁面編碼為GBK格式則不能正常顯示,這時(shí)需要進(jìn)行轉(zhuǎn)碼處理

六、登錄成功后,這時(shí)就該cheerio上場了,cheerio操作類似jquery的用法,先將得到的頁面用cheerio進(jìn)行轉(zhuǎn)載,之后對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行處理,取得自己想要的數(shù)據(jù)。

模擬登錄是最基礎(chǔ)也最重要的部分,登錄之后,我們便可以運(yùn)用自己的知識(shí)對(duì)網(wǎng)頁進(jìn)行處理了,比如課表的爬蟲,成績的爬蟲等等,你會(huì)覺得越來越有意思了。

詳細(xì)代碼:https://github.com/luhongchun/blog/tree/master/node_login

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術(shù)知識(shí)體系必須貫穿數(shù)據(jù)獲取、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)提取、數(shù)據(jù)分析、數(shù)據(jù)挖掘、...
    whenif閱讀 18,290評(píng)論 45 523
  • 前言:最近發(fā)現(xiàn)自己在網(wǎng)絡(luò)相關(guān)這一塊基礎(chǔ)很是欠缺,所以準(zhǔn)備花時(shí)間了解一下,本文主要是講http協(xié)議的一些基礎(chǔ),和一些...
    justCode_閱讀 2,148評(píng)論 0 23
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng),內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,334評(píng)論 3 82
  • 為了能夠做到,自己想做的事。首先,我們應(yīng)該先做什么呢? 長時(shí)間的消寂,似乎看著已經(jīng)沉淪其中了。卻忽然,制定了一個(gè)計(jì)...
    沈沈沉沉閱讀 458評(píng)論 0 0

友情鏈接更多精彩內(nèi)容