動(dòng)態(tài)抓取之騰訊視頻

今天我們聊一聊動(dòng)態(tài)抓取僧叉,所謂的動(dòng)態(tài)抓取其實(shí)就是我們?cè)谧ト【W(wǎng)頁(yè)數(shù)據(jù)的時(shí)候,要抓取的數(shù)據(jù)在查看網(wǎng)頁(yè)源代碼時(shí)是找不到對(duì)應(yīng)的數(shù)據(jù)的棺榔,就比如我們今天要爬取的騰訊視頻的VIP電影

騰訊視頻

如上圖所示瓶堕,網(wǎng)頁(yè)中有,但是在查看源代碼時(shí)症歇,源代碼中沒(méi)有郎笆;這事怎么回事呢,這其實(shí)就是因?yàn)樗臄?shù)據(jù)是動(dòng)態(tài)加載的忘晤,一般都是通過(guò)js代碼來(lái)向服務(wù)器實(shí)時(shí)獲取數(shù)據(jù)的宛蚓,接下來(lái)我們就抓取一下這樣的網(wǎng)站。

既然要獲取數(shù)據(jù)设塔,那我們肯定要先找到請(qǐng)求數(shù)據(jù)的代碼在哪兒凄吏,打開(kāi)Chrome瀏覽器的開(kāi)發(fā)者工具,我們選中network選項(xiàng)

Chrome開(kāi)發(fā)者工具

接著我們刷新一下我們要抓取的網(wǎng)頁(yè),可以看到下面多出來(lái)很多的東西痕钢,一般請(qǐng)求的代碼都是在XHR或者JS中的图柏,所以我們直接在這兩項(xiàng)中去找,通過(guò)查找我們能看到如下結(jié)果:

看來(lái)就是這個(gè)文件請(qǐng)求的數(shù)據(jù)啦任连,接下來(lái)我們選擇Headers查看它的請(qǐng)求地址

我們把這個(gè)請(qǐng)求鏈接復(fù)制下來(lái)蚤吹,然后直接在瀏覽器中打開(kāi)呢

看來(lái)確實(shí)是我們要找的內(nèi)容,它的數(shù)據(jù)類型是一個(gè)json類型随抠,所以我們只需要把數(shù)據(jù)抓取下來(lái)裁着,然后解析就能夠搞定啦!接下來(lái)開(kāi)始寫代碼:

首先是抓取得到j(luò)son數(shù)據(jù):

# -*- coding:utf-8 -*-

import requests

url = 'http://list.video.qq.com/fcgi-bin/list_common_cgi?otype=json&novalue=1&platform=1&version=10000&intfname=web_vip_movie_new&tid=687&appkey=c8094537f5337021&appid=200010596&type=1&sourcetype=1&itype=-1&iyear=-1&iarea=-1&iawards=-1&sort=17&pagesize=30&offset=0&callback=jQuery19108734160972013745_1494380383266&_=1494380383271'

data = requests.get(url).content
print data
輸出結(jié)果

