Python获取动态加载的视频

   步骤 

1.选择一个生活页面,按F12,选择Elements栏,点击左边的箭头,把鼠标移到某个视频上面,下栏会定位到其所在的标签,发现这些标签都是在<li class="categoryem">标签下

2.循环li标签内的a标签里href的内容,拼接后是每个视频的详情页地址

3.在视频详情页上,查看视频详情页面的加载方式,发现网页源代码中找不到,说明该页面是动态加载的,这样就无需向详情页发送请求了直接向该地址发送即可(发送了也找不到)

4.通过network查看详情页的请求网址

5.朝该详情页发送请求发现获取不到

import requests
url='https://www.pearvideo.com/videoStatus.jsp?contId=1755550&mrd=0.581892639041967'
headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.2242 SLBChan/23'
}
video_page=requests.get(url=url,headers=headers).content
with open('./a.html','wb') as fp:
    fp.write(video_page)
{
   "resultCode":"5",
   "resultMsg":"该文章已经下线!",
   "systemTime": "1647781607669"
}

 6.原因是有防爬措施之防盗链,得定义一个请求头加上Referer参数再去请求网站

7.去浏览器上复制视频的地址发现与我们拿到的有地方不一样

8.接着去想如何去替换核心数据,去拿到真正的视频地址,研究发现通过systemTime即可

 

 {
    "resultCode":"1",
    "resultMsg":"success", "reqId":"8544a57d-1ad8-4d74-83ca-740fd9960052",
    "systemTime": "1647780126911",
    "videoInfo":{"playSta":"1","video_image":"https://image1.pearvideo.com/cont/20220318/11549967-150204-1.png","videos":{"hdUrl":"","hdflvUrl":"","sdUrl":"","sdflvUrl":"","srcUrl":"https://video.pearvideo.com/mp4/third/20220318/1647780126911-11549967-150114-hd.mp4"}}
}

 代码示例

#导入模块
import requests
from lxml import etree
import time
import os
# 创建存放视频的目录
if not os.path.exists(r'./video'):
    os.mkdir(r'./video')
#1.生活页面的url
url='https://www.pearvideo.com/category_5'
#UA伪装
headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.2242 SLBChan/23'
}
#2.发送get请求获取页面数据
page_text=requests.get(url=url,headers=headers).text
# 3.使用xpath进行数据解析
#3.1.实例化,将网上获取的源码数据加载到该对象中
tree=etree.HTML(page_text)
# 3.2解析出视频详情链接
li_list=tree.xpath('//*[@id="listvideoListUl"]/li')
for li in li_list:
    #1.解析出视频链接相对地址href="video_1755550"
    datail_url=li.xpath('./div/a/@href')[0]
    #解析出视频名称
    name=li.xpath('./div/a/div[2]/text()')[0]+'.mp4'
    # 每个视频的href _后面的一串数字都不同,将其拆分取出
    video_id = datail_url.split('_')[-1]
    #视频详情页的url
    video_url='https://www.pearvideo.com/videoStatus.jsp'
    headers = {
        "Referer": "https://www.pearvideo.com/video_%s" % video_id #Referer告诉服务器我是从哪个页面链接过来的
    }
    #2.发起请求,获取视频详情页数据
    res1 = requests.get(url=video_url,params={'contId': video_id},headers=headers)
    # 避免访问次数过多,延迟
    time.sleep(1)
    #返回json对象
    data_dict = res1.json()
    #视频地址srcUrl
    src_url = data_dict['videoInfo']['videos']['srcUrl']
    systemTime = data_dict['systemTime']
    #通过字符串替换拼接成真正地址
    real_url = src_url.replace(systemTime, 'cont-%s' % video_id)
    #发起请求,获取视频二进制数据
    res2 = requests.get(real_url).content
    #拼接成视频存储路径
    file_path = os.path.join('./video', name)
    #进行持久化存储
    with open(file_path, 'wb')as fp:
        fp.write(res2) #写入
    print('%s 下载成功' % name)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
├前言-软件的安装 │ │ 前言-1Python开发环境的安装.mp4 │ └ 前言-2集成开发环境Pycharm的安装及设置模板.mp4 ├第1章 Python基础从零到1 │ │ 1.10高级语法_类和对象.mp4 │ │ 1.11高级语法_模块.mp4 │ │ 1.1基本语法_输出函数print_变量与赋值.mp4 │ │ 1.2基本语法_数据类型.mp4 │ │ 1.3基本语法_输入函数input.mp4 │ │ 1.4基本语法_分支结构.mp4 │ │ 1.5基本语法_循环结构.mp4 │ │ 1.6数据结构_列表.mp4 │ │ 1.7数据结构_字典.mp4 │ │ 1.8数据结构_集合与元组.mp4 │ └ 1.9高级语法_函数.mp4 ├第2章 文件自动化处理 -再也不怕多乱差 │ │ 2.10移动文件和文件夹.mp4 │ │ 2.11删除文件或文件夹.mp4 │ │ 2.12重命名文件和文件夹_文件常用操作总结.mp4 │ │ 2.13读压缩包.mp4 │ │ 2.14解压压缩包.mp4 │ │ 2.15创建压缩包.mp4 │ │ 2.1os模块简介_路径操作 .mp4 │ │ 2.2课堂案例_输出当前路径下所有文件及文件夹.mp4 │ │ 2.4搜索指定要求的文件.mp4 │ │ 2.5查询文件具体的详细信息.mp4 │ │ 2.6利用Python读写文件中的内容.mp4 │ │ 2.7创建临时文件和文件夹.mp4 │ │ 2.8创建文件夹.mp4 │ └ 2.9复制文件和文件夹.mp4 ├第3章 Excel自动化处理-从此做表不加班 │ │ 3.10使用Python操作Excel表格的样式2.mp4 │ │ 3.11课堂案例_设置好评数据的样式.mp4 │ │ 3.12使用Python向Excel中插入图片.mp4 │ │ 3.13使用Python向Excel中插入柱状图.mp4 │ │ 3.14使用Python向Excel中插入条形图.mp4 │ │ 3.15课堂案例_薪水明细_设置Excel的样式.mp4 │ │ 3.16课堂案例_薪水明细_批量生成新的Excel文件.mp4 │ │ 3.1处理Excel文件的相关模块介绍及安装.mp4 │ │ 3.2使用Python打开Excel文件_获取指定单元格的内容.mp4 │ │ 3.4课堂小案例_找到41码鞋子的坐标.mp4 │ │ 3.5使用Python向Excel文件中写入数据.mp4 │ │ 3.6使用Python向工作表中插入_删除行与列.mp4 │ │ 3.7使用Python操作工作表对象 .mp4 │ │ 3.8课堂案例_京东鞋子评论数据.mp4 │ └ 3.9使用Python操作Excel表格的样式1.mp4 └第4章 Word自动化处理-又快又好做文档 │ 4.10课堂案例:设置指定文件的样式.mp4 │ 4.11课堂案例:Excel文件与Word文件的转换.mp4 │ 4.1python-docx模块的介绍与安装.mp4 │ 4.2使用PythonWord文档中的内容.mp4 │ 4.3课堂案例_统计关键词出现的次数.mp4 │ 4.4使用Python向Word文档中添加内容.mp4 │ 4.5使用Python向Word文档添加图片_表格.mp4 │ 4.6课堂案例-使用Python自动生成请假条.mp4 │ 4.7使用Python设置Word中的字体样式.mp4 │ 4.8使用Python设置Word中段落的样式.mp4 └ 4.9使用Python设置Word中表格的样式.mp4

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值