Go設計模式學習準備——下載bilibili合集影片
需求
前段時間面試,被問到設計模式。說實話雖然了解面向對象、多態,但突然被問到設計模式,還要說清解決什麼問題,自己是有些懵的,畢竟實習主要工作是在原項目基礎進行CRUD,自己還是沒有深度思考,所以只能簡單介紹自己知道的簡單工廠模式等。趁著回家這段假期,充電學習一下Go設計模式!
學習資料
B站搜索一下,突然發現劉丹冰老師更新了設計模式課程。因為前面學習Go基礎也是通過書籍和劉丹冰老師的影片學習。
設計模式鏈接如下:
由於家裡網路和個人學習習慣,喜歡把影片下載下來學習,會更專註下來。
上次下載忘了寫部落格,這次專門記錄一下,方便下次操作。
問題
you-get是下載利器,然而bilibili的合集下載會有些問題,具體原因沒有仔細分析,個人懷疑是獲取不了合集下的所有影片鏈接。所以本文通過八爪魚進行獲取影片鏈接,再通過python寫腳本,you-get下載全部影片。
工具準備
個人是Mac電腦,具體軟體或環境:
- 八爪魚軟體
- Python 3.8.9, 安裝pandas包
- you-get
(以上環境都是以往安裝的,網上也有不錯的安裝教程,這裡就不贅述了。)
下載步驟
1. 八爪魚將合集視屏的鏈接收集起來並下載

軟體操作比較簡單,主要步驟:
- 建立新任務,即添加鏈接,點擊開始採集
- 根據網頁分析結果進行採集和保存
- 導出採集的影片鏈接數據為excel

2. 對合集中所有影片鏈接進行讀取和you-get下載
excel命名為bilibili.xlsx
下面是簡單的腳本下載
#-- coding: utf-8 --
# 下載bilibili合集視屏
# 首先八爪魚爬取網頁所有影片地址,保存到excel
# 然後python讀取excel文件,到字典中
# 最後循環便利,使用you-get下載
import pandas as pd
import os
def readExcel(file):
df = pd.read_excel(file, sheet_name = "Sheet1") # sheet_name不指定時默認返回全表數據
return df["title"] # 返回表格中title列,此列存放影片的地址
def download(address): # 下載
print(address) # 測試
for i in address:
print("-------")
os.system("you-get -o ./bilibili "+ str(i)) # -o後面是保存路徑,根據個人需求更改
if __name__ == "__main__":
file_path = r"./bilibili.xlsx"
videos = readExcel(file_path)
download(videos)
總結
解決方案比較簡單,也沒考慮太多的優化。暫時夠用,若有更好改進,歡迎評論和指出!


