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