0 引言
紙巾再濕也是干垃圾?瓜子皮再干也是濕垃圾??最近大家都被垃圾分類折磨的不行,傻傻的你是否拎得清?自2019.07.01開始,上海已率先實施垃圾分類制度,違反規定的還會面臨罰款。
為了避免巨額損失,我決定來b站學習下垃圾分類的技巧。為什么要來b站,聽說這可是當下年輕人最流行的學習途徑之一。
打開b站,搜索了下垃圾分類,上來就被這個標題嚇(吸)到(引)了:在上海丟人的正確姿勢。
當然,這里的丟人非彼丟人,指的是丟垃圾的丟。
點開發現,原來是一段對口相聲啊,還是兩個萌妹子(AI)的對口相聲,瞬間就來了興趣,闡述的是關于如何進行垃圾分類的。
原視頻鏈接:https://www.bilibili.com/video/av57129646?from=search&seid=9101123388170190749
看完一遍又一遍,簡直停不下來了,已經開啟了洗腦模式,畢竟視頻很好玩,視頻中的彈幕更是好玩!
獨樂樂不如眾樂樂,且不如用Python把彈幕保存下來,做個詞云圖?就這么愉快地決定了!
1 環境
操作系統:Windows
Python版本:3.7.3
2 需求分析
我們先需要通過開發調試工具,查詢這條視頻的彈幕的 cid 數據。
拿到 cid 之后,再填入下面的鏈接中。
http://comment.bilibili.com/{cid}.xml
打開之后,就可以看到該視頻的彈幕列表。
有了彈幕數據后,我們需要先將解析好,并保存在本地,方便進一步的加工處理,如制成詞云圖進行展示。
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))
最后來看看我們效果圖
有沒有感受到大家對垃圾分類這個話題的熱情,莫名喜感涌上心頭。
4 后記
這兩個AI萌妹子說的相聲很不錯,就不知道郭德綱看到這個作品會作何感想。回到垃圾分類的話題,目前《上海市生活垃圾管理條例》已正式施行,不在上海的朋友們也不要太開心,住建部表示,全國其它46個重點城市也即將體驗到……
源碼,請點擊此處。
以上所述是小編給大家介紹的使用Python做垃圾分類的原理及實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對我們網站的支持! 如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!