<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      目錄

      * 前言 <https://mp.csdn.net/mdeditor/98644495#font_colorFF0FFFfont_1>
      * 分析 <https://mp.csdn.net/mdeditor/98644495#font_colorFF0FFFfont_15>
      * 具體步驟 <https://mp.csdn.net/mdeditor/98644495#font_colorFF0FFFfont_24>
      * 登錄 <https://mp.csdn.net/mdeditor/98644495#font_colorB23AEEfont_25>
      * 爬取與存儲(chǔ) <https://mp.csdn.net/mdeditor/98644495#font_colorB23AEEfont_67>
      * 可視化分析 <https://mp.csdn.net/mdeditor/98644495#font_colorB23AEEfont_107>
      * 結(jié)語 <https://mp.csdn.net/mdeditor/98644495#font_colorFF0FFFfont_258>
      ?

      <>前言

      * 暑期檔電影慘淡,但隨著哪吒爆紅開拓了新局面。這也是國產(chǎn)動(dòng)畫的首次爆紅。在哪吒剛出,筆者以為最多10億
      就算不錯(cuò)的了。沒想過僅過了幾天就破了10億。接著頭條又突破20億--------目前11天27億,勢頭增長依然很猛!
      那筆者就很好奇人們是怎么看待這一步電影的呢?

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

      * 對(duì)于這么一部爆紅的動(dòng)畫電影。我想簡單分析人們對(duì)哪吒動(dòng)畫電影的評(píng)價(jià)狀況。那么就選擇貓眼票房或者豆瓣的短評(píng)爬下來分析了。
      * step1:打開豆瓣主頁哪吒短評(píng)的界面。F12打開調(diào)試點(diǎn)擊頁面下一頁會(huì)發(fā)現(xiàn)有ajax數(shù)據(jù)交互。

      * step2:分析這個(gè)接口,發(fā)現(xiàn)無加密。返回的是json套html需要解析處理一下。用網(wǎng)頁訪問這個(gè)接口。但是你會(huì)發(fā)現(xiàn)一旦你訪問頁面靠后它就拒絕訪問
      了。提示你要登錄再訪問。


      * step3:思路很清晰了。只需要登錄—>訪問接口爬取存儲(chǔ)—>可視化分析即可
      <>具體步驟

      <>登錄

      * 賬密登錄fidder抓包發(fā)現(xiàn)可以直接發(fā)送請(qǐng)求登錄。大膽猜測沒有cookie限制。登陸后即可訪問接口!

      * 程序方面只需要根據(jù)參數(shù)進(jìn)行模擬即可,登錄完將cookie保存。后面的訪問都帶著這個(gè)cookie即可。
      登錄部分代碼為:
      import requests import urllib.parse from http import cookiejar url=
      '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':'' }
      ##登錄函數(shù)。post請(qǐng)求api。返回cookie。后面攜帶這個(gè)cookie訪問接口
      def login(username,password): global data data['name']=username data['password'
      ]=password data=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
      <>爬取與存儲(chǔ)

      * 通過api的規(guī)則拼湊,抓下來的數(shù)據(jù)。我們主要需要評(píng)價(jià)星,和評(píng)論語句。
      * 使用Beautifulsoup進(jìn)行dom解析。使用xldr、xldw將數(shù)據(jù)寫入excel文件中。一個(gè)頁面20條。頁面url增加直到出現(xiàn)異常為止停止。

      主要代碼實(shí)現(xiàn): def getcomment(cookies): start=0 w = xlwt.Workbook(encoding='ascii') ws
      = w.add_sheet('sheet1') index=1 while True:##存入ws.write(hang,lie,value) try: url
      = 'https://movie.douban.com/subject/26794435/comments?start='+str(start)+
      '&limit=20&sort=new_score&status=P&comments_only=1' start+=20 req = 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').text print(name, star, comment
      ) ws.write(index,0,index) ws.write(index, 1, name) ws.write(index, 2, star) ws.
      write(index, 3, comment) index+=1 except Exception as e: print(e) break w.save(
      'nezha.xls')
      * 對(duì)于爬取的結(jié)過一覽

      <>可視化分析

      * 我們要對(duì)評(píng)分進(jìn)行統(tǒng)計(jì)、詞頻統(tǒng)計(jì)。還有就是生成詞云展示。而對(duì)應(yīng)的就是matplotlib、WordCloud庫。
      評(píng)分統(tǒng)計(jì):

      * 對(duì)于評(píng)分統(tǒng)計(jì),使用數(shù)組將上面的1,2,3,4,5,五個(gè)分?jǐn)?shù)段讀取時(shí)候?qū)懭?,根?jù)數(shù)據(jù)畫出餅狀圖分析即可。

      * 從上圖也可以知道,對(duì)于評(píng)分,大部分還是分布在5分和4分的,占比分別為41.2%和33.4%.而2分和1分時(shí)非常少!這足以說明這部片絕對(duì)不是爛片或者
      爭議不是很大。一部片不可能滿足所有人。存在不滿意的都在三分但依然能夠接受。所以從評(píng)分分布來看哪吒還是廣受支持的!
      詞頻統(tǒng)計(jì):

      * 根據(jù)jieba分詞。統(tǒng)計(jì)前面熱詞出現(xiàn)的次數(shù)。反應(yīng)觀眾共鳴點(diǎn)。

      * 可以看的出國產(chǎn)、大圣(大圣歸來對(duì)比).這些熱門話題直戳心頭!
      詞云展示:

      * 相比詞頻,詞云無法看到詞語的準(zhǔn)確數(shù)量,但是可以看的到更多詞匯、人們的評(píng)價(jià)。筆者這里通過count()類(map)對(duì)分詞結(jié)果進(jìn)行詞頻統(tǒng)計(jì)。統(tǒng)計(jì)完的詞頻排序
      前300個(gè)詞展示在2個(gè)詞云上。這些詞語的出現(xiàn)頻率均大于10.所以還是有所參考價(jià)值額。


      * 可以從詞云簡單分析出大家還是很滿意的,充滿濃濃封神色彩、動(dòng)畫風(fēng)格、不屈的爭斗、國產(chǎn)的激動(dòng)!在票房直逼30億的情況下!我、要去看了。
      代碼

      * 順便給出可視化分析部分代碼: import matplotlib.pyplot as plt import matplotlib import
      jiebaimport 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'] = False
      ##獲取分?jǐn)?shù)的餅圖。用數(shù)組獲取1-5分出現(xiàn)的次數(shù)def anylasescore(comment): score=[0,0,0,0,0,0] count=0
      for va in comment: try: score[int(va[2])]+=1 count+=1 except Exception as e:
      continue print(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/count explode[i]=score[i]/count/10 pie = 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'各個(gè)評(píng)分占比', fontsize=12) plt.legend(loc=0
      , bbox_to_anchor=(0.82, 1)) # 圖例 # 設(shè)置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=[]##詞語出現(xiàn)數(shù)量 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.6 plt.rcParams['font.sans-serif'] = ['SimHei'] #
      用來正常顯示中文標(biāo)簽 plt.figure(figsize=(8, 6)) ##指定圖像比例: 8:6 plt.bar(Xi, Yi, width, color
      ='blue', label='熱門詞頻統(tǒng)計(jì)', alpha=0.8,) plt.xlabel("詞頻")##標(biāo)簽 plt.ylabel("次數(shù)") plt.
      show() return def getciyun_most(map):##獲取詞云 x = [] y = [] for k, v in map.
      most_common(300):##300個(gè)詞云分2個(gè)詞云 x.append(k) y.append(v) xi=x[0:150] xi=' '.join(
      xi) print(xi) backgroud_Image = plt.imread('nezha.jpg') # 如果需要個(gè)性化詞云,哪吒背景圖 wc =
      WordCloud(background_color="white", width=1500, height=1200, #min_font_size=40,
      mask=backgroud_Image, font_path="simhei.ttf", max_font_size=150, # 設(shè)置字體最大值
      random_state=50, # 設(shè)置有多少種隨機(jī)生成狀態(tài),即有多少種配色方案 ) #
      字體這里有個(gè)坑,一定要設(shè)這個(gè)參數(shù)。否則會(huì)顯示一堆小方框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):## 分詞,去掉符號(hào)、換行等垃圾數(shù)據(jù) commnetstr='' c = Counter() low=Counter() index=0
      for va in comment: seg_list = jieba.cut(va[3],cut_all=False) index+=1 for x in
      seg_list: if len(x) > 1 and x != '\r\n': try: c[x]+=1 except: continue
      commnetstr+=va[3] for (k, v) in c.most_common(): if v<5: 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()
      <>結(jié)語

      * 如果自己需要可以到github下載項(xiàng)目完整代碼
      <https://github.com/javasmall/python/tree/master/%E7%88%AC%E8%99%AB/Include/%E8%B1%86%E7%93%A32>
      。當(dāng)然,只需要更改部分即可同理分析其他電影。
      * 項(xiàng)目依然有不夠完善地方,如影評(píng),對(duì)不同評(píng)分的平均不同處理、其他不同角度如評(píng)論用戶性別、地點(diǎn)等等等等,這里不做延申。
      * 如果對(duì)后端、爬蟲、數(shù)據(jù)結(jié)構(gòu)算法等感性趣歡迎關(guān)注我的個(gè)人公眾號(hào)交流(關(guān)注一波十年少):bigsai?持續(xù)輸出分享!

      ?
      ?

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          t66y地址1地址2地址3 | 惩罚揉捏小豆豆不让高潮 | 俺去操在线视频 | 黄色短视频在线播放 | 三级片国产在线观看 | 国产一级a毛一级a毛片视频黑人 | 亚洲天堂男人 | 无人区乱码1区2区3区在线 | 一级毛片全部免费播放特黄 | 欧美久久国产精品 |