前言
嗨嘍,大家好!這里是魔王吶~
環境使用:
-
Python 3.8 解釋器<運行代碼>
-
Pycharm 編輯器 <寫代碼>
模塊使用]:
- requests >>> 資料請求 第三方模塊 pip install requests <工具>
- re <正則運算式模塊>
如果安裝python第三方模塊:
- win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
- 在pycharm中點擊Terminal(終端) 輸入安裝命令
如何配置pycharm里面的python解釋器?
- 選擇file(檔案) >>> setting(設定) >>> Project(專案) >>> python interpreter(python解釋器)
- 點擊齒輪, 選擇add
- 添加python安裝路徑
pycharm如何安裝插件?
- 選擇file(檔案) >>> setting(設定) >>> Plugins(插件)
- 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
- 選擇相應的插件點擊 install(安裝) 即可
- 安裝成功之后 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效
基本思路流程:
一. 分析資料來源
找尋網址上面視頻資料來自于哪里
開發者工具進行抓包..
- 滑鼠右鍵點擊檢查 或者 F12打開開發者工具
- 重繪網頁
- 找尋視頻資料...<通過media里找尋視頻url地址>
- 找視頻url地址來于那個資料包 >>> 通過視頻url地址中一段引數進行搜索, 建議是搜.mp4前面這段內容...
二, 代碼實作程序: 對于某些網站 可能需要多次請求,
- 發送請求, 對于找到視頻資料包發送請求
- 獲取資料, 獲取服務器回傳回應資料
- 決議資料, 提取我們想要資料內容 視頻url地址 視頻標題
.... - 保存資料, 保存視頻資料到本地檔案夾
多個視頻采集 <視頻資料包url地址變化規律>
代碼
# 匯入模塊
import requests import requests # 資料請求模塊 import pprint # 格式化輸出模塊 import re
for page in range(2, 6): print(f'正在采集第{page}頁的資料內容') link = f'https://v.huya.com/g/all?set_id=51&order=hot&page={page}' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36' } html_data = requests.get(url=link, headers=headers).text # print(html_data) # 使用re正則運算式提取資料 從什么地方去獲取什么資料 # <li data-vid="(\d+)"><a href=https://www.cnblogs.com/Qqun261823976/p/".*?" 加了括號是我們想要資料內容 \d+ 匹配多個數字 .*? 可以匹配任意字符(除了換行符\n) video_id_list = re.findall('<li data-vid="(\d+)"><a href="https://www.cnblogs.com/Qqun261823976/p/.*?"', html_data) print(video_id_list) for video_id in video_id_list: url = f'https://liveapi.huya.com/moment/getMomentContent?videoId={video_id}&uid=&_=1654949607282' # 偽裝python代碼 在開發者工具里復制 user-agent 用戶代理 表示瀏覽器基本身份表示 # headers請求頭, 可以python代碼偽裝成瀏覽器對于url地址發送請求 <作用防止被識別出來是爬蟲程式> # cookie 用戶資訊, 常用于檢測是否登陸賬號 <無論登陸與否 都有一個cookie> # headers = { # 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36' # } # 通過requests模塊里面get請求方法對于url地址發送請求, 并且攜帶上headers請求頭偽裝, 最后用自定義變數response接受回傳資料 response = requests.get(url=url, headers=headers) # print(response.json()) # <Response [200]> 200表示請求成功 response.json() 回傳資料一定是完整json資料格式 # pprint.pprint(response.json()) # 決議資料 字典取值 根據鍵值對取值 {'鍵': '值', '鍵1': '值1'} 根據冒號左邊的內容<鍵>, 提取冒號右邊的內容<值> title = response.json()['data']['moment']['title'] title = re.sub(r'[\/:*?"<>|\n\r\t]', '', title) video_url = response.json()['data']['moment']['videoInfo']['definitions'][0]['url'] print(title) print(video_url)
# 保存資料 需要對于視頻播放地址, 發送請求獲取資料內容 video_content = requests.get(url=video_url, headers=headers).content with open('video\\' + title +video_id + '.mp4', mode='wb') as f: # as 重命名為 f f.write(video_content) # f = open('video\\' + title + '.mp4', mode='wb') # f.write(video_content) # f.close()
尾語
成功沒有快車道,幸福沒有高速路,
所有的成功,都來自不倦地努力和奔跑,所有的幸福都來自平凡的奮斗和堅持
——勵志語錄
本文章就寫完啦~感興趣的小伙伴可以復制代碼去試試
你們的支持是我最大的動力!!記得三連哦~ ?? 歡迎大家閱讀往期的文章呀~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497702.html
標籤:Python
