Python實(shí)現(xiàn)爬取某站視頻彈幕并繪制詞云圖
前言
[課 題]:
Python爬取某站視頻彈幕或者騰訊視頻彈幕,繪制詞云圖
[知識(shí)點(diǎn)]:
1. 爬蟲基本流程
2. 正則
3. requests >>> pip install requests
4. jieba >>> pip install jieba
5. imageio >>> pip install imageio
6. wordcloud? >>> pip install wordcloud
[開發(fā)環(huán)境]:
Python 3.8
Pycharm
win + R 輸入cmd 輸入安裝命令 pip install 模塊名 如果出現(xiàn)爆紅 可能是因?yàn)?網(wǎng)絡(luò)連接超時(shí) 切換國(guó)內(nèi)鏡像源
相對(duì)應(yīng)的安裝包/安裝教程/激活碼/使用教程/學(xué)習(xí)資料/工具插件 可以找我
爬取彈幕
爬蟲基本思路流程
一. 數(shù)據(jù)來(lái)源分析
1. 確定我們想要數(shù)據(jù)是什么?
爬取某站彈幕數(shù)據(jù) 保存文本txt
2. 通過(guò)開發(fā)者工具進(jìn)行抓包分析...
通過(guò) 接口可以直接找到視頻的彈幕數(shù)據(jù)地址
二. 爬蟲代碼實(shí)現(xiàn)步驟
1. 發(fā)送請(qǐng)求,? 對(duì)于(評(píng)論看) 發(fā)送請(qǐng)求
需要注意點(diǎn):
- - 請(qǐng)求方式確定
- - 請(qǐng)求頭參數(shù)
2. 獲取數(shù)據(jù), 獲取服務(wù)器返回的數(shù)據(jù)
3. 解析數(shù)據(jù), 提取我們想要數(shù)據(jù)內(nèi)容, 彈幕數(shù)據(jù)
4. 保存數(shù)據(jù), 把獲取下來(lái)的數(shù)據(jù)內(nèi)容保存txt文本
模擬瀏覽器對(duì)于服務(wù)器發(fā)送請(qǐng)求
導(dǎo)入模塊
import requests # 數(shù)據(jù)請(qǐng)求模塊 第三方模塊 pip install requests import re # 正則表達(dá)式模塊 內(nèi)置模塊 不需要安裝
代碼
# # 1. 發(fā)送請(qǐng)求 # url = '(評(píng)論看)' # # headers 請(qǐng)求頭 作用把Python代碼進(jìn)行偽裝, 模擬成瀏覽器去發(fā)送請(qǐng)求 # # user-agent 瀏覽器基本身份標(biāo)識(shí) # # headers 請(qǐng)求頭 字典數(shù)據(jù)類型 # headers = { # 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36' # } # # 通過(guò)requests模塊里面get請(qǐng)求方法, 對(duì)于url地址發(fā)送請(qǐng)求, 并且攜帶上headers請(qǐng)求頭, 最后用response變量去接收返回?cái)?shù)據(jù) # response = requests.get(url=url, headers=headers) # response.encoding = response.apparent_encoding # # <Response [200]> response對(duì)象 200狀態(tài)碼 表示請(qǐng)求成功 # # 如果你想要獲取 網(wǎng)頁(yè)源代碼一樣的數(shù)據(jù)內(nèi)容的話, 是獲取響應(yīng)體的文本數(shù)據(jù) # # 如果服務(wù)器返回的數(shù)據(jù), 不是完整json數(shù)據(jù) 字典數(shù)據(jù) 直接獲取response.json()就會(huì)報(bào)錯(cuò) # # 2. 獲取數(shù)據(jù) response.text 返回?cái)?shù)據(jù) html字符串?dāng)?shù)據(jù) # # print(response.text) # # 3. 解析數(shù)據(jù), 解析方式 re[可以直接對(duì)于字符串?dāng)?shù)據(jù)進(jìn)行提取] css xpath [主要根據(jù)標(biāo)簽屬性/節(jié)點(diǎn)提取數(shù)據(jù)] # # () 精確匹配 表示想要的數(shù)據(jù) 泛匹配 .*? 正則表達(dá)式元字符 可以匹配任意字符(除了換行符\n以外) # data_list = re.findall('<d p=".*?">(.*?)</d>', response.text) # for index in data_list: # # mode 保存方式 encoding 編碼 # # pprint.pprint() 格式化輸入 json字典數(shù)據(jù) # with open('彈幕.txt', mode='a', encoding='utf-8') as f: # f.write(index) # f.write('\n') # print(index)
url = 'https://mapi.vip.com/vips-mobile/rest/shopping/pc/search/product/rank?callback=getMerchandiseIds&app_name=shop_pc&app_version=4.0&warehouse=VIP_NH&fdc_area_id=104104101&client=pc&mobile_platform=1&province_id=104104&api_key=70f71280d5d547b2a7bb370a529aeea1&user_id=&mars_cid=1634797375792_17a23bdc351b36f2915c2f7ec16dc88e&wap_consumer=a&standby_id=nature&keyword=%E5%8F%A3%E7%BA%A2&lv3CatIds=&lv2CatIds=&lv1CatIds=&brandStoreSns=&props=&priceMin=&priceMax=&vipService=&sort=0&pageOffset=0&channelId=1&gPlatform=PC&batchSize=120&_=1639640088314' headers = { 'referer': 'https://category.vip.com/', 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36' } response = requests.get(url=url, headers=headers) print(response.text)
制作詞云圖
[知識(shí)點(diǎn)]:
1. 爬蟲基本流程
2. 正則
3. requests >>> pip install requests
4. jieba >>> pip install jieba
5. imageio >>> pip install imageio
6. wordcloud? >>> pip install wordcloud
[開發(fā)環(huán)境]:
Python 3.8
Pycharm
導(dǎo)入模塊
import jieba # 結(jié)巴分詞 pip install jieba import wordcloud # 詞云圖 pip install wordcloud import imageio # 讀取本地圖片 修改詞云圖形 img = imageio.imread('蘋果.png')
讀取彈幕數(shù)據(jù)
f = open('彈幕.txt', encoding='utf-8') text = f.read() # print(text)
分詞, 把一句話 分割成很多詞匯
text_list = jieba.lcut(text) print(text_list) # 列表轉(zhuǎn)成字符串 text_str = ' '.join(text_list) print(text_str)
詞云圖配置
wc = wordcloud.WordCloud( width=500, # 寬度 height=500, # 高度 background_color='white', # 背景顏色 mask=img, stopwords={'每', '一個(gè)', '了', '的', '夢(mèng)想', '助力'}, font_path='msyh.ttc' # 字體文件 ) wc.generate(text_str) wc.to_file('詞云1.png')
?到此這篇關(guān)于Python實(shí)現(xiàn)爬取某站視頻彈幕并繪制詞云圖的文章就介紹到這了,更多相關(guān)Python爬取視頻彈幕 繪制詞云圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一篇文章弄懂Python中所有數(shù)組數(shù)據(jù)類型
這篇文章主要給大家介紹了關(guān)于Python中所有數(shù)組數(shù)據(jù)類型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06python 動(dòng)態(tài)遷移solr數(shù)據(jù)過(guò)程解析
這篇文章主要介紹了python 動(dòng)態(tài)遷移solr數(shù)據(jù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Python技巧之實(shí)現(xiàn)批量統(tǒng)一圖片格式和尺寸
大家在工作的時(shí)候基本都會(huì)接觸到很多的圖片,有時(shí)為了不同的工作需求需要修改圖片的尺寸或者大小。本文為大家整理了Python批量轉(zhuǎn)換圖片格式和統(tǒng)一圖片尺寸,希望對(duì)大家有所幫助2023-05-05解決jupyter不是內(nèi)部或外部命令,也不是可運(yùn)行程序問(wèn)題
這篇文章主要介紹了解決jupyter不是內(nèi)部或外部命令,也不是可運(yùn)行程序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06使用pygame寫一個(gè)古詩(shī)詞填空通關(guān)游戲
這篇文章主要介紹了使用pygame寫一個(gè)古詩(shī)詞填空通關(guān)游戲,之前寫的詩(shī)詞填空的游戲支持python2,現(xiàn)在對(duì)程序進(jìn)行了修改,兼容支持python2和python3,需要的朋友可以參考下2019-12-12基于anaconda下強(qiáng)大的conda命令介紹
今天小編就為大家分享一篇基于anaconda下強(qiáng)大的conda命令介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06tensorflow與numpy的版本兼容性問(wèn)題的解決
這篇文章主要介紹了tensorflow與numpy的版本兼容性問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01