爬取视频地址为https://www.meipai.com/medias/hot
鼠标在界面右击“查看页面源代码”,ctrl f搜索video,发现视频链接。
页面源代码
复制上图箭头所指链接,发现进入单个视频网址,同理查找网页源代码里是否视频地址,发现没有,考虑视频应该是动态数据,使用抓包工具寻找,然后找到视频地址。
找到下一级视频地址
复制上述箭头所指链接,发现就是我们要找的只有视频的网页链接!!!
2.分析视频加密过程可以看出上述视频链接中的参数特别长,可能是在浏览器请求时进行加密了。点击抓包工具中的“网络”里的“媒体”
视频地址
可以猜测只有视频的地址(https://mvvideo10.meitudata.com/6333bbe70aeb2a0c812gxe965_H264_1_2910a0dd979362.mp4)由单个用户的单个视频网址(https://www.meipai.com/media/6980726254603093045)请求到的,在“源代码”里进行寻找和分析,我们找到“playPicsVideo”以及“decodeMp4.decode”。
加密函数
搜索“decodeMp4.decode”,然后找到下图红箭头处。
加密函数
为判断加密过程是否为这一步,打上断点,刷新界面,得:
调试
由此可知这一步就是加密,鼠标放在‘.decode’上点击到‘.decode’函数的位置上。
加密函数定义处
另外发现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的学习,欢迎大家一起讨论学习。冲!!!
,- 余额宝一万元能收益多少(现在的余额宝还值得买吗)
- 网上交的燃气为什么不能用(但还得出门“圈存”)
- 辽宁学业水平考试多久能出成绩(省考出成绩到面试仅8天)
- 华为儿童手表3pro超强版隐藏功能(腕上学习生活助手)
- 微信数据迁移到另一部手机一直不动(只需要3步)
- qq动漫人物怎么去掉(这些动画片有可能正在“毒害”你的孩子……)
- 10月1日快递放假安排(工品一号2022年国庆节放假通知及发货安排)
- 华为p30 pro不能双卡双待了怎么办(如果经常出现不灵的情况)
- 手机识别图片提取文字(能开启5个实用功能)
- 阿里大宝卡免流条件(这一点忍不住想买)
- 全民k歌怎样屏蔽官方信息(全民K歌打开就出广告怎么办)
- 个人热点怎么开wifi网络共享(手机怎么跟电脑共享网络)
- steam掌机如何预订(Deck)
- 自己怎么做电子版个人简历(wordwps三步完成(个人简历)表格制作)
- 手机录音(只需打开这个隐藏功能)
- 排名
- 软件
- 人气
- 下载