日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

哪吒票房逼近40亿,用python爬取哪吒短评分析

發布時間:2025/3/20 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哪吒票房逼近40亿,用python爬取哪吒短评分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 分析
  • 具體步驟
    • 登錄
    • 爬取與存儲
    • 可視化分析
  • 結語

前言


  • 暑期檔電影慘淡,但隨著哪吒爆紅開拓了新局面。這也是國產動畫的首次爆紅。在哪吒剛出,筆者以為最多10億就算不錯的了。沒想過僅過了幾天就破了10億。接著頭條又突破20億--------11天27億,勢頭增長依然很猛!又破了30億!

那筆者就很好奇人們是怎么看待這一步電影的呢?

  • 哪吒?我想哪吒是陪伴過不少人成長的一部動畫片吧,也是記憶中算得上最好看的動畫片之一了。里面的哪吒、小豬熊、申公豹、石雞娘娘令人歷歷在目。我們或許都被哪吒的敢打敢為、勇敢和天真所感動!

分析

  • 對于這么一部爆紅的動畫電影。我想簡單分析人們對哪吒動畫電影的評價狀況。那么就選擇貓眼票房或者豆瓣的短評爬下來分析了。
  • step1:打開豆瓣主頁哪吒短評的界面。F12打開調試點擊頁面下一頁會發現有ajax數據交互
  • step2:分析這個接口,發現無加密。返回的是json套html需要解析處理一下。用網頁訪問這個接口。但是你會發現一旦你訪問頁面靠后它就拒絕訪問了。提示你要登錄再訪問

  • step3:思路很清晰了。只需要登錄—>訪問接口爬取存儲—>可視化分析即可

具體步驟

登錄

  • 賬密登錄fiddler抓包發現可以直接發送請求登錄。大膽猜測沒有cookie限制。登陸后即可訪問接口!
  • 程序方面只需要根據參數進行模擬即可,登錄完將cookie保存。后面的訪問都帶著這個cookie即可。

登錄部分代碼為:

