python爬蟲(爬取彈幕)
阿新 • • 發佈:2019-02-18
一、首先匯入需要的模組
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()
之後將會顯示(如下圖)
*未完待續*