首页 编程教程正文

B站弹幕云python源码

piaodoo 编程教程 2020-02-22 22:16:02 1377 0 python教程

本文来源吾爱破解论坛

本帖最后由 麦米尔加弗德 于 2020-2-15 20:01 编辑

起因是看到了https://www.52pojie.cn/thread-1105570-1-1.html这个帖子在家也没有事,就自己也弄了一个,就当练手,偷懒直接借鉴弹幕的xpath了


全自动,你安装了需要的模块,输入正确的连接就可以使用了
字体一定要在c盘,一般人不会改盘符吧
最后的自动打开图片是我自己想的,网上都是瞎几把说,查资料要死了,最后还是抄自己以前的代码哈哈哈
[Python] 纯文本查看 复制代码

import re
import requests
import os
from lxml import etree
from wordcloud import WordCloud

class word_cloud:
    def __init__(self):
        self.path = 'bilibili弹幕词云制作v1.5'
        self.rooturl = input('请输入视频弹幕网址并按回车键:\n')
        
    def start(self):
        #获取av号
        av = self.get_av()
        #获取xml地址,视频标题
        xml_url, title = self.get_xml_url_title()
        #从xml地址提取全部弹幕
        danmulist = self.get_danmu(xml_url)
        #开始制作词云
        self.start_make_wordcloud(danmulist, av, title)

    def get_av(self):
        av = re.search(r'/av(\d+)', self.rooturl).group(1)
        return av

    def html_request(self, url):
        headers = {'User-Agent': 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14'}
        try:
            response = requests.get(url, headers = headers)
            return response.content
        except:
            print('链接输入有误,请检查后输入')

    def get_xml_url_title(self):
        content = self.html_request(self.rooturl).decode()
        cid = re.search(r'cid=(\d+)&aid=', content).group(1)
        xml_url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=%s'%(cid)
        title = etree.HTML(content).xpath('//*[@id="viewbox_report"]/h1/span/text()')[0]
        return xml_url,title
    
    def get_danmu(self, xml_url):
        content = self.html_request(xml_url)
        danmu = etree.HTML(content).xpath('//d/text()')[:-1]
        return danmu

    def make_dir(self, av):
        #根据路径创建文件夹
        path = '%s/%s'%(self.path, av)
        if not os.path.exists(path):
            os.makedirs(path)
            print('创建目录成功词云已保存至%s'%(path))
        else:
            print('目录存在,词云已保存至%s'%(path))
        return path
            
    def start_make_wordcloud(self, danmulist, av, title):
        danmu = ' '.join(danmulist)
        path = self.make_dir(av)
        #设置词云图片的参数
        wdcld = WordCloud(font_path='‪C:\Windows\Fonts\msyh.ttc', scale=20, max_words=30, prefer_horizontal=1.0)
        #font_path          修改成字体的路径,这里默认是微软雅黑,可以自己修改
        #scale              用于设置图片的清晰度
        #maxwords           用于设置显示最大词汇量
        #prefer_horizontal  用于设置横向字符在所有字符中的占比,这里设置为1,意为100%字符都为横向字符
        wdcld.generate(danmu)
        #这里输出词云图片,参数为文件名和相应地址
        name = '%s.jpg' % (title)
        wdcld.to_file('%s/%s' % (path, name))
        #自动打开图片
        os.chdir(path)
        os.system(name)

if __name__ == "__main__":
    try:
        word_cloud().start()
        print('运行成功,词云已经生成')
    except:
        print('运行失败')



运行结果
上传图片不会用了==
没有合法的文件被上传,俺不清楚

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/8035.html

搜索