零基础学Python-爬虫-5、下载网络视频
生活随笔
收集整理的這篇文章主要介紹了
零基础学Python-爬虫-5、下载网络视频
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本套課程正式進(jìn)入Python爬蟲階段,具體章節(jié)根據(jù)實(shí)際發(fā)布決定,可點(diǎn)擊【python爬蟲】分類專欄進(jìn)行倒序觀看:
【重點(diǎn)提示:請(qǐng)勿爬取有害他人或國家利益的內(nèi)容,此課程雖可爬取互聯(lián)網(wǎng)任意內(nèi)容,但無任何收益,只為大家學(xué)習(xí)分享。】
開發(fā)環(huán)境:【W(wǎng)in10】
開發(fā)工具:【Visual Studio 2019】
Python版本:【3.7】
目標(biāo):【百度-->視頻-->好看視頻:https://haokan.baidu.com/?sfrom=baidu-top】
1、查找視頻訪問位置:
1.1、外層地址:
地址拼接測(cè)試:域名+a標(biāo)簽的href地址:【https://haokan.baidu.com/v?vid=1222867254140481571&tab=recommend】
訪問成功:
那么是否有現(xiàn)成的數(shù)據(jù)集呢?咱們?nèi)ゾW(wǎng)絡(luò)里看看:
嘗試成功:【https://haokan.baidu.com/v?vid=4077886395383397720&tab=recommend】
問題是打開的頁面更換了個(gè)視頻的vid~~~~拿到j(luò)son集體試一試吧。
獲取json:
?2、獲取json數(shù)據(jù):
音樂:【https://haokan.baidu.com/videoui/api/videorec?tab=yinyue&act=pcFeed&pd=pc&num=5&shuaxin_id=1613369382977】
獲取測(cè)試:
import requests import uuid import random import time #可更換 url ="https://haokan.baidu.com/videoui/api/videorec?tab=yinyue&act=pcFeed&pd=pc&num=5&shuaxin_id=1613369382977" headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'} resp = requests.get(url, headers=headers) resp_json = resp.json() print(resp_json)3、解析json數(shù)據(jù):
我們主要要id和title就行,但是,我發(fā)現(xiàn)了好東西:【play_url】,明顯的代表程序員sql查詢的時(shí)候直接【select *】處理的。
有了地址就可以直接獲取下載了:
import requests import uuid import random import time #可更換參數(shù):tab={}&num={}我這里不多下載,10個(gè)就可以了。 url ="https://haokan.baidu.com/videoui/api/videorec?tab=yinyue&act=pcFeed&pd=pc&num=10&shuaxin_id=1613369382977" headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'} resp = requests.get(url, headers=headers) resp_json = resp.json() data_list = resp_json['data']['response']['videos'] for x in data_list:print(x["play_url"])print(x["title"])4、視頻下載到本地:
import requests import uuid import random import time #可更換參數(shù):tab={}&num={}我這里不多下載,10個(gè)就可以了。 url ="https://haokan.baidu.com/videoui/api/videorec?tab=yinyue&act=pcFeed&pd=pc&num=10&shuaxin_id=1613369382977" headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'} resp = requests.get(url, headers=headers) resp_json = resp.json() data_list = resp_json['data']['response']['videos'] lst=[] for x in data_list:lst.append({"play_url":x["play_url"],"title":x["title"]})#以下為存儲(chǔ)過程 # 遍歷列表存儲(chǔ)所有圖片 for item in lst:# 發(fā)送請(qǐng)求try:pic= requests.get(item["play_url"], timeout=100)except requests.exceptions.ConnectionError:print ('錯(cuò)誤:當(dāng)前視頻無法下載')continue# uuid4為圖片名稱#,創(chuàng)建img文件夾, wb+:寫入二進(jìn)制數(shù)據(jù)file=open(str.format("{0}.mp4",item["title"]), 'wb+')file.write(pic.content)file.close()print(item["title"],"下載完畢")#每次操作完休息1~3stimeStop=random.randint(1,4)time.sleep(timeStop) print("完成")5、總結(jié):
a)、百度視頻 竟然各種不加密,讓人感到很迷惑。
b)、可以保存保存點(diǎn)資源,畢竟流量都是包月的,哈哈。
歡迎【點(diǎn)贊】、【評(píng)論】、【關(guān)注】、【收藏】、【打賞】,為推廣知識(shí)貢獻(xiàn)力量。
總結(jié)
以上是生活随笔為你收集整理的零基础学Python-爬虫-5、下载网络视频的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 零基础学Python-爬虫-4、下载网络
- 下一篇: 零基础学Python-爬虫-5、下载音频