美文网首页大数据 爬虫Python AI SqlPython编程
十五行Python代码实现批量下载好看的视频,嘎嘎好看

十五行Python代码实现批量下载好看的视频,嘎嘎好看

作者: 傻逼平台瞎几把封号 | 来源:发表于2022-03-23 20:11 被阅读0次

    话说人生苦短,我用Python。

    如果学python不是为了下载这些视频,那将毫无意义!


    啊呸,老色批

    咳咳,我们开始正题。

    一、事前前奏

    首先没装Python、pycharm的铁子先自己安装一下,我就不写安装了。

    然后就是模块了,还是爬虫老大件 requests ,直接 pip 安装即可,requests 是数据请求模块。

    win+r 打开运行框输入 cmd 按回车,在弹出来的命令提示符窗口输入 pip install requests 回车即可安装成功。

    • 安装失败原因
      1、 pip 不是内部命令,解决方法(设置环境变量)
      2、出现大量报红 (read time out) ,解决方法(因为是网络链接超时, 需要切换镜像源)
      3、cmd里面显示已经安装过了,或者安装成功了,但是在pycharm里面还是无法导入,解决方法(可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好,或者你pycharm里面python解释器没有设置好)

    镜像源

    清华:https://pypi.tuna.tsinghua.edu.cn/simple
    阿里云:https://mirrors.aliyun.com/pypi/simple/
    中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
    华中理工大学:https://pypi.hustunique.com/
    山东理工大学:https://pypi.sdutlinux.org/
    豆瓣:https://pypi.douban.com/simple/
    

    安装方式

    例如

    pip3 install -i https://pypi.doubanio.com/simple/ 模块名
    

    如何配置pycharm里面的python解释器?

    1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
    2. 点击齿轮, 选择add。
    3. 添加python安装路径

    pycharm如何安装插件?

    1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
    2. 点击 Marketplace 输入想要安装的插件名字,比如:翻译插件 输入 translation,汉化插件 输入 Chinese
    3. 选择相应的插件点击 install(安装) 即可
    4. 安装成功之后是会弹出重启pycharm的选项,点击确定,重启即可生效。

    二、正文

    前奏完了,我们直接进入主题…

    地址我把关键的删掉了,第一个 v.6 第二个 haokan.baidu

    1、思路流程

    我们怎么去实现一个pa虫案例?

    每个网站数据结构都是不一样的,需要自己重新去分析去抓包,但pa虫基本就这个流程。

    1、数据来源分析

    • 首先确定自己的目标地址以及目标数据来源,确定url地址;
    • 通过开发者工具进行抓包分析;

    2、代码实现过程

    • 发送请求,对于刚刚分析得到url地址发送请求;
    • 获取数据,获取服务器返回 response数据;
    • 解析数据,提取我们想要内容 ,视频播放url地址以及视频标题;
    • 保存数据,保存本地文件夹;

    2、代码展示

    首先导入模块

    import requests
    import re
    
    

    re是正则表达是模块,内置的,不用安装。只要安装 requests 就好了。

    发送请求

    对于刚刚分析得到url地址发送请求

    I. 请求url网址 [理解为电话号码];
    II. 请求方式;
    III. headers伪装需要加什么参数、请求头、字典数据类型、键值对形式;

    for page in range(26, 29):
        print(f'====================================正在采集第{page}页数据内容====================================')
        url = f'https://minivideo/getMiniVideoList.php?act=recommend&page={page}&pagesize=25'
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'
        }
        response = requests.get(url=url, headers=headers)
    
    

    <Response [200]> 返回response响应对象 200 状态码表示请求成功。

    image

    获取数据

    获取服务器返回response数据

    response.text 获取响应体文本数据           字符串数据类型
    response.json() 获取响应体json字典数据     字典数据类型
    
    

    如果返回数据是一个完整 json 数据格式,可以直接获取 response.json() 为了方便之后提取内容。
    字典取值更方便,可以直接根据键值对提取数据内容,根据冒号左边的内容,提取冒号右边的内容。

    先取 content 再取list ,返回的就是列表数据。

    print(response.text)
    print(response.json()['content']['list'])
    
    
    image

    这个返回的列表就包含了视频的数据信息,后面的地址我就没截图了,我怕~

    image

    解析数据

    提取我们想要内容、视频播放url地址以及视频标题。

    for index in response.json()['content']['list'][14:]:
        title = index['title']
        play_url = index['playurl']  # 快速复制 ctrl + D
        new_title = re.sub(r'[\/:*?"|<>]', '', title)
        print(title, play_url)
    
    

    保存数据

    video_content = requests.get(url=play_url).content
    with open('video\\' + new_title + '.mp4', mode='wb') as f:
        f.write(video_content)
    print('视频保存完成: ', title, play_url)
    
    

    补充

    json获取数据

    import requests
    import re
    import json
    url = 'https://com/web/search/api?pn=4&rn=10&type=video&query=%E7%BE%8E%E5%A5%B3'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'
    }
    json_data = requests.get(url=url, headers=headers).json()
    for index in json_data['data']['list']:
        index_url = index['url']
        html_data = requests.get(url=index_url, headers=headers).text
        video_info = re.findall('window.__PRELOADED_STATE__ = (.*?);.*?document', html_data)[0]
        json_data_1 = json.loads(video_info)
        title = json_data_1['curVideoMeta']['title']
        video_url = json_data_1['curVideoMeta']['clarityUrl'][-1]['url']
        print(title, video_url)
    
    

    3、结果展示

    在这里插入图片描述 image

    兄弟们,今天的分享就到这里,记得点赞收藏!

    image

    相关文章

      网友评论

        本文标题:十五行Python代码实现批量下载好看的视频,嘎嘎好看

        本文链接:https://www.haomeiwen.com/subject/yllhjrtx.html