爬取bilibili彈幕製作詞雲
阿新 • • 發佈:2019-01-30
最近有部劇的片花看的很燃,正好我又是主演的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"))
接下來,激動人心得時候到了,我家楚大人的詞雲躍然屏上:
最後,請秀麗王帶我回家,謝謝,轉載請告之。