爬蟲實戰(二)貓眼電影動態數據爬取

爬蟲部分的知識算是告一段落了,又是幾天過去了,感覺挺充實的。裏面可能還有一些需要改進的地方,慢慢完善吧。

接下來我們就說說上次遺留下來的問題,如何爬取動態數據。先告訴你一下爬取的數據中爲什麼沒有電影信息吧:因爲我們請求的是靜態頁面地址。如果請求的是動態資源,會從數據庫中取出數據等一系列操作後動態拼湊頁面的展示內容,把所有的展示內容交給WEB服務器,之後通過WEB服務器將內容發送回客戶端瀏覽器進行解析執行。

所以,我們現在需要知道它的動態加載數據的地址,我們在瀏覽器調試中去找出這條地址即可。

首先我們要有一款瀏覽器:谷歌或者360瀏覽器

  • 谷歌瀏覽器操作方法:點擊頁面右上角的“三點” → 更多工具 → 開發者工具
  • 360瀏覽器操作方法:空白地方對頁面單擊右鍵 → 審查元素(如果沒有,說明該頁面不支持)
  • 其他瀏覽器操作方法請自行百度

打開頁面調試後,我們選擇橫條上的Network,刷新頁面,我們就看到多條服務器響應返回的記錄,接下來就是仔細去找我們需要的信息了。

接着上個實驗,我們做完以上的準備工作,由於返回的記錄數只有一條,那麼我們就可以斷定,以下就是動態加載的網址。

http://m.maoyan.com/imeituan/ajax/cinema?offset=0&_v_=yes

開始寫代碼

import requests

header = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
}
res = requests.get('http://m.maoyan.com/imeituan/ajax/cinema?offset=0&_v_=yes',headers=header).json()
print(res)

抓取成功,部分結果如下:

{...'cinemas': [{...'nm': '喜滿客影城', 'mark': 0, 'price': 27, 'referencePrice': '0', 'sellPrice': '27', 'tag': {'deal': 0, 'snack': 0, 'vipTag': '折扣卡', 'hallType': ['巨幕廳', '4D廳'], 'allowRefund': 0, 'sell': 1, 'hallTypeVOList': [{'name': '巨幕廳', 'url': ''}, {'name': '4D廳', 'url': ''}], 'buyout': 0, 'endorse': 1}, 'distance': '1.7km', 'showPrice': True, 'shopId': 14714361, 'id': 7285, 'score': 558.62067, 'dis': 1688.9367843113519, 'follow': 0, 'labels': [{'name': '改簽', 'color': '#579daf'}, {'name': '折扣卡', 'color': '#ff9900'}, {'name': '巨幕廳', 'color': '#579daf', 'url': ''}, {'name': '4D廳', 'color': '#579daf', 'url': ''}],...}

這裏我們可以發現price和sellPrice都是27元,而且和網頁上的價格吻合,和referencePrice沒有關係。

至此,我們的項目結......等等,27元的電影票!感覺沒有優惠啊,打開美團app一看,9.9元特惠!!!

不過還是得把項目結束了,等有機會我們來學習爬取app數據,相信你一定會感興趣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章