Python實現爬取某站視頻彈幕並繪制詞雲圖

前言

[課 題]:

Python爬取某站視頻彈幕或者騰訊視頻彈幕,繪制詞雲圖

[知識點]:

1. 爬蟲基本流程

2. 正則

3. requests >>> pip install requests

4. jieba >>> pip install jieba

5. imageio >>> pip install imageio

6. wordcloud  >>> pip install wordcloud

[開發環境]:

Python 3.8

Pycharm

win + R 輸入cmd 輸入安裝命令 pip install 模塊名 如果出現爆紅 可能是因為 網絡連接超時 切換國內鏡像源

相對應的安裝包/安裝教程/激活碼/使用教程/學習資料/工具插件 可以找我

爬取彈幕

爬蟲基本思路流程

一. 數據來源分析

1. 確定我們想要數據是什麼?

爬取某站彈幕數據 保存文本txt

2. 通過開發者工具進行抓包分析…

通過 接口可以直接找到視頻的彈幕數據地址

二. 爬蟲代碼實現步驟

1. 發送請求,  對於(評論看) 發送請求

需要註意點:

  • – 請求方式確定
  • – 請求頭參數

2. 獲取數據, 獲取服務器返回的數據

3. 解析數據, 提取我們想要數據內容, 彈幕數據

4. 保存數據, 把獲取下來的數據內容保存txt文本

模擬瀏覽器對於服務器發送請求

導入模塊

import requests  # 數據請求模塊 第三方模塊 pip install requests
import re  # 正則表達式模塊 內置模塊 不需要安裝

代碼

# # 1. 發送請求
# url = '(評論看)'
# # headers 請求頭 作用把Python代碼進行偽裝, 模擬成瀏覽器去發送請求
# # user-agent 瀏覽器基本身份標識
# # headers 請求頭 字典數據類型
# 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'
# }
# # 通過requests模塊裡面get請求方法, 對於url地址發送請求, 並且攜帶上headers請求頭, 最後用response變量去接收返回數據
# response = requests.get(url=url, headers=headers)
# response.encoding = response.apparent_encoding
# # <Response [200]> response對象 200狀態碼 表示請求成功
# # 如果你想要獲取 網頁源代碼一樣的數據內容的話, 是獲取響應體的文本數據
# # 如果服務器返回的數據, 不是完整json數據 字典數據 直接獲取response.json()就會報錯
# # 2. 獲取數據 response.text 返回數據 html字符串數據
# # print(response.text)
# # 3. 解析數據, 解析方式  re[可以直接對於字符串數據進行提取] css xpath [主要根據標簽屬性/節點提取數據]
# # () 精確匹配 表示想要的數據 泛匹配 .*? 正則表達式元字符 可以匹配任意字符(除瞭換行符\n以外)
# data_list = re.findall('<d p=".*?">(.*?)</d>', response.text)
# for index in data_list:
#     # mode 保存方式 encoding 編碼
#     # pprint.pprint() 格式化輸入 json字典數據
#     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)

制作詞雲圖

[知識點]:

1. 爬蟲基本流程

2. 正則

3. requests >>> pip install requests

4. jieba >>> pip install jieba

5. imageio >>> pip install imageio

6. wordcloud  >>> pip install wordcloud

[開發環境]:

Python 3.8

Pycharm

導入模塊

import jieba  # 結巴分詞 pip install jieba
import wordcloud  # 詞雲圖 pip install wordcloud
import imageio  # 讀取本地圖片 修改詞雲圖形
img = imageio.imread('蘋果.png')

讀取彈幕數據

f = open('彈幕.txt', encoding='utf-8')
text = f.read()
# print(text)

分詞, 把一句話 分割成很多詞匯

text_list = jieba.lcut(text)
print(text_list)
# 列表轉成字符串
text_str = ' '.join(text_list)
print(text_str)

詞雲圖配置

wc = wordcloud.WordCloud(
    width=500,  # 寬度
    height=500,  # 高度
    background_color='white', # 背景顏色
    mask=img,
    stopwords={'每', '一個', '瞭', '的', '夢想', '助力'},
    font_path='msyh.ttc'  # 字體文件
)

wc.generate(text_str)
wc.to_file('詞雲1.png')

 到此這篇關於Python實現爬取某站視頻彈幕並繪制詞雲圖的文章就介紹到這瞭,更多相關Python爬取視頻彈幕 繪制詞雲圖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: