Python采集某网站内容, m3u8内容下载

前言

嗨喽,大家好呐!这里是魔王~

环境使用:

  • Python 3.8 <建议最好是和一样版本>
  • Pycharm

模块使用:

  • import requests >>> pip install requests

内置模块 你安装好python环境就可以了

  • import re
  • import json

如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定,输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

实现案例 <通用模板>

一. 数据来源分析

采集数据内容,要知道我们想要内容是来自哪里

<开发者工具进行抓包分析>

  1. F12打开打开发者工具
  2. 刷新网页 让数据重新加载一遍
  3. 这个网站是一个m3u8内容

正常情况,一个完整的内容

m3u8内容 会整个完整内容,分割成很多个小视频片段 <ts文件> 一个ts文件 可能只有几秒钟的时间

所以我们得去找一个文件内容 <m3u8文件> 包含我们所有ts文件内容 <所有视频片段>

最好的搜索方式,是根据ts文件url去搜索m3u8文件

请求获取网页源代码 就可以得到m3u8文件 >>> 所有片段就得到了 >>> 合成为一个整体的内容

在这里插入图片描述

二. 代码实现步骤: <基本四大步骤>

  1. 发送请求,对于播放详情页url地址发送请求

  2. 获取数据,获取网页源代码 <获取服务器返回response响应数据>

  3. 解析数据,提取我们想要数据内容 <m3u8文件>

  4. 发送请求,对于m3u8文件url发送请求

  5. 获取数据,获取服务器返回response响应数据

  6. 解析数据,提取所有ts文件内容 <片段url>

  7. 保存数据,保存内容到本地

在这里插入图片描述

代码

import time

import requests  # 数据请求模块
import re  # 正则表达式模块
import json
import pprint

for page in range(3, 29):
    print(f'正在采集第{page}页的数据')
    time.sleep(1)
    link = 'https://www.acfun.cn/u/29946310'
    data = {
        'quickViewId': 'ac-space-video-list',
        'reqID': page+1,
        'ajaxpipe': '1',
        'type': 'video',
        'order': 'newest',
        'page': page,
        'pageSize': '20',
        't': '1653659024877',
    }
    headers = {
        'referer': 'https://www.acfun.cn/u/29946310',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/101.0.4951.54 Safari/537.36'
    }
    response = requests.get(url=link, params=data, headers=headers)
    # pprint.pprint(response.text)
    ac_id_list = re.findall('atomid.*?:.*?"(\d+).*?"', response.text)
    print(ac_id_list)


    for ac_id in ac_id_list:
        url = f'https://www.acfun.cn/v/ac{ac_id}'
        headers = {
        源码、解答、资料加Q裙:261823976
            'referer': f'https://www.acfun.cn/u/{ac_id}',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/101.0.4951.54 Safari/537.36'
        }
        response = requests.get(url=url, headers=headers)
        title = re.findall('<title >(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ</title>', response.text)[0]
        html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]
        json_data = json.loads(html_data)
        m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
        m3u8_data = requests.get(url=m3u8_url, headers=headers).text
        m3u8_data = re.sub('#E.*', '', m3u8_data).split()
        print(title)
        print(m3u8_url)
        # for ts in m3u8_data:
        #     ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts
            # ts_content = requests.get(url=ts_url,headers=headers).content
            # with open('video\\' + title + '.mp4',mode='ab') as f:
            #     f.write(ts_content)
            # print(ts_url)

在这里插入图片描述


在这里插入图片描述

Python的应用学习方向有哪些?

网站开发:

如目前优秀的全栈的 django、框架flask ,都继承了python简单、明确的风格,开发效率高、易维护,与自动化运维结合性好。

python已经成为自动化运维平台领域的事实标准;

爬虫程序

在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。

从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。

数据分析

Python语言相对于其它解释性语言最大的特点是其庞大而活跃的科学计算生态,在数据分析、交互、可视化方面有相当完善和优秀的库.

自动化脚本

执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,使用自动化脚本

就无需手动一次又一次地完成这些任务,非常方便。

人工智能

各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。

游戏开发/辅助 自动化测试 运维 图像处理 树莓派

在这里插入图片描述

尾语

成功没有快车道,幸福没有高速路。

所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持

——励志语录

本文章就写完啦~感兴趣的小伙伴可以复制代码去试试

你们的支持是我最大的动力!!记得三连哦~

相关文章

本文从多个角度分析了vi编辑器保存退出命令。我们介绍了保存...
Python中的回车和换行是计算机中文本处理中的两个重要概念,...
SQL Server启动不了错误1067是一种比较常见的故障,主要原因...
信息模块是一种可重复使用的、可编程的、可扩展的、可维护的...
本文从电脑配置、PyCharm版本、Java版本、配置文件以及程序冲...
本文主要从多个角度分析了安装SQL Server 2012时可能出现的错...