Python爬取酷然短视频,别说这网站还有点像Youtube

it2023-04-07  91

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入


开发工具

python 3.6.5pycharm import requests import re

相关模块可pip安装

确定目标网页

说实话看这个界面有丢丢像Youtube,上面有一些博主做的视频~今天就爬它了

分析网页找到视频地址

1、点击一个视频,F12打开开发者工具,在XHR里面可以找到一个media开头的数据包,media的意思就是媒体 paly_info 里面的URL,和一般的视频地址还是很相似的,可以复制链接打开看一下

果然是视频地址,但是这个时候又出现了一个问题,那就是这个视频只有画面,没有音频~

音频地址和视频地址分开了

慢慢往下翻找过去就可以发现音频地址就下面~ 视频和音频地址都找到,那么就要分析这个接口地址应该怎么样获取了

https://krcom.cn/aj/dash/media?media_ids=2358773:4554544017768456&protocols=dash&watermarks=krcom

多找几个视频就可以发现接口数据URL只是 media_ids 这个参数的变化而已,恰好这个参数又是视频所对应的ID值

那么问题来了,酷燃视频这个网站并不是静态网站,按道理来说动态数据加载的话,在 network 里面的 XHR 也应该是有相对应的数据地址的呀 如上图所示,可以发现并没有数据接口, 那应该怎么找呢?

当往下滑的时候可以发现,这个网站是瀑布流的数据加载,那我就把前面的ALL 所有数据都清空,然后往下滑,这样出现新的数据加载,就会出现数据地址! 如上图所示,当往下滑的时候就出现了一个数据,可以发现数据里面包含了vid值,这个就是视频的id值,同样的找到了地址,总不能只是爬取一页数据吧,所以还是需要分析URL地址的变化

https://krcom.cn/aj/hot/loadingmore?ajwvr=6&cursor=20;2020102015&YmdH=&__rnd=1603180127937

上面已经说多了,想要知道URL地址的变化,那么就多找几个地址对比一下就指导 通过对比后可以指导 cursor=20 是改变的是从0开始没20个视频跳转一次,一切的一切都分析好了~

分析网页是从尾到头

写代码就是从头到尾了

单页爬取完整代码

import pprint import requests import re def download_video(title, url): filename_video = 'D:\\python\\demo\\酷燃视频\\短视频\\' + title + '.mp4' response_video = requests.get(url=url) with open(filename_video, mode='wb') as f: f.write(response_video.content) def download_mp3(title, url): filename_mp3 = 'D:\\python\\demo\\酷燃视频\\短视频\\' + title + '.mp3' response_mp3 = requests.get(url=url) with open(filename_mp3, mode='wb') as f: f.write(response_mp3.content) for page in range(0, 101, 20): url = 'https://krcom.cn/aj/hot/loadingmore?ajwvr=6&cursor=0;2020102014&YmdH=&__rnd=1603176486876' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' } response = requests.get(url=url, headers=headers) html_data = response.text.encode('utf-8').decode('unicode_escape') urls = re.findall('vid=(.*?)\"', html_data, re.S) titles = re.findall('<h3 class="V_autocut_2l">(.*?)<', html_data, re.S) data = zip(urls, titles) for i in data: vid = i[0] title = i[1] page_url = 'https://krcom.cn/aj/dash/media?media_ids={}&protocols=dash&watermarks=krcom'.format(vid) response_2 = requests.get(url=page_url, headers=headers) html_json = response_2.json() video_url = html_json['data']['list'][0]['details'][1]['play_info']['url'] mp3_url = html_json['data']['list'][0]['details'][-1]['play_info']['url'] download_video(title, video_url) download_mp3(title, mp3_url) print(title)

视频和音频都下载好了~

如果想要把音频和视频合并成一个视频,就需要用到一个工具 FFmpeg

具体应该怎么操作,点击下方链接即可了解~嘿嘿嘿

python免费学习资料以及群交流解答点击即可加入

最新回复(0)