按15分钟取数据_Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析...
前言
文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
作者: Yura不說數據說 ,PYuraL
PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
數據爬取
其實我一開始是想用豆瓣網的評論的,但是我翻了翻吧,發現“最熱評論”只能看到500條,“最新評論”只能顯示100條,拿600條數據能分析出個啥?
百度了一下,看大家都是用貓眼評論,于是就……爬貓眼!網頁版的貓眼只能顯示有限的評論,切換到APP版本才能看到所有評論。
找network里面的網頁也不難,隨便拿一條評論搜索一下就可以找到
關鍵是找到不同網頁之間的變化規律
有些網址,表面看上去,區別就是在于offset(偏移量),但是實際上更改這個數值到1005的時候就爬不到東西了(可能是由于網頁內部的設置吧),就是說這么下去我們只能得到1000條評論。
那是哪1000條評論呢?我們看到網址中有個關鍵詞“ts=1549640420581”,其實就是當前時間的意思(時間戳),轉化一下就是:
所以1000條就是從這個時間點,往前偏移15條后,最新的1000條評論。
通過百度各位大神的爬蟲過程,我發現終極解決方法就是更改ts的值!如果說偏移量15的意思是從這個查詢的時間往前偏移15條再取得15條評論數據(limit=15),那么我們每次更改ts值不就可以了。
第一個ts值是程序開始運行的時間,第二個值就從已經獲取的評論數據中拿到最早的那個數據,以此不斷往前翻滾……
我爬取了2月8日24點之前的所有評論信息,按App顯示此時至少有80000+條數據,但是我爬下來總共只有4w+條…數據缺失還是比較嚴重的。
數據格式如下(包括用戶id、用戶昵稱、用戶貓眼等級、性別、時間、評分、評論內容、點贊數和評論數):
這些都是在json里面,格式非常清晰明了。
數據清洗
拿到數據除了做詞云用了Python(代碼在最后),其他的內容Excel分分鐘解決,這里尤其感謝發明“數據透視表”的兄弟。
數據分析
1.觀眾信息
男女比例各占一半,男的對賽車這類刺激性東西感興趣可以理解,這女觀眾都是為了啥?為了黃景瑜小哥哥的臉?還是像我一樣沖著阿信來的?這里信息太少,我只做少量胡思亂猜。
用戶等級又是類似于正態分布的形狀,巧的嘞……其中0分和1分的用戶(可以認定為新注冊用戶)僅占9.78%,可以看出評分的人中水軍是很少的,基本都是貓眼老用戶。
再看看4天用戶評價數量的變化:
基本可得這部電影熱度呈現緩慢下降的趨勢(但是由于數據的不完整性,不能絕對說明)
那用戶都喜歡在什么時間評論呢?對比看四天的評論hour數據:
如果大家習慣看完電影馬上評價的話,那么從評論趨勢來看,從中午12點之后評論數逐漸增加,推測是由于早上10點左右那場電影的結束。隨后評論數不斷增加,在晚飯前的5、6點和睡覺前的23點左右達到小高峰。
嗯,非常符合大家“醒了看電影,看完吃飯,吃了再看,看了再睡‘的“節假日生活作息”。
2.評分情況
按照我爬取的數據我們看到超過一半(52.37%)的觀眾給這部電影打了滿分10分,極少量用戶評分在6分以下(僅占7.58%)。根據我爬取的數據,計算所得平均分是8.725,和實時顯示的分數8.8相差不大。
除了從宏觀角度看評分,我們來瞧瞧評論者性別和評論時間與最終評分有什么不能說的秘密?
性別的不同并沒有造成評分很大的區別,男觀眾和女觀眾的評分平均分僅僅相差0.35分,“未知性別”人群的評分在兩者之間,基本等于男性評分8.53和女性評分8.88的的平均值(8.71)。嗯,我很有理由懷疑“未知人群”中男女比例也各占一半!
從評分時間和評分的關系來看,低分一般出現在0點到7點之間,我猜吧,大概是在這種夜深人靜的時候,大家的情緒容易有大起大落,白天看完電影時的興奮已經退去,留下的只有深深的思考,或許還帶點批判性,吧。
3.評論內容
先看看點贊數最高的5條評論。
我們發現前5條評論評分均為10分:其中第一條,emmm,與電影無關,暫時跳過……其他幾條都是贊美韓寒、沈騰和黃景瑜的。
那通過詞云具體看一下評論內容:
不成熟的代碼
from bs4 import BeautifulSoupimport requestsimport warningsimport refrom datetime import datetimeimport jsoheaders = { 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1', 'Connection':'keep-alive'}cookies={'cookie':'_lxsdk_cuid=168c325f322c8-0156d0257eb33d-10326653-13c680-168c325f323c8; uuid_n_v=v1; iuuid=30E9F9E02A1911E9947B6716B6E91453A6754AA9248F40F39FBA1FD0A2AD9B42; webp=true; ci=191%2C%E5%8F%B0%E5%B7%9E; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; __mta=49658649.1549462270794.1549465778684.1549548206227.3; _lxsdk=30E9F9E02A1911E9947B6716B6E91453A6754AA9248F40F39FBA1FD0A2AD9B42; _lxsdk_s=168c898414e-035-f0e-e6%7C%7C463'}?#url設置offset偏移量為0url = 'http://m.maoyan.com/review/v2/comments.json?movieId=1218091&userId=-1&offset=0&limit=15&ts={}&type=3'?comment=[]nick=[]score=[]comment_time=[]gender=[]userlevel=[]userid=[]upcount=[]replycount=[]ji=1??url_time=url_time=int(time.time())*1000#獲取當前時間(單位是毫秒,所以要??1000)?for i in range(2000): value=15*i url_range=url.format(url_time) res=requests.get(url_range,headers=headers,cookies=cookies,timeout=10) res.encoding='utf-8' print('正在爬取第'+str(ji)+'頁') content=json.loads(res.text,encoding='utf-8') list_=content['data']['comments'] count=0 for item in list_: comment.append(item['content']) nick.append(item['nick']) score.append(item['score']) comment_time.append(datetime.datetime.fromtimestamp(int(item['time']/1000))) gender.append(item['gender']) userlevel.append(item['userLevel']) userid.append(item['userId']) upcount.append(item['upCount']) replycount.append(item['replyCount']) count=count+1 if count==15: url_time=item['time'] ji+=1 time.sleep(random.random())print('爬取完成')print(url_time)result={'用戶id':userid,'用戶昵稱':nick,'用戶等級':userlevel,'性別':gender,'時間':comment_time,'評分':score,'評論內容':comment,'點贊':upcount,'評論':replycount}results=pd.DataFrame(result)results.info()results.to_excel('貓眼_飛馳人生.xlsx')總結
以上是生活随笔為你收集整理的按15分钟取数据_Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现线段切割法_切割晶圆及玻璃产品的现代
- 下一篇: 红黑树和平衡二叉树的区别_面试题精选红黑