b站彈幕的爬取以及詞云的簡單使用

2022-05-30 04:33:12 字數 4224 閱讀 8483

1.分析發現,其彈幕都是通過list.so?=cid這個檔案載入出來的,所以我們找到這個檔案的請求頭的請求url,

3. 上**,解析

#!/usr/bin/env python# -*- coding: utf-8 -*-

#author tom

import

requests

from lxml import

etree

headers=

#抓取函式

defyitianspiderf(url):

res=requests.get(url,headers=headers)

tree=etree.html(res.content)

comment_list=tree.xpath('

//d/text()')

with open(

'','

a+',encoding='

utf-8

') as f:

for comment in

comment_list:

f.write(comment+'\n'

)#defmain():

cid='

80266814

'url='

'.format(cid)

yitianspiderf(url)

if__name__ == '

__main__':

main()

4.詞云:

#

!/usr/bin/env python

#-*- coding: utf-8 -*-

#author tom

import

reimport

jieba

from collections import

counter

#使用結巴分詞

with open('

','r

',encoding='

utf-8

') as f:

txt=f.read()

jbwords=jieba.cut(txt)

#遇到這種非常規詞不使用

with open('

中文停用詞表.txt

' ,'

r',encoding='

utf-8

') as f1:

stopwords=f1.read()

result=

for word in

jbwords:

word=re.sub(r'

[a-za-z0-9\!?\%\[\]\,\.~]

','',word) #

去除英文符號

ifword:

if word not

instopwords:

'+++++++++++++++統計

'print('

*****

',result,len(result))

print

(counter(result))

#製作詞雲圖

import

matplotlib.pyplot as plt

from wordcloud import

wordcloud,imagecolorgenerator

from pil import

image

import

numpy as np

#指定字型,開啟,轉為陣列

#詞語物件

wc=wordcloud(font_path=myfon,background_color='

white

',max_font_size=50,max_words=500, mask=graph2)

wc.generate(text)

img_color=imagecolorgenerator(graph2)#

從背景圖中生成顏色值

plt.imshow(wc.recolor(color_func=img_color))

plt.imshow(wc)

plt.axis(

'off')

plt.show()

5. 效果:

1. 分析發現,b站直播的彈幕存放在乙個名為msg的檔案當中

2.我們利用postman對這個**發起post請求,果然可以拿到資料,

3.**

#

!/usr/bin/env python

#-*- coding: utf-8 -*-

#author tom

import

requests

import

time

from jsonpath import

jsonpath

#抓取函式

defcrawl(url,headers,data):

res=requests.post(url=url,headers=headers,data=data)

#拿到響應,res.json就直接轉化成字典格式了,jsonpath要處理的也需要是乙個python字典

#jsonpath第乙個引數是python字典,第二個引數是匹配規則,這邊代表的是從根目錄遞迴搜尋text和nicname

comment_list=jsonpath(res.json(),'

$..text')

nicname_list=jsonpath(res.json(),'

$..nickname')

#同時迴圈兩個列表,需要用到zip打包

for (nicname,comment) in

zip(nicname_list,comment_list):

dic=

print

(dic)

defmain():

url = '

'headers =

data =

#使用while迴圈最好呀睡覺,哪怕0.1也好,否則記憶體扛不住

while

true:

crawl(url,headers,data)

time.sleep(2)

if__name__ == '

__main__':

main()

url=url = 全部

3. 上面的不方便檢視,我們就對這個位址發起請求,利用jsonview來幫助檢視

4.看一下請求結果

5.對ajax發起跟過請求

可以看到,帶著引數就可以拿到歐更多的資料,現在知道怎麼抓去了把

詞云 pythonB站彈幕爬取

實現 現存的問題 這個不是邊搞邊記錄著寫的,主要靠回憶?這個適用於conda使用者哦,當然我就是隨便寫寫,我也是第一次搞,主要寫下自己遇到的問題。jieba我早就安裝了,應該是直接cmd開啟後 pip install jieba,大概是上課作業需要,當時用著也還成。啊當時也把beautifulsou...

爬取B站「冰冰vlog 001「評論 做詞云

python小白,純屬來玩的 狗頭 requests bs4jieba wordcloud imageio matplotlib 直接貼上了,自行研究 import requests import time from bs4 import beautifulsoup import json defg...

爬取B站「冰冰vlog 001「評論 做詞云

python小白,純屬來玩的 狗頭 requests bs4jieba wordcloud imageio matplotlib 直接貼上了,自行研究 import requests import time from bs4 import beautifulsoup import json def ...