python 爬取视频真实地址_python 爬取视频
一、概述
爬取步骤
第一步:获取视频所在的网页
第二步:F12中找到视频真正所在的链接
第三步:获取链接并转换成机械语言
第四部:保存
二、分析视频链接
获取视频所在的网页
以酷6网为例,随便点击一个视频播放链接,比如:https://www.ku6.com/video/detail?id=udfY7DjsSXbg8ghbDnhUwNTinOY
F12中找到视频真正所在的链接
按F12打开工具栏,network-->Media,这里会显示媒体文件
刷新页面,就能看到真正的视频加载链接
获取链接并转换成机械语言
查看网页代码,找到js代码。这里面就可以看到真正的视频链接地址
那么通过正则匹配,就可以得到视频地址了。
直接打开这个视频地址,网页可以直接播放。
保存
可以直接播放的话,通过requests模块,就可以下载二进制文件了。
三、代码实现
完整代码
#!/usr/bin/python3#-*- coding: utf-8 -*-
importrefrom lxml importetreeimportrequestsimporttimefrom tqdm importtqdmimportosfrom urllib.request importurlopendefdownload_from_url(url, dst):"""@param: url to download file
@param: dst place to put the file
:return: bool"""
#获取文件长度
try:
file_size= int(urlopen(url).info().get('Content-Length', -1))exceptException as e:print(e)print("错误,访问url: %s 异常" %url)returnFalse#print("file_size",file_size)
#判断本地文件存在时
ifos.path.exists(dst):#获取文件大小
first_byte =os.path.getsize(dst)else:#初始大小为0
first_byte =0#判断大小一致,表示本地文件存在
if first_byte >=file_size:print("文件已经存在,无需下载")returnfile_size
header= {"Range": "bytes=%s-%s" %(first_byte, file_size)}
pbar=tqdm(
total=file_size, initial=first_byte,
unit='B', unit_scale=True, desc=url.split('/')[-1])#访问url进行下载
req = requests.get(url, headers=header, stream=True)try:
with(open(dst,'ab')) as f:for chunk in req.iter_content(chunk_size=1024):ifchunk:
f.write(chunk)
pbar.update(1024)exceptException as e:print(e)returnFalse
pbar.close()returnTruedefDownloadFile(url, name):"""下载文件
:param url:
:param name:
:return:"""
try:
resp= requests.get(url=url, stream=True)
content_size= int(resp.headers['Content-Length']) / 1024with open(name,"wb") as f:print("package total size is:", content_size, 'k,start...')for data in tqdm(iterable=resp.iter_content(1024), total=content_size, unit='k', desc=name):
f.write(data)print("%s 下载成功"%url)returnTrueexceptException as e:print(e)print("%s 下载失败" %url)returnFalse#头部
headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}#访问页面
response = requests.get('https://www.ku6.com/detail/371', headers=headers)
data=response.text#构造了一个XPath解析对象并对HTML文本进行自动修正
html =etree.HTML(data)#获取视频播放链接
html_data = html.xpath('//div[@class="r_box"]/ul/li//a/@href')#print("html_data", html_data, type(html_data))
#遍历url
for i inhtml_data:
url= "https://www.ku6.com%s" %iprint(url)#访问url
response_1 = requests.get(url, headers=headers)
data_1=response_1.text#正则匹配视频地址
video = re.findall('type: "video/mp4", src: "(.*?)"',data_1)
video_1=video[0]print("video_1", video_1)
x= video_1.split('/')[-1]#本地保存视频文件名
name = f'{x}.mp4'
print("name", name)#下载视频
download_from_url(video_1, name)#这里只演示第一个视频,直接break
break
View Code
执行代码,效果如下:
python 爬取视频真实地址_python 爬取视频相关推荐
- python抓取视频真实地址_快手批量获取真实地址python
import requests from bs4 import BeautifulSoup import re import xlrd import xlwt class KSNoMark(): # ...
- 获取腾讯视频真实地址php源码,腾讯视频的地址解析下载
提取视频ID 在播放页源码中,可以找到如下视频信息: var VIDEO_INFO = { title: "咱们相爱吧 第1集", duration: "2746&quo ...
- 获取腾讯视频真实地址php源码,解析腾讯视频真实地址 - osc_hajrc28s的个人空间 - OSCHINA - 中文开源技术交流社区...
解析腾讯视频真实地址 标签(空格分隔): php 分析 1 我们从腾讯视频上找到的网页链接格式是这样的 https://v.qq.com/x/page/b0136et5ztz.html vid = b ...
- python爬取json简单吗_Python爬取Json数据的示例
Python教程栏目介绍爬取Json数据实例 相关免费学习推荐:python教程(视频) 本文中以爬取其中的AI流转率数据为例. 该地址返回的响应内容为Json类型,其中红框标记的项即为AI流转率值: ...
- python爬取虎扑评论_Python爬取NBA虎扑球员数据
虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. 受害者地址 https://nba.hupu ...
- python爬取网易云音乐_python爬取网易云音乐简单案例
首先找到想要下载的歌曲表单,例如: 打开推荐 点击推荐的歌曲表单 接下来我们尝试爬取这个表单的全部歌曲名,及歌曲的MP3地址 我使用fiddler4抓包工具抓取相关信息 #encoding=utf8 ...
- python爬取新闻存入数据库_python爬取数据存入数据库
昨天本来写了一篇关于python爬取的文章,结果没通过,正好今天一起吧.用python同时实现爬取,和存入数据库,算是复习一下前面操作数据库的知识. 1.准备工作 既然是爬取,那自然要连接到爬取的页面 ...
- python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...
原标题:Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书! 作者 | Yura 责编 | 胡巍巍 高尔基这话有没有道理我不知道, 咱也不敢问, 主要是现在也问不了. 那对我来说,读 ...
- python知乎爬虫收藏夹_Python爬取知乎问题收藏夹 爬虫入门
简介 知乎的网站是比较好爬的,没有复杂的反爬手段,适合初学爬虫的人作为练习 因为刚刚入门python,所以只是先把知乎上热门问题的一些主要信息保存到数据库中,待以后使用这些信息进行数据分析,爬取的网页 ...
最新文章
- AIX下RAC搭建 Oracle10G(一)检測系统环境
- 修改element默认样式_ggplot2作图:修改主题元素的外观样式(整体修改)
- 使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行
- Visual Studio 起始页中不显示最近使用的项目的解决办法
- 单片机拟真电路图软件_电路仿真软件有哪些?6款常用的电路仿真软件推荐
- 研究生论文写作心得体会
- 春节宅家玩什么?8款小游戏陪你一起过年
- BIG-ENDIAN VS LITTLE-ENDIAN
- 密钥管理系统研究(一)
- Android项目接入魔窗SDK自定义使用
- 怎么把win10退回win7系统
- iOS-事件响应链、单例模式、工厂模式、观察者模式
- 关于uni.appd打包H5 图片在IOS 上不显示的问题
- 码距与检错或纠错能力的关系
- 高速信号线PCB走线中的阻抗匹配
- 2021春招Java面试题大全(精华六)
- 【SpringBoot】MultipartFile的transferTo()方法详解
- CentOS8服务器时间同步
- linux系统玩ps3模拟器下载地址,【RPCS3模拟器】RPCS3模拟器下载(PS3模拟器) 电脑版-开心电玩...
- 赵长鹏回复协助洗钱质疑; 欧洲通过区块链监管