摘要:國家企業(yè)信用公示系統(tǒng)的爬取網(wǎng)站分析獲取首頁通過直接請(qǐng)求網(wǎng)站首頁,返回錯(cuò)誤提示碼,返回結(jié)果是代碼。驗(yàn)證碼識(shí)別開發(fā)者文檔代碼結(jié)果查詢企業(yè)在首頁的源代碼中,有一句注釋偽造極驗(yàn)變量百度成功獲取到結(jié)果鏈接國家企業(yè)信用公示系統(tǒng)爬取
國家企業(yè)信用公示系統(tǒng)的爬取 1. 網(wǎng)站分析 1.1 獲取首頁
通過 requests.get 直接請(qǐng)求網(wǎng)站首頁,返回 521 錯(cuò)誤提示碼,返回結(jié)果是js代碼。這是采用樂加速樂反爬技術(shù),在訪問前先判斷客戶端的cookie是否正確,如果不正確,返回521狀態(tài)碼和一段js代碼,并且進(jìn)行set-cookie操作,返回的js代碼經(jīng)過瀏覽器執(zhí)行又會(huì)生成新的cookie,這兩個(gè)cookie一起發(fā)送給服務(wù)器,才會(huì)返回正確的網(wǎng)頁內(nèi)容。
解決方法:
通過python的 execjs 執(zhí)行返回的js,拿到新的cookie,和第一次請(qǐng)求的cookie一起發(fā)送給服務(wù)器。
具體操作:
response = self.session.get(self.cookie_url) js_code1 = response.text print(js_code1) print(response.cookies)
輸出
]>
對(duì)這段代碼進(jìn)行js反混淆,得到
對(duì)js代碼進(jìn)行格式化處理,再調(diào)用python的execjs執(zhí)行這段代碼,如下所示:
js_code1 = js_code1.rstrip(" ") js_code1 = js_code1.replace("", "") js_code1 = js_code1.replace("