0
点赞
收藏
分享

微信扫一扫

零基础学Python-爬虫-5、下载网络视频


本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击【python爬虫】分类专栏进行倒序观看:

【重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收益,只为大家学习分享。】

开发环境:【Win10】

开发工具:【Visual Studio 2019】

Python版本:【3.7】

目标:【百度-->视频-->好看视频:​​https://haokan.baidu.com/?sfrom=baidu-top​​】

1、查找视频访问位置:

1.1、外层地址:

零基础学Python-爬虫-5、下载网络视频_爬虫

地址拼接测试:域名+a标签的href地址:【​​https://haokan.baidu.com/v?vid=1222867254140481571&tab=recommend​​】

访问成功:

零基础学Python-爬虫-5、下载网络视频_json_02

那么是否有现成的数据集呢?咱们去网络里看看:

零基础学Python-爬虫-5、下载网络视频_json_03

尝试成功:【​​https://haokan.baidu.com/v?vid=4077886395383397720&tab=recommend​​】

问题是打开的页面更换了个视频的vid~~~~拿到json集体试一试吧。

零基础学Python-爬虫-5、下载网络视频_爬虫_04

获取json:

零基础学Python-爬虫-5、下载网络视频_python_05

 2、获取json数据:

音乐:【​​https://haokan.baidu.com/videoui/api/videorec?tab=yinyue&act=pcFeed&pd=pc&num=5&shuaxin_id=1613369382977​​】

零基础学Python-爬虫-5、下载网络视频_python_06

零基础学Python-爬虫-5、下载网络视频_json_07

获取测试:

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)

零基础学Python-爬虫-5、下载网络视频_json_08

3、解析json数据:

零基础学Python-爬虫-5、下载网络视频_爬虫_09

我们主要要id和title就行,但是,我发现了好东西:【play_url】,明显的代表程序员sql查询的时候直接【select *】处理的。

零基础学Python-爬虫-5、下载网络视频_json_10

有了地址就可以直接获取下载了:

import requests
import uuid
import random
import time
#可更换参数:tab={}&num={}我这里不多下载,10个就可以了。
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"])

零基础学Python-爬虫-5、下载网络视频_python_11

4、视频下载到本地:

import requests
import uuid
import random
import time
#可更换参数:tab={}&num={}我这里不多下载,10个就可以了。
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"]})

#以下为存储过程
# 遍历列表存储所有图片
for item in lst:
# 发送请求
try:
pic= requests.get(item["play_url"], timeout=100)
except requests.exceptions.ConnectionError:
print ('错误:当前视频无法下载')
continue
# uuid4为图片名称
#,创建img文件夹, wb+:写入二进制数据
file=open(str.format("{0}.mp4",item["title"]), 'wb+')
file.write(pic.content)
file.close()
print(item["title"],"下载完毕")
#每次操作完休息1~3s
timeStop=random.randint(1,4)
time.sleep(timeStop)
print("完成")

零基础学Python-爬虫-5、下载网络视频_python_12

零基础学Python-爬虫-5、下载网络视频_ide_13

5、总结:

a)、百度视频 竟然各种不加密,让人感到很迷惑。

b)、可以保存保存点资源,毕竟流量都是包月的,哈哈。

欢迎【点赞】、【评论】、【关注】、【收藏】,为推广知识贡献力量。


举报

相关推荐

0 条评论