網(wǎng)頁(yè)爬蟲(chóng) - Python爬蟲(chóng)如何正確判斷頁(yè)面是否可以爬取?
問(wèn)題描述
用Python27些爬蟲(chóng),想要爬取一些網(wǎng)站,我需要判斷網(wǎng)頁(yè)是否可以爬取,第一反應(yīng)是通過(guò)狀態(tài)碼來(lái)判斷,但是寫(xiě)完運(yùn)行后發(fā)現(xiàn)有許多目標(biāo)網(wǎng)站訪(fǎng)問(wèn)它不存在的頁(yè)面時(shí)會(huì)返回一個(gè)404錯(cuò)誤頁(yè)面,可他的狀態(tài)碼卻是200,結(jié)果爬回來(lái)好多根本就不存在的頁(yè)面。這個(gè)本來(lái)是網(wǎng)站設(shè)置的問(wèn)題,但是現(xiàn)在也不能用狀態(tài)碼來(lái)判斷了,請(qǐng)問(wèn)還有什么方法可以正確判斷一個(gè)頁(yè)面是不是404該不該爬?
問(wèn)題解答
回答1:首先, 200 狀態(tài)碼,是網(wǎng)絡(luò)連接狀態(tài), 所以你只判斷200并不能滿(mǎn)足所有網(wǎng)站。
其次, 寫(xiě)爬蟲(chóng)嘛, 你應(yīng)該實(shí)際去看看這些網(wǎng)站的規(guī)則是什么,可以先人工判斷下, 找找規(guī)律, 比如看看網(wǎng)頁(yè)返回內(nèi)容是不是有什么特點(diǎn)之類(lèi)的。
回答2:做個(gè)網(wǎng)頁(yè)內(nèi)容的判斷,如果他網(wǎng)頁(yè)里面沒(méi)有內(nèi)容就直接返回。
回答3:就算是頁(yè)面狀態(tài)碼200,返回的404頁(yè)面,應(yīng)該和正常能爬取的頁(yè)面html有不同的html元素吧,根據(jù)有沒(méi)有特定的html元素來(lái)判斷是不是404頁(yè)面也行的
相關(guān)文章:
1. javascript - Vue.js的ElementUI庫(kù)中,如何主動(dòng)觸發(fā)checkbox組件的change事件?2. javascript - webpack 打包 reactjs項(xiàng)目 css 分離3. javascript - 關(guān)于js高級(jí)程序中的問(wèn)題4. javascript - 關(guān)于微信掃一掃的技術(shù)問(wèn)題5. javascript - 如何清除向可編輯的(contenteditable)元素里粘貼的文本的標(biāo)簽和樣式?6. javascript - 請(qǐng)教移動(dòng)端從詳情頁(yè)返回到列表頁(yè)原來(lái)位置的問(wèn)題?7. javascript - vuex中子組件無(wú)法調(diào)用公共狀態(tài)8. javascript - (_a = [""], _a.raw = [""],....); js一個(gè)小括號(hào)的是什么意思?9. javascript - js正則替換日期格式問(wèn)題10. javascript - ios上fixed定位問(wèn)題,定位在底部的按鈕不顯示了,但是又可以點(diǎn)擊到,換了一個(gè)類(lèi)名就可以顯示了,但是設(shè)置的字體大小卻失效了
