0 引言
紙巾再濕也是干垃圾?瓜子皮再干也是濕垃圾??最近大家都被垃圾分類折磨的不行,傻傻的你是否拎得清?自2019.07.01開始,上海已率先實(shí)施垃圾分類制度,違反規(guī)定的還會(huì)面臨罰款。
為了避免巨額損失,我決定來b站學(xué)習(xí)下垃圾分類的技巧。為什么要來b站,聽說這可是當(dāng)下年輕人最流行的學(xué)習(xí)途徑之一。
打開b站,搜索了下垃圾分類,上來就被這個(gè)標(biāo)題嚇(吸)到(引)了:在上海丟人的正確姿勢(shì)。
當(dāng)然,這里的丟人非彼丟人,指的是丟垃圾的丟。
點(diǎn)開發(fā)現(xiàn),原來是一段對(duì)口相聲啊,還是兩個(gè)萌妹子(AI)的對(duì)口相聲,瞬間就來了興趣,闡述的是關(guān)于如何進(jìn)行垃圾分類的。
原視頻鏈接:https://www.bilibili.com/video/av57129646?from=search&seid=9101123388170190749
看完一遍又一遍,簡(jiǎn)直停不下來了,已經(jīng)開啟了洗腦模式,畢竟視頻很好玩,視頻中的彈幕更是好玩!
獨(dú)樂樂不如眾樂樂,且不如用Python把彈幕保存下來,做個(gè)詞云圖?就這么愉快地決定了!
1 環(huán)境
操作系統(tǒng):Windows
Python版本:3.7.3
2 需求分析
我們先需要通過開發(fā)調(diào)試工具,查詢這條視頻的彈幕的 cid 數(shù)據(jù)。
拿到 cid 之后,再填入下面的鏈接中。
http://comment.bilibili.com/{cid}.xml
打開之后,就可以看到該視頻的彈幕列表。
有了彈幕數(shù)據(jù)后,我們需要先將解析好,并保存在本地,方便進(jìn)一步的加工處理,如制成詞云圖進(jìn)行展示。
3 代碼實(shí)現(xiàn)
在這里,我們獲取網(wǎng)頁的請(qǐng)求使用 requests 模塊;解析網(wǎng)址借助 beautifulsoup4 模塊;保存為CSV數(shù)據(jù),這里借用 pandas 模塊。因?yàn)槎际堑谌侥K,如環(huán)境中沒有可以使用 pip 進(jìn)行安裝。
- pip install requests
- pip install beautifulsoup4
- pip install lxml
- pip install pandas
模塊安裝好之后,進(jìn)行導(dǎo)入
- import requests
- from bs4 import BeautifulSoup
- import pandas as pd
請(qǐng)求、解析、保存彈幕數(shù)據(jù)
- # 請(qǐng)求彈幕數(shù)據(jù)
- url = 'http://comment.bilibili.com/99768393.xml'
- html = requests.get(url).content
- # 解析彈幕數(shù)據(jù)
- 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}
- # 將彈幕數(shù)據(jù)保存在本地
- br = pd.DataFrame(comments_dict)
- br.to_csv('barrage.csv', encoding='utf-8')
接下來,我們就對(duì)保存好的彈幕數(shù)據(jù)進(jìn)行深加工。
制作詞云,我們需要用到 wordcloud 模塊、matplotlib 模塊、jieba 模塊,同樣都是第三方模塊,直接用 pip 進(jìn)行安裝。
- pip install wordcloud
- pip install matplotlib
- pip install jieba
模塊安裝好之后,進(jìn)行導(dǎo)入,因?yàn)槲覀冏x取文件用到了 panda 模塊,所以一并導(dǎo)入即可
- from wordcloud import WordCloud, ImageColorGenerator
- import matplotlib.pyplot as plt
- import pandas as pd
- import jieba
我們可以自行選擇一張圖片,并基于此圖片來生成一張定制的詞云圖。我們可以自定義一些詞云樣式,代碼如下:
- # 解析背景圖片
- mask_img = plt.imread('Bulb.jpg')
- '''設(shè)置詞云樣式'''
- wc = WordCloud(
- # 設(shè)置字體
- font_path='SIMYOU.TTF',
- # 允許最大詞匯量
- max_words = 2000,
- # 設(shè)置最大號(hào)字體大小
- max_font_size = 80,
- # 設(shè)置使用的背景圖片
- mask = mask_img,
- # 設(shè)置輸出的圖片背景色
- background_color=None, mode="RGBA",
- # 設(shè)置有多少種隨機(jī)生成狀態(tài),即有多少種配色方案
- random_state=30)
接下來,我們要讀取文本信息(彈幕數(shù)據(jù)),進(jìn)行分詞并連接起來:
- # 讀取文件內(nèi)容
- br = pd.read_csv('barrage.csv', header=None)
- # 進(jìn)行分詞,并用空格連起來
- text = ''
- for line in br[1]:
- text += ' '.join(jieba.cut(line, cut_all=False))
最后來看看我們效果圖
有沒有感受到大家對(duì)垃圾分類這個(gè)話題的熱情,莫名喜感涌上心頭。
4 后記
這兩個(gè)AI萌妹子說的相聲很不錯(cuò),就不知道郭德綱看到這個(gè)作品會(huì)作何感想。回到垃圾分類的話題,目前《上海市生活垃圾管理?xiàng)l例》已正式施行,不在上海的朋友們也不要太開心,住建部表示,全國(guó)其它46個(gè)重點(diǎn)城市也即將體驗(yàn)到……
以上所述是小編給大家介紹的使用Python做垃圾分類的原理及實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)我們網(wǎng)站的支持! 如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!