數(shù)據(jù)抓取下來(lái)后接下來(lái)就是解析數(shù)據(jù)了拱她,由于是json類型二驰,所以我們導(dǎo)入json包來(lái)解析,首先利用正則表達(dá)式去除前面不相干的jQuery1910...那一串椭懊,只留下{"cgi_cost_time:...}的數(shù)據(jù)诸蚕,從我們剛剛復(fù)制請(qǐng)求鏈接打開(kāi)的網(wǎng)頁(yè)結(jié)果可以看出步势,所要的數(shù)據(jù)是在{...;'jsonvalue':{...;'results':[...];...};...},也就是在字典中的key為jsonvalue的里面的氧猬,jsonvalue的值又是一個(gè)字典,又在這個(gè)字典里的key值為results里面才是真正的數(shù)據(jù)坏瘩,而results對(duì)應(yīng)的value是一個(gè)列表盅抚,分析清楚了接下來(lái)獲取數(shù)據(jù)就簡(jiǎn)單了,直接上代碼:

# -*- coding:utf-8 -*-

import requests
import json
import re

url = 'http://list.video.qq.com/fcgi-bin/list_common_cgi?otype=json&novalue=1&platform=1&version=10000&intfname=web_vip_movie_new&tid=687&appkey=c8094537f5337021&appid=200010596&type=1&sourcetype=1&itype=-1&iyear=-1&iarea=-1&iawards=-1&sort=17&pagesize=30&offset=0&callback=jQuery19108734160972013745_1494380383266&_=1494380383271'

data = requests.get(url).content
# print data

#正則表達(dá)式去除不相干數(shù)據(jù)
data = re.search(re.compile(r'jQuery.+?\((.+)+\)'),data)

if data is not None:

    a = json.loads(data.group(1))
    data = a['jsonvalue']['results']  #找到results這個(gè)列表


#遍歷列表
for i in data:
    #列表中的值為字典倔矾,所以用字典取對(duì)應(yīng)的值
    print u'電影名稱:     '+i['fields']['title']
    print u'電影簡(jiǎn)介:     '+i['fields']['second_title']
    print u'電影封面:     '+i['fields']['vertical_pic_url']
    print u'電影評(píng)分:     '+i['fields']['score']['score']
    print u'電影ID:      '+i['id']
    print '\n'

輸出結(jié)果

這樣數(shù)據(jù)就得到了妄均,當(dāng)然這只是抓取了一頁(yè)的內(nèi)容,如果要抓取所有頁(yè)哪自,我們可以通過(guò)多點(diǎn)擊幾次網(wǎng)頁(yè)的下一頁(yè)丰包,然后對(duì)比一下請(qǐng)求鏈接,你就能發(fā)現(xiàn)請(qǐng)求鏈接的規(guī)律

請(qǐng)求鏈接

通過(guò)對(duì)比可以發(fā)現(xiàn)壤巷,每增加一頁(yè)邑彪,這個(gè)數(shù)字對(duì)應(yīng)的增加30,所以只需要?jiǎng)討B(tài)的改變請(qǐng)求鏈接胧华,就能抓取所有的數(shù)據(jù)寄症。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市矩动,隨后出現(xiàn)的幾起案子有巧,更是在濱河造成了極大的恐慌,老刑警劉巖悲没,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篮迎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)甜橱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門享言,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渗鬼,你說(shuō)我怎么就攤上這事览露。” “怎么了譬胎?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵差牛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我堰乔,道長(zhǎng)偏化,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任镐侯,我火速辦了婚禮侦讨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苟翻。我一直安慰自己韵卤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布崇猫。 她就那樣靜靜地躺著沈条,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诅炉。 梳的紋絲不亂的頭發(fā)上蜡歹,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音涕烧,去河邊找鬼月而。 笑死,一個(gè)胖子當(dāng)著我的面吹牛议纯,可吹牛的內(nèi)容都是我干的父款。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼痹扇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼铛漓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鲫构,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浓恶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后结笨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體包晰,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湿镀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伐憾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勉痴。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖树肃,靈堂內(nèi)的尸體忽然破棺而出蒸矛,到底是詐尸還是另有隱情,我是刑警寧澤胸嘴,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布雏掠,位于F島的核電站,受9級(jí)特大地震影響劣像,放射性物質(zhì)發(fā)生泄漏乡话。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一耳奕、第九天 我趴在偏房一處隱蔽的房頂上張望绑青。 院中可真熱鬧,春花似錦屋群、人聲如沸闸婴。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)掠拳。三九已至癞揉,卻和暖如春纸肉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喊熟。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工柏肪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芥牌。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓烦味,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親壁拉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谬俄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)弃理,斷路器溃论,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,110評(píng)論 25 707
  • 主人,我是你的大腦痘昌。就是那個(gè)你失敗的時(shí)候钥勋,被你說(shuō)“腦袋”不好的大腦炬转。當(dāng)別人成功了,你在說(shuō):“他腦子好聰明呀算灸!我怎么...
    我的筆記閱讀 846評(píng)論 0 0
  • 不知不覺(jué)中兩個(gè)月的暑假已經(jīng)結(jié)束了扼劈,總的來(lái)說(shuō)我的暑假過(guò)的是比較好的。開(kāi)始的時(shí)候本來(lái)是在徽州食府工作的菲驴,因?yàn)閬?lái)了個(gè)長(zhǎng)期...
    無(wú)需理由閱讀 218評(píng)論 0 2
  • 假如我是一陣風(fēng)我愿生在夏季擁抱藍(lán)天和白云親吻樹(shù)葉和大地奔向海與那鯤鵬扶搖直上九萬(wàn)里化作細(xì)雨潤(rùn)人心
    謝勿念閱讀 236評(píng)論 4 2