htmljs登錄驗(yàn)證碼(html登錄驗(yàn)證頁(yè)面)
爬蟲(chóng)無(wú)非三步:下載源碼 抽取數(shù)據(jù) 存儲(chǔ)數(shù)據(jù)
所以,你需要考慮的是:如何高效的抓取 如何抽取有用的數(shù)據(jù) 如何設(shè)計(jì)存儲(chǔ)結(jié)構(gòu) 如何近乎實(shí)時(shí)的更新 如何判重并減少冗余數(shù)據(jù)存儲(chǔ)
網(wǎng)絡(luò)爬蟲(chóng)-驗(yàn)證碼登錄
驗(yàn)證碼是一種非常有效的反爬蟲(chóng)機(jī)制,它能阻止大部分的暴力抓取,在電商類、投票類以及社交類等網(wǎng)站上應(yīng)用廣泛。如果破解驗(yàn)證碼,成為了數(shù)據(jù)抓取工作者必須要面對(duì)的問(wèn)題。
在訪問(wèn)某些網(wǎng)站時(shí),我們最初只是需要提供用戶名密碼就可以登陸的,比如說(shuō)豆瓣網(wǎng),如果我們要是頻繁登陸訪問(wèn),可能這時(shí)網(wǎng)站就會(huì)出現(xiàn)一個(gè)驗(yàn)證碼圖片,要求我們輸入驗(yàn)證碼才能登陸,這樣在保證用戶方便訪問(wèn)的同時(shí),又防止了機(jī)器的惡意頻繁訪問(wèn)。對(duì)于這種情況,我們可以使用代理服務(wù)器訪問(wèn),只需要換個(gè)ip地址再次訪問(wèn),驗(yàn)證碼就不會(huì)出現(xiàn)了,當(dāng)然,當(dāng)驗(yàn)證碼再次出現(xiàn)的時(shí)候,我們只能再更換ip地址。
如果對(duì)于網(wǎng)站首次登陸就需要提供驗(yàn)證碼的情況呢??jī)煞N辦法,我們可以使用cookie登陸,還有就是可以采用驗(yàn)證碼識(shí)別手段。使用cookie登陸比較簡(jiǎn)單,但是有時(shí)效性問(wèn)題。而驗(yàn)證碼識(shí)別雖然是個(gè)很好的思路,但是識(shí)別的精度又限制了抓取的效率。 拿知乎網(wǎng)舉例子,如圖所示,知乎的登陸界面要求我們輸入用戶名密碼的同時(shí),給出驗(yàn)證碼,才能登陸。
如果采用cookie登陸,可以這樣實(shí)現(xiàn):首先需要手動(dòng)登陸網(wǎng)站一次,獲取服務(wù)器返回的cookie,這里就帶有了用戶的登陸信息,當(dāng)然也可以采用獲取的cookie登陸該網(wǎng)站的其他頁(yè)面,而不用再次登陸。具體代碼已經(jīng)實(shí)現(xiàn),詳見(jiàn)ZhihuSpider。我們只需要在配置文件中提供用戶名密碼,及相應(yīng)的cookie即可。對(duì)于不出現(xiàn)驗(yàn)證碼的情況,爬蟲(chóng)會(huì)提交用戶名密碼實(shí)現(xiàn)post請(qǐng)求登陸,如果失敗,才會(huì)使用事先提供的cookie信息。
需要說(shuō)明的是,判斷爬蟲(chóng)登陸與否,我們只需要看一下爬取的信息里面是否帶有用戶信息即可。在使用cookie登陸的時(shí)候,還需要不定期更新cookie,以保證爬取順利進(jìn)行。
大牛的自序:
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。