前言

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

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

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


开发工具

  • python 3.6.5
  • pycharm
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免费学习资料以及群交流解答点击即可加入


本文转载:CSDN博客