真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)

不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù),針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了高臺(tái)免費(fèi)建站歡迎大家使用!

下面講的是不使用selenium插件模擬瀏覽器,如何獲得網(wǎng)頁上的動(dòng)態(tài)加載數(shù)據(jù)。

步驟如下: 

一、找到正確的URL。

二、填寫URL對(duì)應(yīng)的參數(shù)。

三、參數(shù)轉(zhuǎn)化為urllib可識(shí)別的字符串data。

四、初始化Request對(duì)象。

五、urlopen這個(gè)Request對(duì)象,獲得數(shù)據(jù)。

url='http://www.*****.*****/*********'
formdata = {'year': year,
'month': month,
'day': day
}
data = urllib.urlencode(formdata)
request=urllib2.Request(url,data = data)  #如果URL不帶參數(shù)就是request=urllib2.Request(url)
r = urllib2.urlopen(request)
html=r.read() # html就是你要的數(shù)據(jù),可能是html格式,也可能是json,或去他格式

后面步驟都是相同的,關(guān)鍵在于如何獲得URL和參數(shù)。我們以新冠肺炎的疫情統(tǒng)計(jì)網(wǎng)頁為例(https://news.qq.com/zt2020/page/feiyan.htm#/)。

不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)

如果直接抓瀏覽器的網(wǎng)址,你會(huì)看見一個(gè)沒有數(shù)據(jù)內(nèi)容的html,里面只有標(biāo)題、欄目名稱之類的,沒有累計(jì)確診、累計(jì)死亡等等的數(shù)據(jù)。因?yàn)檫@個(gè)頁面的數(shù)據(jù)是動(dòng)態(tài)加載上去的,不是靜態(tài)的html頁面。需要按照我上面寫的步驟來獲取數(shù)據(jù),關(guān)鍵是獲得URL和對(duì)應(yīng)參數(shù)formdata。下面以火狐瀏覽器講講如何獲得這兩個(gè)數(shù)據(jù)。

肺炎頁面右鍵,出現(xiàn)的菜單選擇檢查元素。

不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)

點(diǎn)擊上圖紅色箭頭網(wǎng)絡(luò)選項(xiàng),然后刷新頁面。如下,

不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)

這里會(huì)出現(xiàn)很多網(wǎng)絡(luò)傳輸記錄,觀察最右側(cè)紅框“大小”那列,這列表示這個(gè)http請(qǐng)求傳輸?shù)臄?shù)據(jù)量大小,動(dòng)態(tài)加載的數(shù)據(jù)一般數(shù)據(jù)量會(huì)比其它頁面元素的傳輸大,119kb相比其它按字節(jié)計(jì)算的算是很大的數(shù)據(jù)了,當(dāng)然網(wǎng)頁的裝飾圖片有的也很大,這個(gè)需要按照文件類型那列來甄別。

然后點(diǎn)擊域名列對(duì)應(yīng)那行,如下

不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)

可以在消息頭中看見請(qǐng)求網(wǎng)址,這個(gè)就是url,點(diǎn)擊參數(shù)可以看見url對(duì)應(yīng)的參數(shù)

不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)

https://view.inews.qq.com/g2/getOnsInfo?name=disease_h6&callback=jQuery341004532487105727312_1584498763134&_=1584498763135

可以看到url的尾部?后面已經(jīng)把參數(shù)寫上了。

我們?nèi)绻褂脦?shù)的URL,那么就

request=urllib2.Request(url),不加data參數(shù)。

如果使用request=urllib2.Request(url,data = data)

那么url="https://view.inews.qq.com/g2/getOnsInfo"

formdata = {'name': 'disease_h6',

'callback': '',

'_': 當(dāng)前時(shí)間戳

}

name是disease_h6,callback是頁面回調(diào)函數(shù),我們不需要有回調(diào)動(dòng)作,所以設(shè)置為空,_對(duì)應(yīng)的是時(shí)間戳(Python很容易獲得時(shí)間戳的),因?yàn)椴樵兎窝谆颊邤?shù)量和時(shí)間是緊密相關(guān)的。

如果都寫在一個(gè)url中是下面形式的

url='https://view.inews.qq.com/g2/getOnsInfo?name=disease_h6&callback=&_=%d'%int(stamp*1000)

按照這個(gè)思路就可以獲得疫情數(shù)據(jù)了。兩種方案任你選擇。

找url和參數(shù)是一項(xiàng)需要耐心,需要一定的分析能力的,才能正確甄別url和參數(shù)的含義,進(jìn)行正確的編程實(shí)現(xiàn)。參數(shù)是否可以空,是否可以硬編碼寫死,是否有特殊要求,其實(shí)是一個(gè)很考驗(yàn)經(jīng)驗(yàn)的事情。

有的url很簡(jiǎn)單,返回一個(gè).dat文件,里面直接就是json格式的數(shù)據(jù),這種是最友好的了。有的需要你設(shè)置大量參數(shù),才能獲得,而且獲得的是html格式的,需要解析才能提取數(shù)據(jù)。

關(guān)于不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


本文標(biāo)題:不使用selenium插件如何抓取網(wǎng)頁的動(dòng)態(tài)加載數(shù)據(jù)
本文路徑:http://weahome.cn/article/pgeced.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部