鱼C论坛

 找回密码
 立即注册
查看: 43|回复: 1

[作品展示] b站弹幕密度排序,寻找高能瞬间

[复制链接]
最佳答案
27 
发表于 2019-2-11 15:48:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. import json
  2. import re
  3. from collections import Counter

  4. import requests
  5. from lxml import etree
  6. from fake_useragent import UserAgent


  7. class Danmu_Analyser:
  8.     def __init__(self, url):
  9.         user_agent = UserAgent()
  10.         self.url = url
  11.         self.headers = {
  12.             'User-Agent':user_agent.random,
  13.             'Referer': 'https://www.bilibili.com/video/av21786264/?p=10',
  14.             'Cookie': 你的b站cookie
  15.         }

  16.     def transform_date(self, t):
  17.         m, s = divmod(int(t), 60)
  18.         h, m = divmod(m, 60)
  19.         result = "%02d:%02d:%02d" % (h, m, s)
  20.         return result

  21.     def get_cid(self):
  22.         text = requests.get(self.url, headers=self.headers).content.decode()
  23.         result = re.findall(r'cid":(\d+?),', text)
  24.         return result

  25.     def get_data(self):
  26.         data = []
  27.         for i in self.get_cid():
  28.             new_url = "https://comment.bilibili.com/{}.xml".format(i)
  29.             html = requests.get(new_url).content.decode()
  30.             html = bytes(bytearray(html, encoding='utf-8'))
  31.             select = etree.HTML(html)
  32.             data_dict = {}
  33.             data_dict['danmu'] = select.xpath('//d/text()')
  34.             data_dict['send_time'] = select.xpath('//d/@p')
  35.             data.append(data_dict)
  36.         with open("danmu.json", "w") as f:
  37.             f.write(json.dumps(data))

  38.     def data_deal(self):
  39.         all_data = []
  40.         with open("danmu.json", "r") as f:
  41.             f = json.loads(f.read())
  42.             danmu = f[0]["danmu"]
  43.             send_time = f[0]["send_time"]
  44.             data = list(zip(danmu, send_time))
  45.             for i in data:
  46.                 t = i[1].split(",")[0].split(".")[0]
  47.                 t = self.transform_date(t)
  48.                 data_dict = {}
  49.                 data_dict["send_time"] = t
  50.                 data_dict["danmu"] = i[0]
  51.                 all_data.append(data_dict)
  52.         return all_data

  53.     def analyse(self):
  54.         data = self.data_deal()
  55.         send_time = [i["send_time"] for i in data]
  56.         return Counter(send_time)

  57. if __name__ == "__main__":
  58.     danmu_analyser = Danmu_Analyser("https://www.bilibili.com/video/av42805624?t=1143")
  59.     danmu_analyser.get_data()
  60.     r = danmu_analyser.analyse()
  61.     print("弹幕密度排序:", r)
复制代码


                               
登录/注册后可看大图


                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
1440 
发表于 2019-2-11 16:09:39 | 显示全部楼层
阿伟死了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2019-2-24 03:06

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表