import requests import urllib.parse from http import cookiejarurl='https://accounts.douban.com/j/mobile/login/basic' header={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', 'Referer': 'https://accounts.douban.com/passport/login_popup?login_source=anony','Origin': 'https://accounts.douban.com','content-Type':'application/x-www-form-urlencoded','x-requested-with':'XMLHttpRequest','accept':'application/json','accept-encoding':'gzip, deflate, br','accept-language':'zh-CN,zh;q=0.9','connection': 'keep-alive','Host': 'accounts.douban.com'} data={'ck':'','name':'','password':'','remember':'false','ticket':'' } def login(username,password):global datadata['name']=usernamedata['password']=passworddata=urllib.parse.urlencode(data)print(data)req=requests.post(url,headers=header,data=data,verify=False)cookies = requests.utils.dict_from_cookiejar(req.cookies)print(cookies)return cookies

爬取與存儲

  • 通過api的規則拼湊,抓下來的數據。我們主要需要評價星,和評論語句。
  • 使用Beautifulsoup進行dom解析。使用xldr、xldw將數據寫入excel文件中。一個頁面20條。頁面url增加直到出現異常為止停止。

    主要代碼實現:
def getcomment(cookies):start=0w = xlwt.Workbook(encoding='ascii')ws = w.add_sheet('sheet1')index=1while True:try:url = 'https://movie.douban.com/subject/26794435/comments?start='+str(start)+'&limit=20&sort=new_score&status=P&comments_only=1'start+=20req = requests.get(url,cookies=cookies)res = req.json()res=res['html']soup = BeautifulSoup(res, 'lxml')node = soup.select('.comment-item')#print(node[0])for va in node:name = va.a.get('title')star = va.select_one('.comment-info').select('span')[1].get('class')[0][-2]comment = va.select_one('.short').textprint(name, star, comment)ws.write(index,0,index)ws.write(index, 1, name)ws.write(index, 2, star)ws.write(index, 3, comment)index+=1except Exception as e:print(e)breakw.save('nezha.xls')
  • 對于爬取的結過一覽

可視化分析

  • 我們要對評分進行統計、詞頻統計。還有就是生成詞云展示。而對應的就是matplotlib、WordCloud庫。

評分統計

  • 對于評分統計,使用數組將上面的1,2,3,4,5,五個分數段讀取時候寫入,根據數據畫出餅狀圖分析即可。
  • 從上圖也可以知道,對于評分,大部分還是分布在5分和4分的,占比分別為41.2%和33.4%.而2分和1分時非常少!這足以說明這部片絕對不是爛片或者爭議不是很大。一部片不可能滿足所有人。存在不滿意的都在三分但依然能夠接受。所以從評分分布來看哪吒還是廣受支持的!

詞頻統計

  • 根據jieba分詞。統計前面熱詞出現的次數。反應觀眾共鳴點。
  • 這里感謝樓下評論給的建議,有些詞語無關性較大,我將它剔除去噪(例如這個,那個,這是等等)。
  • 可以看的出國產、大圣(大圣歸來對比).這些熱門話題直戳心頭!

詞云展示

  • 相比詞頻,詞云無法看到詞語的準確數量,但是可以看的到更多詞匯、人們的評價。筆者這里通過count()類(map)對分詞結果進行詞頻統計。統計完的詞頻排序前300個詞展示在2個詞云上。這些詞語的出現頻率均大于10.所以還是有所參考價值額。

  • 可以從詞云簡單分析出大家還是很滿意的,充滿濃濃封神色彩、動畫風格、不屈的爭斗、國產的激動!在票房直逼30億的情況下!我、要去看了。

代碼

  • 順便給出可視化分析部分代碼:
import matplotlib.pyplot as plt import matplotlib import jieba import jieba.analyse import xlwt import xlrd from wordcloud import WordCloud import numpy as np from collections import Counter matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams['axes.unicode_minus'] = Falsedef anylasescore(comment):score=[0,0,0,0,0,0]count=0for va in comment:try:score[int(va[2])]+=1count+=1except Exception as e:continueprint(score)label='1分','2分','3分','4分','5分'color = 'blue', 'orange', 'yellow', 'green', 'red' # 各類別顏色size=[0,0,0,0,0]explode=[0,0,0,0,0]for i in range(1,5):size[i]=score[i]*100/countexplode[i]=score[i]/count/10pie = plt.pie(size, colors=color, explode=explode, labels=label, shadow=True, autopct='%1.1f%%')for font in pie[1]:font.set_size(8)for digit in pie[2]:digit.set_size(8)plt.axis('equal')plt.title(u'各個評分占比', fontsize=12)plt.legend(loc=0, bbox_to_anchor=(0.82, 1)) # 圖例# 設置legend的字體大小leg = plt.gca().get_legend()ltext = leg.get_texts()plt.setp(ltext, fontsize=6)plt.savefig("score.png")# 顯示圖plt.show() def getzhifang(map):x=[]y=[]for k,v in map.most_common(15):x.append(k)y.append(v)Xi = np.array(x)Yi = np.array(y)x = np.arange(0, 15, 1)width = 0.6plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽plt.figure(figsize=(8, 6)) ##指定圖像比例: 8:6plt.bar(Xi, Yi, width, color='blue', label='熱門詞頻統計', alpha=0.8,)plt.xlabel("詞頻")plt.ylabel("次數")plt.show()return def getciyun_most(map):x = []y = []for k, v in map.most_common(300):x.append(k)y.append(v)xi=x[0:150]xi=' '.join(xi)print(xi)backgroud_Image = plt.imread('nezha.jpg') # 如果需要個性化詞云wc = WordCloud(background_color="white",width=1500, height=1200,#min_font_size=40,mask=backgroud_Image,font_path="simhei.ttf",max_font_size=150, # 設置字體最大值random_state=50, # 設置有多少種隨機生成狀態,即有多少種配色方案) # 字體這里有個坑,一定要設這個參數。否則會顯示一堆小方框wc.font_path="simhei.ttf" # 黑體# wc.font_path="simhei.ttf"my_wordcloud = wc.generate(xi)plt.imshow(my_wordcloud)my_wordcloud.to_file("img.jpg")xi=' '.join(x[150:300])my_wordcloud = wc.generate(xi)my_wordcloud.to_file("img2.jpg")plt.axis("off")def anylaseword(comment):list=['這個','一個','不少','起來','沒有','就是','不是','那個','還是','劇情','這樣','那樣','這種','那種','故事','人物','什么']list.append("這個")print(list)commnetstr=''c = Counter()low=Counter()index=0for va in comment:seg_list = jieba.cut(va[3],cut_all=False)index+=1for x in seg_list:if len(x) > 1 and x != '\r\n':try:c[x]+=1except:continuecommnetstr+=va[3]for (k, v) in c.most_common():if v<5 or k in list:c.pop(k)continue#print(k,v)print(len(c),c)getzhifang(c)getciyun_most(c)#print(commnetstr) def anylase():data = xlrd.open_workbook('nezha.xls') # 打開xls文件table = data.sheets()[0] # 打開第i張表comment = []for i in range(1, 500):comment.append(table.row_values(i))# print(comment)anylasescore(comment)anylaseword(comment)if __name__ == '__main__':anylase()

結語

  • 如果自己需要可以到github下載項目完整代碼。當然,只需要更改部分即可同理分析其他電影。
  • 項目依然有不夠完善地方,如影評,對不同評分的平均不同處理、其他不同角度如評論用戶性別、地點等等等等,這里不做延申。
  • 如果對后端、爬蟲、數據結構算法等感性趣歡迎關注我的個人公眾號交流(回復 爬蟲 即可獲得學習資料一份!):bigsai 持續輸出分享!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的哪吒票房逼近40亿,用python爬取哪吒短评分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。