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!
推薦閱讀:
- Python爬蟲實戰演練之采集拉鉤網招聘信息數據
- Python實現復制文檔數據
- 用Python采集《雪中悍刀行》彈幕做成詞雲實例
- Python爬取網易雲歌曲評論實現詞雲圖
- Python將QQ聊天記錄生成詞雲的示例代碼