用Python爬取王冰冰vlog彈幕並製作詞云

2022-07-10 06:48:12 字數 3740 閱讀 7405

最近的「瓜」,多到我們措手不及,可謂是「熱點不斷」。作為程式設計師,我們還可能隨時為此而加班。

1.網頁解析:網頁結構可能隨時會發生變化。

2.python第三方api:可能會有維護跟不上的問題。

經過簡單對比,我選擇第一種方法。

#獲取資訊

defget_page(self):

try:

#延時操作,防止太快爬取

time.sleep(0.5)

response=requests.get(self.url,headers=self.headers)

except

exception as e:

print('

獲取xml內容失敗,%s

' %e)

return

false

else

:

if response.status_code == 200:

# with open('

bilibili.xml

','wb

') as f:

f.write(response.content)

return

true

else

:

return

false

#解析網頁

defparam_page(self):

time.sleep(1)

ifself.barrage_reault:

#檔案路徑,html解析器

html=etree.parse('

bilibili.xml

',etree.htmlparser())

#xpath解析,獲取當前所有的d標籤下的所有文字內容

results=html.xpath('

//d//text()')

return results

重複的彈幕進行歸類,未出現過的彈幕建立新的分類。為詞頻統計和詞云做好準備。

#

彈幕去重

defremove_double_barrage(self):

'''double_arrage:所有重複彈幕的集合

results:去重後的彈幕

barrage:每種彈幕內容都儲存一遍

'''double_barrage=

results=

barrage=set()

for result in

self.param_page():

if result not

inresults:

else

: barrage.add(result)

return double_barrage,results,barrage

我們在網上照一張「王冰冰」的**,進行簡單的處理,作為詞云的輪廓圖。

彈幕重複次數和詞云製作

defmake_wordcould(self):

double_barrages,results,barrages=self.remove_double_barrage()

#重詞計數

with open('

barrages.txt

','w

') as f:

for barrage in

barrages:

amount=double_barrages.count(barrage)

f.write(barrage+'

:'+str(amount+1)+'\n'

)

#設定停用詞

stop_words=['

【','

】','

,','

.','

?','

!','。'

] words=

ifresults:

for result in

results:

for stop in

stop_words:

result=''

.join(result.split(stop))

#列表拼接成字串

words=''

.join(words)

words=jieba.cut(words)

words=''

.join(words)

bingbing=np.array(image.open('

冰冰.jpg'))

繪製詞云

統計結果:

詞雲圖效果:

我對於b站的網頁結構還有很多不熟悉的地方,或許還有其他更好的分析方法和技巧,最後的人形詞云要設定合適的引數才能讓人物的形象惟妙惟肖。該教程我參考了一些網友的方法,對提供技術分享的博主表示感謝。希望我們都能保持一顆學習的心,一直不斷地探索吧。

參考博文:

用python爬取小說章節內容

在學爬蟲之前,最好有一些html基礎,才能更好的分析網頁.主要是五步 1.獲取鏈結 2.正則匹配 3.獲取內容 4.處理內容 5.寫入檔案 如下 匯入相關model from bs4 import beautifulsoup import requests import re 獲取目標鏈結位址 ur...

用Python爬取京東手機評論

好評 中評 差評 追評 可以看到這個url裡都有以下幾個引數 videocount 2638,videocountstr 2600 aftercount 4852,aftercountstr 4800 showcount 24200,showcountstr 2.4萬 productid 10000...

用python爬取小說章節內容

在學爬蟲之前,最好有一些html基礎,才能更好的分析網頁.主要是五步 1.獲取鏈結 2.正則匹配 3.獲取內容 4.處理內容 5.寫入檔案 如下 匯入相關model 2from bs4 import beautifulsoup 3import requests 4importre5 6 獲取目標鏈結...