鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python/ 如何快速爬取網(wǎng)頁(yè)上用ajax加載但需要appid/appkey才能授權(quán)拿到內(nèi)容?

如何快速爬取網(wǎng)頁(yè)上用ajax加載但需要appid/appkey才能授權(quán)拿到內(nèi)容?

首先聲明,這是非商業(yè)目的、純個(gè)人興趣的學(xué)習(xí)。python新手,問題如果幼稚請(qǐng)見諒。

我想爬的這個(gè)網(wǎng)頁(yè),是用ajax動(dòng)態(tài)加載,發(fā)送post請(qǐng)求到第三方后臺(tái)(SaaS),驗(yàn)證后以json格式返回內(nèi)容,然后顯示在網(wǎng)頁(yè)上。
因?yàn)槿鄙賏ppid/appkey,我無(wú)法直接用requests庫(kù)發(fā)送post請(qǐng)求拿到內(nèi)容,直接抓取的結(jié)果是"Unauthorized"。
Appid/Appkey我肯定是拿不到了,這是不是就是說(shuō)通過requests請(qǐng)求這條路行不通了?
<<< 修改:這里的假設(shè)是錯(cuò)誤的囧,具體詳見回答。有ajax的網(wǎng)頁(yè),還是用requests直接請(qǐng)求數(shù)據(jù)源最快。

另外,我試過用selenium模擬瀏覽器直接加載頁(yè)面,但是要等頁(yè)面加載完所有ajax基本上需要個(gè)十來(lái)秒,效率極為低下。
而且這是一個(gè)single-page的條目頁(yè)面,每頁(yè)顯示20條信息,點(diǎn)擊“下一頁(yè)”后不會(huì)跳轉(zhuǎn),而是又一次請(qǐng)求后臺(tái)刷新內(nèi)容,因此只能單線程的加載 -> 等10秒 -> 拿內(nèi)容 -> 點(diǎn)下一頁(yè) -> 加載 -> 等10秒 ……

想知道有沒有什么比較快速的方法爬到想要的數(shù)據(jù)呢?

回答
編輯回答
久舊酒

[自問自答] 我后來(lái)發(fā)現(xiàn)了,用chrome dev tool其實(shí)可以看到頁(yè)面本身請(qǐng)求數(shù)據(jù)時(shí)發(fā)送的appid/appkey,不過不是以這樣的param name呈現(xiàn)出來(lái),所以一開始被我忽視了。實(shí)際上只要把這兩個(gè)鍵值對(duì)加進(jìn)header里,并加上chrome里看得到的payload信息,用requests發(fā)送POST請(qǐng)求,就可以直接調(diào)取數(shù)據(jù)庫(kù)信息了。

2018年1月11日 12:54
編輯回答
妖妖

一般來(lái)講,selenium跟requests的最大區(qū)別就是幫你解析并執(zhí)行html,css,js等(耗時(shí)長(zhǎng))。
其中解析js是你最希望的,如果你可以手動(dòng)解析js填上Appid/Appkey,完全可以用requests完成。

2018年3月13日 22:32