用Python做垃圾分类
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 數據。
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請求、解析、保存彈幕數據
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' # 請求彈幕數據 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我們可以自行選擇一張圖片,并基于此圖片來生成一張定制的詞云圖。我們可以自定義一些詞云樣式,代碼如下:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' # 解析背景圖片 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))最后來看看我們效果圖
總結
以上是生活随笔為你收集整理的用Python做垃圾分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Python学分析 - 单因素方差分析
- 下一篇: websocket python爬虫_p