爬取bilibili彈幕製作詞雲

最近有部劇的片花看的很燃,正好我又是主演的fans,於是手癢忍不住把該片的彈幕爬取下來做個詞雲玩一玩。

step 1 獲得彈幕的XML文件

B站上的彈幕在靜態頁面上是沒有的,所以還需要費點勁去找。

打開我們的目標視頻:【特工皇妃楚喬傳】2分鐘先導片花 趙麗穎戰魂覺醒燃燃燃

右鍵源代碼,然後再CTRL+F,輸入」bofqi」然後回車,然後我們找到了如下這個東東:

看到裡面得「cid=16496518&aid=9979006&pre_ad=0」了么,其中的cid那就是我們要找的彈幕入口,打開comment.bilibili.com/16 ,就可以看到我們的彈幕文件了

然後就很簡單啦,用request或者urllib都可以請求下來,當然還有更直接的就是右鍵–>頁面另存為。

step 2 清洗文本,分詞和統計詞頻

上一步我們得到了XML格式的文件,但是呢我們只要裡面的文字就好了,其他亂七八糟的標籤就可以去掉了,於是使用正則表達式來處理。

import ref = open("C:\Users\Administrator\Desktop\chuqiao.txt", "r") f2 = open("C:\Users\Administrator\Desktop\chuqiao2.txt", "w")count = 0dr = re.compile(r<[^>]+>,re.S)while 1: line = f.readline() if not line: break pass dd = dr.sub(,line) count=count+1 f2.writelines(dd)print count

好的,現在我們得到了乾淨的文本,接下來就是分詞了,使用jieba進行分詞:

def jieba_cut(sentence): seg = jieba.cut(sentence) segList = [] for i in seg: segList.append((i)) return segList

再然後,使用nltk對分好的詞進行詞頻統計,當然,自己也能寫一個代碼統計,博主懶,就直接拿來主義了,一行代碼搞定:

frequency = nltk.FreqDist(sentence)

step 3 製作詞雲

這一步呢,咱們使用的包是wordcloud,在使用這個包之前,請先下載好一個中文字體,博主隨手使用的字體是DroidSansFallbackFull.ttf,然後呢,搞個自己的定製邊緣,使用的背景圖是自己二次加工的片方圖,ps能力有限,看看就好:

不放代碼的博主不是好博主:

font = os.path.join(dir, "DroidSansFallbackFull.ttf")# 設置背景圖片chuqiao_coloring = imread(os.path.join(os.path.dirname(__file__), "chuqiao.png"))# 從背景圖片生成顏色值image_colors = ImageColorGenerator(chuqiao_coloring)wordCloud = WordCloud(background_color="white",mask = chuqiao_coloring,font_path=font).generate_from_frequencies(frequency)plt.imshow(wordCloud.recolor(color_func=image_colors))# plt.axis("off")wordCloud.to_file(os.path.join(dir, "chuqiaoDanMU.png"))

接下來,激動人心得時候到了,我家楚大人的詞雲躍然屏上:

最後,請秀麗王帶我回家。原CSDN地址:爬取bilibili彈幕製作詞雲 - <p>專註挖坑</p> - 博客頻道 - CSDN.NET

推薦閱讀:

NLP 自然語言處理國際會議(轉)
NNLM最新論文調研-1-《Character-Aware Neural Language Models》
我為什麼從技術角度不看好中國的智能音箱
周明:如果用一個詞形容NLP圈的2017,我選「想像」| 人物對話

TAG:Python | 自然語言處理 |