在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ Python如何爬取AJAX請(qǐng)求的地址(是接口地址不是數(shù)據(jù)),也可以說(shuō)是pyth

Python如何爬取AJAX請(qǐng)求的地址(是接口地址不是數(shù)據(jù)),也可以說(shuō)是python如何獲取瀏覽器控制臺(tái)的數(shù)據(jù)

現(xiàn)在遇到的問(wèn)題是有個(gè)接口每次刷新頁(yè)面都會(huì)是隨機(jī)的,但是返回的數(shù)據(jù)是固定的,我需要每次刷新頁(yè)面時(shí)將這個(gè)隨機(jī)的接口獲取到,然后再去請(qǐng)求這個(gè)接口以來(lái)獲取數(shù)據(jù),有知道的大神嗎,可以交流一下

ps: 是使用 python 去抓取這個(gè) ajax 的請(qǐng)求接口,不是打開(kāi)控制臺(tái)去復(fù)制粘貼接口,籠統(tǒng)的說(shuō)就是 python 如何獲取瀏覽器控制臺(tái)中的數(shù)據(jù),可能是我描述的不太清楚,小伙伴們不要理解錯(cuò)誤咯

回答
編輯回答
枕邊人

python目前沒(méi)有找到,使用node可以做到,puppeteer庫(kù), 可以看一下我寫(xiě)的關(guān)于 puppeteer的文章

2017年9月12日 04:47
編輯回答
夕顏

寫(xiě)爬蟲(chóng)要首先確定一個(gè)問(wèn)題:
數(shù)據(jù)從哪來(lái),誰(shuí)就是被爬的接口

Example:
xxx.html:
<script>var ajaxUrl="xxxxxxxxx"</script>
xxx.js
$.get(ajaxUrl.......);

你需要的是請(qǐng)求ajaxUrl后響應(yīng)的數(shù)據(jù),所以爬蟲(chóng)最后一步是去請(qǐng)求這個(gè),但是發(fā)現(xiàn)ajaxUrl不知道,但是卻可以通過(guò)請(qǐng)求xxx.html然后從里邊用正則取出來(lái)(re.findall(r"var ajaxUrl="(.+?)"",rawResponse)[0])然后緊接著發(fā)第二個(gè)請(qǐng)求。你的ajaxUrl需要從xxx.html中獲得,那么就去爬xxx.html好了。

另外,如果ajaxUrl是個(gè)很復(fù)雜的過(guò)程生成的,也可以考慮把那個(gè)過(guò)程用正則得到純js代碼部分,然后用execjs這些東西去在Python里跑一個(gè)js虛擬機(jī)直接得到結(jié)果。代碼可能需要裁剪替換掉一些瀏覽器特有的對(duì)象,例如window對(duì)象等等(最開(kāi)始加一段JS聲明出來(lái)就不會(huì)報(bào)錯(cuò)了).

2018年5月29日 01:58
編輯回答
賤人曾

隨便給你截了個(gè)圖,F12 networkxhr就是ajax請(qǐng)求的地址,response里面是json格式的數(shù)據(jù)。
clipboard.png

可以關(guān)注我的專欄Python網(wǎng)絡(luò)爬蟲(chóng)分享

2018年1月10日 22:14