震惊!垃圾分类居然能用Python搞定!

目录
0 引言
1 环境
2 需求分析
3 代码实现
4 后记

0 引言

纸巾再湿也是干垃圾?瓜子皮再干也是湿垃圾??最近大家都被垃圾分类折磨的不行,傻傻的你是否拎得清????自2019.07.01开始,上海已率先实施垃圾分类制度,违反规定的还会面临罚款。

为了避免巨额损失,我决定来b站学习下垃圾分类的技巧。为什么要来b站,听说这可是当下年轻人最流行的学习途径之一。

打开b站,搜索了下垃圾分类,上来就被这个标题吓(吸)到(引)了:在上海丢人的正确姿势。
649191-20190702112221079-2053889639.png

当然,这里的丢人非彼丢人,指的是丢垃圾的丢。

点开发现,原来是一段对口相声啊,还是两个萌妹子(AI)的对口相声,瞬间就来了兴趣,阐述的是关于如何进行垃圾分类的。
649191-20190702112241214-1867519171.png

649191-20190702112249173-1756039689.png

649191-20190702112259887-1040483686.png

原视频链接:https://www.bilibili.com/video/av57129646?from=search&seid=9101123388170190749

看完一遍又一遍,简直停不下来了,已经开启了洗脑模式,毕竟视频很好玩,视频中的弹幕更是好玩!

独乐乐不如众乐乐,且不如用Python把弹幕保存下来,做个词云图?就这么愉快地决定了!

1 环境

操作系统:Windows

Python版本:3.7.3

2 需求分析

我们先需要通过开发调试工具,查询这条视频的弹幕的 cid 数据。
649191-20190702112309757-1081963677.png

拿到 cid 之后,再填入下面的链接中。

http://comment.bilibili.com/{cid}.xml

打开之后,就可以看到该视频的弹幕列表。

649191-20190702112334243-555767333.png

有了弹幕数据后,我们需要先将解析好,并保存在本地,方便进一步的加工处理,如制成词云图进行展示。

3 代码实现

在这里,我们获取网页的请求使用 requests 模块;解析网址借助 beautifulsoup4 模块;保存为CSV数据,这里借用 pandas 模块。因为都是第三方模块,如环境中没有可以使用 pip 进行安装。

pip install requests
pip install beautifulsoup4
pip install lxml
pip install pandas

模块安装好之后,进行导入

import requests
from bs4 import BeautifulSoup
import pandas as pd

请求、解析、保存弹幕数据

# 请求弹幕数据
url = 'http://comment.bilibili.com/99768393.xml'
html = requests.get(url).content# 解析弹幕数据
html_data = str(html, 'utf-8')
bs4 = BeautifulSoup(html_data, 'lxml')
results = bs4.find_all('d')
comments = [comment.text for comment in results]
comments_dict = {'comments': comments}# 将弹幕数据保存在本地
br = pd.DataFrame(comments_dict)
br.to_csv('barrage.csv', encoding='utf-8')

接下来,我们就对保存好的弹幕数据进行深加工。

制作词云,我们需要用到 wordcloud 模块、matplotlib 模块、jieba 模块,同样都是第三方模块,直接用 pip 进行安装。

pip install wordcloud
pip install matplotlib
pip install jieba

模块安装好之后,进行导入,因为我们读取文件用到了 panda 模块,所以一并导入即可

from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba

我们可以自行选择一张图片,并基于此图片来生成一张定制的词云图。我们可以自定义一些词云样式,代码如下:

# 解析背景图片
mask_img = plt.imread('Bulb.jpg')'''设置词云样式'''
wc = WordCloud(# 设置字体  font_path='SIMYOU.TTF',# 允许最大词汇量max_words = 2000,# 设置最大号字体大小max_font_size = 80,# 设置使用的背景图片mask = mask_img,# 设置输出的图片背景色background_color=None, mode="RGBA",# 设置有多少种随机生成状态,即有多少种配色方案random_state=30)

接下来,我们要读取文本信息(弹幕数据),进行分词并连接起来:

# 读取文件内容
br = pd.read_csv('barrage.csv', header=None)# 进行分词,并用空格连起来
text = ''
for line in br[1]:text += ' '.join(jieba.cut(line, cut_all=False))

最后来看看我们效果图
649191-20190702112353354-746979672.png

有没有感受到大家对垃圾分类这个话题的热情,莫名喜感涌上心头。

4 后记

这两个AI萌妹子说的相声很不错,就不知道郭德纲看到这个作品会作何感想。回到垃圾分类的话题,目前《上海市生活垃圾管理条例》已正式施行,不在上海的朋友们也不要太开心,住建部表示,全国其它46个重点城市也即将体验到……

公众号「Python专栏」后台回复「垃圾分类」,获取本文全套代码。

转载于:https://www.cnblogs.com/moonhmily/p/11119513.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中 try用法,Java里try catch的简单用法

优质回答 回答者:temps1991Java里try catch的简单用法:1、trycatch程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理。然后执行catch块后面的语句扩展部分:1、trycatchfinally程序的流程是&…

免费试用 Mobile Me

曾经尝试着注册过Mobile me,发现居然试用也要提供信用卡,而且地区选项里根本就没有中国,故愤然弃之。 今天忽然想再尝试一把,毕竟把mac、iphone,和即将到来的ipad连在一起是挺有意思的事情。 打开http://www.apple.com…

php call()函数,PHP中__call()方法详解

前面给大家介绍了《__construct(),类的构造函数》《__destruct(),类的析构函数》,下面继续给大家介绍PHP中__call()方法。__call(),在对象中调用一个不可访问方法时调用。该方法有两个参数,第一个参数 $function_name …

工作398-关于e.currentTarget.dataset的取值。

wxjs代码&#xff1a;GetAction: function (e) {var action e.currentTarget.dataset.action;console.log(action); //father}wxml代码&#xff1a;<view data-action"father" bindtap"GetAction"><image src"https://ss0.baidu.com/6ONWsj…

Postman: Test

Tests 参考&#xff1a;Writing Tests Testing examples 这里写测试用例&#xff0c;进行一些判断等等。即处理断言 下面新建了两个测试用例&#xff0c;名字分别是”Status code is 200“ 、”Status code name has string“。 “responseCode.code 200” 返回 True 或者 Fal…

nginx php怎么配置伪静态,nginx rewrite 伪静态配置参数和使用例子

正则表达式匹配&#xff0c;其中&#xff1a;* ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配&#xff0c;其中&#xff1a;* -f和!-f用来判断是否存在文件* -d和!-d用来判断是否存在目录* -e和!-e用来判断是否…

工作399-openType=“getUserInfo“ lang=“zh_CN“ bindgetuserinfo=“getUserInfo“

获取用户信息组件介绍组件变化&#xff1a;open-type 属性增加 getUserInfo &#xff1a;用户点击时候会触发 bindgetuserinfo 事件。新增事件 bindgetuserinfo &#xff1a;当 open-type 为 getUserInfo 时&#xff0c;用户点击会触发。可以从事件返回参数的detail字段中获取到…

比IETEST更好用的浏览器兼容性测试软件[绿色]

Xenocode Browser Sandbox 改变了基于 Windows 的浏览器兼容测试工具的游戏规则&#xff0c;只需点一下鼠标&#xff0c;就会直接打开一堆各式各样的浏览器窗口&#xff0c;你可以在不同版本的 IE, Firefox, Google Chrome, Safari 进行测试。是真正的测试&#xff0c;不是屏幕…

oracle函数 sysdate

【功能】&#xff1a;返回当前日期。 【参数】&#xff1a;没有参数&#xff0c;没有括号 【返回】&#xff1a;日期 【示例】select sysdate hz from dual; 返回&#xff1a;2008-11-5转载于:https://www.cnblogs.com/fanweisheng/p/11119836.html

php守护进程热更新,服务器编程--守护进程

守护(Daemon)进程又叫作“精灵进程”&#xff0c;虽然守护进程这个名字更为常用&#xff0c;但是个人感觉还是精灵进程较为机灵可爱些。服务器进程一般都是守护进程&#xff0c;这类进程的一个显著特点就是无交互地在后台进程。注意&#xff1a;这里所说的无交互并不是说真的不…

打开eclipse出现JVM terminated.Exit Code=-1错误的解决办法

&#xff30;&#xff33;&#xff1a;还有一种情况就是&#xff2a;&#xff36;&#xff2d;版本号太低&#xff0c;这个要重新安装后将&#xff2a;&#xff24;&#xff2b;目录置于&#xff4f;&#xff52;&#xff41;&#xff43;&#xff4c;&#xff45;前面&#xf…

【期外】 (一)关于LSH :局部敏感哈希算法

LSH是我同学的名字&#xff0c;平时我会亲切的称呼他为离骚&#xff0c;老师好&#xff0c;左移&#xff08;leftshift&#xff09;&#xff0c;小骚骚之类的&#xff0c;最近他又多了一个新的外号&#xff1a;局部敏感哈希&#xff08;Locally sensitive hashing)。 好了&…

java 数据库连接实例,Java连接各种数据库的实例

Java连接各种数据库的实例1、Oracle8/8i/9i数据库(thin模式)以下为引用的内容&#xff1a;Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();String url"jdbc:Oracle:thin:localhost:1521:orcl";//orcl为数据库的SIDString user"test…

python2和python3解释器的区别

python2和python3解释器的区别 1.input的区别 Python2中有raw_input和input. 他的raw_input就相当于Python3中的input,他们把用户输出的数据全部转化为str字符串类型. 他的input让用户输出的是用户输出数据的原始类型,用户输入int类型,他显示的也是int类型,以此类推 2.整型的区…

用于主题检测的临时日志(c48534c5-686f-461e-811f-a15a2f265756 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...

这是一个未删除的临时日志。请手动删除它。(34a657d4-0fcd-421a-9d75-e80f31602ac5 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)转载于:https://www.cnblogs.com/wangshuai/archive/2010/07/31/1789347.html

mysql n 存储结构,MySQL体系结构和存储引擎概述

一、定义数据库和实例数据库&#xff1a;物理操作系统文件或其他形式文件类型的集合。数据库文件可以是frm、MYD、ibd 结尾的文件。从概念上来说&#xff0c;数据库是文件的集合&#xff0c;是依照某种数据模型组织起来并存放于二级存储器的数据集合&#xff1b;实例&#xff1…

常见排序查询算法Java代码实现

1. 排序算法代码实现 /*** ascending sort* 外层循环边界条件&#xff1a;总共需要冒泡的轮数--每一轮都将最大或最小的数冒泡到最后* 内层循环边界条件&#xff1a;冒泡数字移动的边界--最终数字需冒泡到此处* 时间复杂度&#xff1a;O(n^2)* param arr*/ public static vo…

java jsp 传递参数的方法,jsp传参方法小结

一、jsp页面到jsp页面##1.从a.jsp传递//将参数值为aaa&#xff0c;参数名test的参数传递到b.jsp页面中2.在b.jsp接收System.out.println("test的值是"test); %>二、jsp页面到servlet##1.首先需要新建一个Servlet&#xff0c;包的层次结构如下&#xff1a;demo--sr…

工作403-修改input里面的文本框值

1.style中需要作如下修改<style>input::-webkit-input-placeholder {/* placeholder颜色 */color: #aab2bd;/* placeholder字体大小 */font-size: 12px;} </style>2.HTML中的代码如<input type"text" placeholder"输入你想要查找的内容" …