動(dòng)態(tài)數(shù)據(jù)獲取

文章導(dǎo)讀:

有時(shí)候,我們天真無(wú)邪的使用urllib庫(kù)或Scrapy下載HTML網(wǎng)頁(yè)時(shí)會(huì)發(fā)現(xiàn),我們要提取的網(wǎng)頁(yè)元素并不在我們下載到的HTML之中,盡管它們?cè)跒g覽器里看起來(lái)唾手可得。

? ? ?這說(shuō)明我們想要的元素是在我們的某些操作下通過(guò)js事件動(dòng)態(tài)生成的。舉個(gè)例子,我們?cè)谒Q空間或者微博評(píng)論的時(shí)候,一直往下刷,網(wǎng)頁(yè)越來(lái)越長(zhǎng),內(nèi)容越來(lái)越多,就是這個(gè)讓人又愛又恨的動(dòng)態(tài)加載。

爬取動(dòng)態(tài)頁(yè)面目前來(lái)說(shuō)有兩種方法

????分析請(qǐng)求頁(yè)面

通過(guò)Selenium模擬瀏覽器獲取

小編不推薦使用方法二,原因很簡(jiǎn)單,效率低,爬取少量頁(yè)面數(shù)據(jù)可以接受,如果我們獲取的頁(yè)面層次多數(shù)據(jù)量大,那么它的執(zhí)行效率會(huì)死人的。。。。

分析很簡(jiǎn)單,我們只需要打開了瀏覽器F12開發(fā)者模式,獲取它的js請(qǐng)求文件(除JS選項(xiàng)卡還有可能在XHR選項(xiàng)卡中,當(dāng)然也可以通過(guò)其它抓包工具

我們打開第一財(cái)經(jīng)網(wǎng)看看,發(fā)現(xiàn)無(wú)法獲取元素的內(nèi)容

打開Network,看下它的請(qǐng)求,這里我們只看它的js請(qǐng)求就夠了

將它的url放到瀏覽器看下

我們觀察url的規(guī)律可以看到每次末尾的url都自增1,這樣我們就可以重構(gòu)請(qǐng)求來(lái)獲取數(shù)據(jù),貼下代碼

這里的數(shù)值1584是小編手動(dòng)試出來(lái)的,還有一種方法就是直接while循環(huán),在判斷返回值,如果還有更好的方法,請(qǐng)告知下小編

有時(shí)候,一些網(wǎng)站所有的接口都進(jìn)行了加密操作,我們無(wú)法解析js,就必須采用selenium+phantomjs進(jìn)行獲取,具體使用請(qǐng)看另一篇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容