1. 程式人生 > >爬取bilibili彈幕製作詞雲

爬取bilibili彈幕製作詞雲

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

看到裡面得“cid=16496518&aid=9979006&pre_ad=0”了麼,其中的cid那就是我們要找的彈幕入口,開啟http://comment.bilibili.com/16496518.xml ,就可以看到我們的彈幕檔案了
這裡寫圖片描述

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

step 2 清洗文字,分詞和統計詞頻
上一步我們得到了XML格式的檔案,但是呢我們只要裡面的文字就好了,其他亂七八糟的標籤就可以去掉了,於是使用正則表示式來處理。

import re
f = open("C:\\Users\\Administrator\\Desktop\\chuqiao.txt", "r")  
f2 = open("C:\\Users\\Administrator\\Desktop\\chuqiao2.txt", "w")
count = 0
dr = 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"))

接下來,激動人心得時候到了,我家楚大人的詞雲躍然屏上:
這裡寫圖片描述

最後,請秀麗王帶我回家,謝謝,轉載請告之。
這裡寫圖片描述