昨天看到個視頻,彈幕挺有意思的,於是想著用Python給他全部扒下來。 代碼非常簡單,接下來我們看看 具體操作。 需要準備這些 軟體 Python 3.8 Pycharm 模塊使用 import requests 數據請求 import jieba 分詞 import wordcloud 詞雲 im ...
昨天看到個視頻,彈幕挺有意思的,於是想著用Python給他全部扒下來。
代碼非常簡單,接下來我們看看 具體操作。
需要準備這些
軟體
- Python 3.8
- Pycharm
模塊使用
- import requests 數據請求
- import jieba 分詞
- import wordcloud 詞雲
- import parsel 數據解析
- import re 正則
win + R 輸入cmd 輸入安裝命令 pip install 模塊名 (如果你覺得安裝速度比較慢, 你可以切換國內鏡像源)
本次目標
視頻地址: https://www.bilibili.com/video/BV1Nz4y1x7tA/
彈幕內容: https://www.ibilibili.com/video/BV1Nz4y1x7tA/
彈幕地址: https://api.bilibili.com/x/v1/dm/list.so?oid=1205968547
流程步驟
基本實現步驟: <公式>
- 發送請求 --> 數據所對應鏈接地址
https://api.bilibili.com/x/v1/dm/list.so?oid=1205968547 - 獲取數據 --> 獲取整個頁面數據內容
- 解析數據 --> 提取具體數據內容
- 保存數據 --> 保存本地文件
代碼展示
模塊導入# 數據請求模塊 --> 第三方模塊 需要安裝 pip install requests
import requests # 導入正則表達式 --> 內置模塊不需要安裝 import re # 導入數據解析模塊 --> 第三方模塊 需要安裝 pip install parsel
# 視頻講解+代碼我都打包好了,直接在這個q裙自取:708525271
import parsel
發送請求
# 請求鏈接 url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=1205968547' # 調用requests模塊裡面get請求方法對於url地址發送請求 response = requests.get(url) print(response)
獲取數據
獲取文本響應數據
print(response.text)
當我們獲取數據出現亂碼怎麼辦呢?
response .encoding = 'utf-8'
數據解析
正則匹配數據
re_content = re.findall('<d p=".*?">(.*?)</d>',html_data) content = re.findall('<source>(.*?)</source>', html_data) print(re_content) print(content)
轉化數據
把獲取到響應文本數據,轉成可解析對象。
selector = parsel.Selector(html_data) # 選擇器對象 # d 標簽名字 d::text -提取d標簽里的文本內容 css_content = selector.css('d::text').getall() print(selector)
保存數據
for content in css_content: # mode 保存方式 --> w寫入數據, 會覆蓋 a 追加保存 with open('彈幕_1.txt', mode='a', encoding='utf-8') as f: f.write(content) f.write('\n') print(content)
好了,今天的分享就到這裡結束了,咱們下次見!