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