<sub id="11zx5"></sub>

      <address id="11zx5"></address>

      <sub id="11zx5"></sub>

        <sub id="11zx5"></sub>

        <sub id="11zx5"></sub><sub id="11zx5"></sub>
        <sub id="11zx5"></sub>
          合作QQ: 732055019

          基于阿里云平臺的大數據教學案例 —— B站彈幕數據分析

          貴客云 2020-10-03 08:01 閱讀 74
          簡介: 實驗基于所學的大數據處理知識,結合阿里云大數據相關產品,分組完成一個大數據分析項目,數據集可以使用開源數據集或自行爬取,最終完成一個完整的實驗報告: 1、 能夠使用阿里云大數據相關產品完成數據分析、數據建模與模型優化 2、 能夠基于分析結構構建可視化門戶或可視化大屏,分析和呈現不少于5個 3、 分析案例有實用價值并能夠形成有效結論 4、 能夠將開源技術與阿里云產品結合,綜合利用提升開發效率,降低成本 5、 能夠完成數據分析報告和結果展示

          一、實驗題目


          基于所學的大數據處理知識,結合阿里云大數據相關產品,分組完成一個大數據分析項目,數據集可以使用開源數據集或自行爬取,最終完成一個完整的實驗報告:
          1、 能夠使用阿里云大數據相關產品完成數據分析、數據建模與模型優化
          2、 能夠基于分析結構構建可視化門戶或可視化大屏,分析和呈現不少于5個
          3、 分析案例有實用價值并能夠形成有效結論
          4、 能夠將開源技術與阿里云產品結合,綜合利用提升開發效率,降低成本
          5、 能夠完成數據分析報告和結果展示

          二、實驗目的


          靈活利用所學的阿里云大數據相關技術和大數據處理知識,綜合完整地完成一個大數據分析項目。

          三、實驗難點


          SQL語句有點難,機器學習預測不好調整。數據太多人工清洗有點難度。

          四、實驗過程(截圖)


          首先要觀察數據集的各個屬性,了解數據的梗概和特點。本次,我們研究的是B站彈幕文化,機器應用場景。
          爬取數據的代碼如下:

          import csv
          import time
          
          import requests
          from bs4 import BeautifulSoup
          url = "https://api.bilibili.com/x/v1/dm/list.so?oid=132084205"
          csv_headers = ['彈幕內容','發送位置','發送時間','彈幕類型','彈幕字體大小','發送者id']
          # print(response.content)
          # divs = soup.find_all(_class = "threadlist_title pull_left j_th_tit ")
          # for div in divs:
          #     print(str(div))
          #     print(div.a["href"])
          headers = {
              'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0',
              'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
              'Accept-Language': 'en-US,en;q=0.5',
              'Accept-Encoding': 'gzip, deflate',
              'Connection': 'close'
          }
          def get_page(url):
              # threadLock.acquire()
              # start_request = True
              NETWORK_STATUS = True
              response = requests.get(url,headers=headers,verify=True,timeout=20)
              # threadLock.release()
              if response.status_code == 200:
                  # start_request = False
                  return response.content
              else:
                  print('error')
          
          def parse_page(html):
              soup = BeautifulSoup(html,'lxml')
              ds = soup.find_all('d')
              # print(len(ds))
              for d in ds:
                  rows = []
                  text = d.text
                  p = str(d['p'])
                  attrs = p.split(',')
                  time_sec = int(attrs[0].split('.')[0])
                  time_int = int(time_sec/60)
                  time_float = time_sec%60
                  mytime = str(time_int) + '分' + str(time_float) + '秒'
                  # print(time)
                  if int(attrs[1]) == 4:
                      type = "底部彈幕"
                  elif int(attrs[1]) == 5:
                      type = "頂部彈幕"
                  elif int(attrs[1]) == 6:
                      type = "逆向彈幕"
                  elif int(attrs[1]) == 7:
                      type = "精準定位"
                  elif int(attrs[1]) == 8:
                      type = "高級彈幕"
                  else:
                      type = "普通彈幕"
                  fint_size = attrs[2]
                  timeArray = time.localtime(int(attrs[4]))
                  date = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
                  id = attrs[6]
                  rows.append([text,mytime,date,type,fint_size,id])
                  save_to_csv('b站彈幕(BV1He41147Rs).csv',rows)
                  print(text + ' ' + mytime + ' ' + date + ' ' + type + ' ' + fint_size + ' ' + id)
          
          
          def save_to_csv(csv_name,rows):
              # is_exist = False
              # if os.path.exists(csv_name):
              #     is_exist = True
              with open(csv_name, 'a',encoding='utf-8',newline='')as f:
                  # if is_exist is False:
                  #     f_csv = csv.writer(f)
                  #     f_csv.writerow(csv_headers)
                  f_csv = csv.writer(f)
                  f_csv.writerows(rows)
          
          def main():
              html = get_page(url)
              # print(html)
              parse_page(html)
          
          if __name__ == '__main__':
              with open('b站彈幕(BV1He41147Rs).csv', 'a',encoding='utf-8-sig',newline='')as f:
                  # if is_exist is False:
                  #     f_csv = csv.writer(f)
                  #     f_csv.writerow(csv_headers)
                  f_csv = csv.writer(f)
                  f_csv.writerow(csv_headers)
              main()

          將相關表和數據導入DataWorks,并進行相關部署。


          各種彈幕的發送時間

          通過統計各類彈幕發送時間來確定哪個時間段的內容更受觀眾的歡迎。


          各個彈幕的大小
          通過統計各個彈幕發送的不同大小可以看出更多的人會選擇使用移動觀看,移動端觀看BILIBILI已經很普遍了


          各個彈幕的發送位置
          可以看出更多的人發的是普通彈幕,少數人會發送更加精準的頂部彈幕和底部彈幕。



          機器學習建模及預測



          混淆矩陣


          精準率=tp/(tp+fp)=100/(10+100)=0.909
          召回率=tp/(tp+fn)=100/(100+5)=0.95


          五、 結論


          通過實驗,我們組發現更多的人還是選擇在移動端觀看視頻,移動觀看視頻已經是人們的首選了。
          其次我們發現人們更喜歡新蘭CP和酒廠,因為在這個時間段發送的彈幕最多,因此我們可以認為在有這兩個作為封面時,可以吸引更多的人觀看視頻,或者以這幾個人作為周邊可以賣的會更好。
          最后我們發現,更多的人發送的彈幕是普通彈幕,而極少數人會選在固定的時間發送頂部彈幕或者底部彈幕,證明大多數人不會去特意調整彈幕位置。

          作者:mavisliky

          原文鏈接

          本文為阿里云原創內容,未經允許不得轉載。

          分類: 科技 關鍵詞: 可視化大屏
          原文 投訴 置頂 分享
          推薦
          快訊
          劇透網 展會網 區塊鏈 鄉村游
          游戲運營 營銷軟件 行業信息

          營銷 微信營銷 QQ營銷 網絡營銷 自媒體營銷 產品推廣 營銷策劃 媒體投放 電商營銷 抖音營銷 科技 大數據 人工智能 統計分析 智能硬件 工業互聯網 物聯網
          財經 投資理財 量化交易 投資理論 價值投資 短期投資 理財App 基金定投 指數基金 理財課程 理財知識 理財產品 理財項目 數字貨幣

          版權所有©貴客云    QQ732055019 魯ICP備08109250號-1

          魯公網安備 37020302371242號

          三级黄影片大全性爱视频 - 视频 - 在线观看 - 影视资讯 - 心悦网