前言
嗨嘍,大家好!這里是魔王吶~
科爾沁右翼前網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
環(huán)境使用:
-
Python 3.8 解釋器<運行代碼>
-
Pycharm 編輯器 <寫代碼>
模塊使用]:
- requests >>> 數(shù)據(jù)請求 第三方模塊 pip install requests <工具>
- re <正則表達式模塊>
如果安裝python第三方模塊:
- win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
- 在pycharm中點擊Terminal(終端) 輸入安裝命令
如何配置pycharm里面的python解釋器?
- 選擇file(文件) >>> setting(設(shè)置) >>> Project(項目) >>> python interpreter(python解釋器)
- 點擊齒輪, 選擇add
- 添加python安裝路徑
pycharm如何安裝插件?
- 選擇file(文件) >>> setting(設(shè)置) >>> Plugins(插件)
- 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
- 選擇相應(yīng)的插件點擊 install(安裝) 即可
- 安裝成功之后 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效
基本思路流程:
一. 分析數(shù)據(jù)來源
找尋網(wǎng)址上面視頻數(shù)據(jù)來自于哪里
開發(fā)者工具進行抓包..
- 鼠標右鍵點擊檢查 或者 F12打開開發(fā)者工具
- 刷新網(wǎng)頁
- 找尋視頻數(shù)據(jù)...<通過media里找尋視頻url地址>
- 找視頻url地址來于那個數(shù)據(jù)包 >>> 通過視頻url地址中一段參數(shù)進行搜索, 建議是搜.mp4前面這段內(nèi)容...
二, 代碼實現(xiàn)過程: 對于某些網(wǎng)站 可能需要多次請求,
- 發(fā)送請求, 對于找到視頻數(shù)據(jù)包發(fā)送請求
- 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
- 解析數(shù)據(jù), 提取我們想要數(shù)據(jù)內(nèi)容 視頻url地址 視頻標題
....
- 保存數(shù)據(jù), 保存視頻數(shù)據(jù)到本地文件夾
多個視頻采集 <視頻數(shù)據(jù)包url地址變化規(guī)律>
代碼
# 導入模塊
import requests
import requests # 數(shù)據(jù)請求模塊
import pprint # 格式化輸出模塊
import re
for page in range(2, 6):
print(f'正在采集第{page}頁的數(shù)據(jù)內(nèi)容')
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正則表達式提取數(shù)據(jù) 從什么地方去獲取什么數(shù)據(jù)
#
"(\d+)">".*?" 加了括號是我們想要數(shù)據(jù)內(nèi)容 \d+ 匹配多個數(shù)字 .*? 可以匹配任意字符(除了換行符\n)
video_id_list= re.findall('', 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=&_='
# 偽裝python代碼 在開發(fā)者工具里復制 user-agent 用戶代理 表示瀏覽器基本身份表示
# headers請求頭, 可以python代碼偽裝成瀏覽器對于url地址發(fā)送請求<作用防止被識別出來是爬蟲程序>
# 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地址發(fā)送請求, 并且攜帶上headers請求頭偽裝, 最后用自定義變量response接受返回數(shù)據(jù)
response= requests.get(url=url, headers=headers)
# print(response.json()) #200]> 200表示請求成功 response.json() 返回數(shù)據(jù)一定是完整json數(shù)據(jù)格式
# pprint.pprint(response.json())
# 解析數(shù)據(jù) 字典取值 根據(jù)鍵值對取值 {'鍵': '值', '鍵1': '值1'} 根據(jù)冒號左邊的內(nèi)容<鍵>, 提取冒號右邊的內(nèi)容<值>
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)
# 保存數(shù)據(jù) 需要對于視頻播放地址, 發(fā)送請求獲取數(shù)據(jù)內(nèi)容
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()
網(wǎng)站名稱:python對虎牙進行小姐姐視頻采集,舞蹈區(qū)內(nèi)容真熱鬧~
路徑分享:http://weahome.cn/article/dsoggho.html