1. 程式人生 > >python爬蟲(爬取彈幕)

python爬蟲(爬取彈幕)

一、首先匯入需要的模組

import re
import requests

首先匯入這兩個模組,一個是正則需要的模組,因為之後需要用正則來匹配,之後匯入 request 模組,爬取資料需要的模組。

二、頁面請求,提取資料

url='https://api.bilibili.com/x/v1/dm/list.so?oid=54160178'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36'}

response=requests.get
(url=url,headers=headers,verify=False) content=response.content.decode('utf-8')

先在頁面中,找到彈幕所在位置,將 url 找出來,然後寫 headers,用來爬取資料,資料需要解碼。

三、用正則匹配資料,之後將資料寫入txt 文件中

pattern=re.compile(r'<d.*?>(.*?)</d>')
data_list=pattern.findall(content)
print(data_list)
for li in data_list:
    with open('Barrage.txt'
,'a',encoding='utf-8')as fp: fp.write(li+'\n')

用正則匹配HTML中彈幕資料,然後寫入文件中,這樣就可以將一個視訊中的彈幕全部爬取出來。

生成詞雲

接下來我們可以將上面爬取的彈幕文件,來生成一個詞雲
生成詞雲,我們首先需要下載一個模組wordcloud,生成詞雲需要這個模組,之後我們可以把TXT文件匯入,生成的詞雲是一張圖,所以我們可以設定畫素的寬和高,可以設定背景顏色,字型樣式,背景圖/籠罩圖,邊緣的空白值等。

from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import
matplotlib.pyplot as plt f=open('Barrage.txt','r',encoding='utf-8').read() #匯入TXT文件 backgroup_image=plt.imread(r'C:\Users\Administrator\Desktop\爬蟲\333.jpg') #背景圖的路徑 wordcloud=WordCloud( width=1000, #畫素的寬 height=800, #畫素的高 margin=2, #邊緣值空白值 background_color='white', #背景顏色,預設黑色 font_path=r'C:\Users\Administrator\Desktop\爬蟲\ZhengQingKeJingYaTi-ShouBan-2.ttf', ##字型路徑 mask=backgroup_image, ##背景圖//籠罩圖 max_font_size=200, ##預設最大值 # min_font_size=16, #預設最小值 ).generate(f) plt.imshow(wordcloud) plt.axis('off') ##座標軸關閉 plt.show()

之後將會顯示(如下圖)

這裡寫圖片描述

                                                *未完待續*