最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 爬取B站马保国弹幕制作词云

    正文概述 掘金(isu)   2020-11-23   355

    有人的地方就有江湖

    爬取B站马保国弹幕制作词云

    北京时间5月17日,号称拥有马氏三连鞭闪电五连鞭的浑元形意太极拳宗师马保国,在山东淄博被一位50岁的民间武术爱好者王庆民30秒KO。如果你还不了解这件震惊中国武林圈的大事,建议你恶补一下这个视频。

    我几乎是本能的去b站看了看,播放量已经达到了一个恐怖的境地

    爬取B站马保国弹幕制作词云

    爬取B站马保国弹幕制作词云

    爬取B站马保国弹幕制作词云

    1. 先用jsoup把弹幕爬下来

    依赖

    <!-- 爬虫相关Jar包依赖 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.10-FINAL</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.3</version>
    </dependency>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.11.3</version>
    </dependency>
    

    代码

    package com.example.jm.jmm.util.jsoup;
    
    import com.alibaba.fastjson.JSONObject;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * @Description: 
     * @Param: 爬取b站弹幕
     * @Return: 
     * @Author: Jiangsy
     * @Date: 2020/11/20
    **/
    public class BiliUtil {
    
        public static void main(String[] args) throws Exception{
            //视频号
            String av = "BV1HJ411L7DP";
            String url = "https://api.bilibili.com/x/player/pagelist?bvid="+av+"&jsonp=jsonp";
            String result = HttpClientUtil.doGet(url);
            //获取cid
            String cid = JSONObject.parseObject(result).getJSONArray("data").getJSONObject(0).getString("cid");
            System.out.println("cid:{}"+cid);
            //获取弹幕打印到文件中
            getContent(cid);
        }
    
        /**
         * @Description:获取弹幕内容
         * @Param: [cid]
         * @Return: void
         * @Author: Jiangsy
         * @Date: 2020/11/20
        **/
        public static void getContent(String cid) throws Exception{
            CloseableHttpClient closeableHttpClient = HttpClients.createDefault() ;
            HttpGet httpGet1 = new HttpGet("http://comment.bilibili.com/"+cid+".xml");
            CloseableHttpResponse httpResponse1 = closeableHttpClient.execute(httpGet1) ;
            String en = EntityUtils.toString(httpResponse1.getEntity(), "UTF-8");
            String c = "\">(.*?)<" ;
            Pattern a = Pattern.compile(c);
            Matcher m = a.matcher(en);
            File file = new File("/project/11.txt");
            if(file.exists()){
                file.delete();
            }
            OutputStream fos=new FileOutputStream("/project/11.txt");
            while(m.find()){
                String speak = m.group().replace("\">","") ;
                speak = speak.replace("<","") ;
                System.out.println(speak);
                String str=speak;
                str+="";
                fos.write(str.getBytes());
            }
        }
    }
    

    python的WordCloud生成词云

    import jieba
    from matplotlib import pyplot as plt
    from wordcloud import WordCloud
    from PIL import Image
    import numpy as np
    
    path = r'ciyun.png'
    font = r'/System/Library/Fonts/Hiragino Sans GB.ttc'
    
    text = open('/project/11.txt', 'r', encoding='utf-8').read()
    cut = jieba.cut(text)  #分词
    string = ' '.join(cut)
    print(len(string))
    img = Image.open('ciyun/22.png') #打开图片
    img_array = np.array(img) #将图片装换为数组
    stopword=['小米']  #设置停止词,也就是你不想显示的词,这里这个词是我前期处理没处理好,你可以删掉他看看他的作用
    wc = WordCloud(
        background_color='white',
        width=1000,
        height=800,
        mask=img_array,
        font_path=font,
        stopwords=stopword
    )
    wc.generate_from_text(string)#绘制图片
    plt.imshow(wc)
    plt.axis('off')
    plt.figure()
    plt.show()  #显示图片
    wc.to_file('new.png')  #保存图片
    

    效果图

    爬取B站马保国弹幕制作词云

    the end


    起源地下载网 » 爬取B站马保国弹幕制作词云

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元