震驚!垃圾分類居然能用Python搞定!

目錄
0 引言
1 環境
2 需求分析
3 代碼實現
4 後記

0 引言

紙巾再濕也是干垃圾?瓜子皮再干也是濕垃圾??最近大家都被垃圾分類折磨的不行,傻傻的你是否拎得清?😭😭😭自2019.07.01開始,上海已率先實施垃圾分類制度,違反規定的還會面臨罰款。

為了避免巨額損失,我決定來b站學習下垃圾分類的技巧。為什麼要來b站,聽說這可是當下年輕人最流行的學習途徑之一。

打開b站,搜索了下垃圾分類,上來就被這個標題嚇(吸)到(引)了:在上海丟人的正確姿勢。
《震驚!垃圾分類居然能用Python搞定!》

當然,這裏的丟人非彼丟人,指的是丟垃圾的丟。

點開發現,原來是一段對口相聲啊,還是兩個萌妹子(AI)的對口相聲,瞬間就來了興趣,闡述的是關於如何進行垃圾分類的。
《震驚!垃圾分類居然能用Python搞定!》

《震驚!垃圾分類居然能用Python搞定!》

《震驚!垃圾分類居然能用Python搞定!》

原視頻鏈接:https://www.bilibili.com/video/av57129646?from=search&seid=9101123388170190749

看完一遍又一遍,簡直停不下來了,已經開啟了洗腦模式,畢竟視頻很好玩,視頻中的彈幕更是好玩!

獨樂樂不如眾樂樂,且不如用Python把彈幕保存下來,做個詞雲圖?就這麼愉快地決定了!

1 環境

操作系統:Windows

Python版本:3.7.3

2 需求分析

我們先需要通過 開發調試工具,查詢這條視頻的彈幕的 cid 數據。
《震驚!垃圾分類居然能用Python搞定!》

拿到 cid 之後,再填入下面的鏈接中。

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

打開之後,就可以看到該視頻的彈幕列表。

《震驚!垃圾分類居然能用Python搞定!》

有了彈幕數據后,我們需要先將解析好,並保存在本地,方便進一步的加工處理,如製成詞雲圖進行展示。

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))

最後來看看我們效果圖
《震驚!垃圾分類居然能用Python搞定!》

有沒有感受到大家對垃圾分類這個話題的熱情,莫名喜感湧上心頭。

4 後記

這兩個AI萌妹子說的相聲很不錯,就不知道郭德綱看到這個作品會作何感想。回到垃圾分類的話題,目前《上海市生活垃圾管理條例》已正式施行,不在上海的朋友們也不要太開心,住建部表示,全國其它46個重點城市也即將體驗到……

公眾號「Python專欄」後台回復「垃圾分類」,獲取本文全套代碼。

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *