怎样把美拍的视频下载下来(python爬取美拍视频)

首页教程更新时间:2023-06-14 02:06:22
一.分析视频加载过程,为爬视频做准备(详细)1. 找到视频所在地址

爬取视频地址为https://www.meipai.com/medias/hot
鼠标在界面右击“查看页面源代码”,ctrl f搜索video,发现视频链接。

怎样把美拍的视频下载下来,python爬取美拍视频(1)

页面源代码

复制上图箭头所指链接,发现进入单个视频网址,同理查找网页源代码里是否视频地址,发现没有,考虑视频应该是动态数据,使用抓包工具寻找,然后找到视频地址。

怎样把美拍的视频下载下来,python爬取美拍视频(2)

找到下一级视频地址

复制上述箭头所指链接,发现就是我们要找的只有视频的网页链接!!!

2.分析视频加密过程

可以看出上述视频链接中的参数特别长,可能是在浏览器请求时进行加密了。点击抓包工具中的“网络”里的“媒体”

怎样把美拍的视频下载下来,python爬取美拍视频(3)

视频地址

可以猜测只有视频的地址(https://mvvideo10.meitudata.com/6333bbe70aeb2a0c812gxe965_H264_1_2910a0dd979362.mp4)由单个用户的单个视频网址(https://www.meipai.com/media/6980726254603093045)请求到的,在“源代码”里进行寻找和分析,我们找到“playPicsVideo”以及“decodeMp4.decode”。

怎样把美拍的视频下载下来,python爬取美拍视频(4)

加密函数

搜索“decodeMp4.decode”,然后找到下图红箭头处。

怎样把美拍的视频下载下来,python爬取美拍视频(5)

加密函数

为判断加密过程是否为这一步,打上断点,刷新界面,得:

怎样把美拍的视频下载下来,python爬取美拍视频(6)

调试

由此可知这一步就是加密,鼠标放在‘.decode’上点击到‘.decode’函数的位置上。

怎样把美拍的视频下载下来,python爬取美拍视频(7)

加密函数定义处

另外发现decodeMp4.decode()函数的输入为(https://www.meipai.com/media/6980726254603093045)网址页面源代码里的data-video。

二.思路整理

1.请求源网址‘https://www.meipai.com/medias/hot’,解析得到所有视频的data-id

2.将data-id与’https://www.meipai.com’拼在一起,请求这一拼起来的网址,解析获得标题title与加密函数的输入值data-video

3.对data-video进行加密

4.对加密后得到的网址进行请求,下载视频

三.python实现

import requests from lxml import etree import re import base64 url = 'https://www.meipai.com/medias/hot' resp = requests.get(url) html = etree.HTML(resp.text) #解析提取视频网址 data_url = html.xpath('/html/body/div[2]/div[1]/ul//div[1]/a/@href') #拼成电脑可以读取的网址 video_url = [] for i in data_url: url_i = 'https://www.meipai.com' i video_url.append(url_i) #print(video_url) # 解密函数 def getHex(a): return { 'str': a[4:], 'hex': "".join(list(a[0:4])[::-1]) } def getDec(a): b = str(int(a, 16)) return { 'pre': list(b[0:2]), 'tail': list(b[2:]) } def substr(a, b): c = a[0:int(b[0])] d = a[int(b[0]):int(b[0]) int(b[1])] return c a[int(b[0]):].replace(d, '') def getPos(a, b): b[0] = len(a) - int(b[0]) - int(b[1]) return b def decode(a): b = getHex(a) c = getDec(b['hex']) d = substr(b['str'], c['pre']) return base64.b64decode(substr(d, getPos(d, c['tail']))) for i_url in video_url: #提取解密前的参数 response = requests.get(i_url) obj = re.compile(r'data-video="(.*?)">',re.S) data_video = obj.findall(response.text)[0] html2 = etree.HTML(response.text) title = html2.xpath('/html/body/div[2]/div[1]/div[2]/h1/text()')[0].strip() #print(data_video) #print(title) data_video_url = decode(data_video).decode() # 下载视频 with open(r'./video/' title '.mp4', mode='wb') as f: f.write(requests.get('https:' data_video_url).content)四.总结

本文讲述我自学爬虫时关于爬取美拍视频的一些思考过程,主要分析如同通过抓包工具找到我们要的数据,这也是我薄弱的地方,与大家一起学习。关于python的学习,欢迎大家一起讨论学习。冲!!!

怎样把美拍的视频下载下来,python爬取美拍视频(8)

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
蚂蚁翻叶子
蚂蚁翻叶子
下载
中国人寿e宝账
中国人寿e宝账
下载
百战封仙
百战封仙
下载
双面丽人
双面丽人
下载
德巴克软装
德巴克软装
下载
酵素浴
酵素浴
下载
闲置制作工厂
闲置制作工厂
下载
披萨制造商3D
披萨制造商3D
下载
中山眼科中心
中山眼科中心
下载
一起摇摆我的俱乐部IOS
一起摇摆我的俱乐部IOS
下载
火柴人篮球2017电脑版
火柴人篮球2017电脑版
下载
慧链万家
慧链万家
下载
四年级数学作业
四年级数学作业
下载
学优堂电脑版
学优堂电脑版
下载
xp超级魔法设置v6.11绿色版
xp超级魔法设置v6.11绿色版
下载
小黄蜂视频
小黄蜂视频
下载