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

打印 上一主题 下一主题

主题 866|帖子 866|积分 2598

前言

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

 
 
环境使用:


  • Python 3.8
  • Pycharm
模块使用:


  • import requests >>> pip install requests
内置模块 你安装好python环境就可以了

  • import re
  • import json
如果安装python第三方模块:


  • win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  • 在pycharm中点击Terminal(终端) 输入安装命令
实现案例

一. 数据来源分析

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


  • F12打开打开发者工具
  • 刷新网页 让数据重新加载一遍
  • 这个网站是一个m3u8内容
正常情况, 一个完整的内容
m3u8内容 会整个完整内容,分割成很多个小视频片段  一个ts文件 可能只有几秒钟的时间
所以我们得去找一个文件内容  包含我们所有ts文件内容
最好的搜索方式, 是根据ts文件url去搜索m3u8文件
请求获取网页源代码 就可以得到m3u8文件 >>> 所有片段就得到了 >>> 合成为一个整体的内容
 
 
二. 代码实现步骤:


  • 发送请求, 对于播放详情页url地址发送请求
  • 获取数据, 获取网页源代码
  • 解析数据, 提取我们想要数据内容
  • 发送请求, 对于m3u8文件url发送请求
  • 获取数据, 获取服务器返回response响应数据
  • 解析数据, 提取所有ts文件内容
  • 保存数据, 保存内容到本地
 
 
代码
  1. import time
  2. import requests  # 数据请求模块
  3. import re  # 正则表达式模块
  4. import json
  5. import pprint
  6. for page in range(3, 29):
  7.     print(f'正在采集第{page}页的数据')
  8.     time.sleep(1)
  9.     link = 'https://www.acfun.cn/u/29946310'
  10.     data = {
  11.         'quickViewId': 'ac-space-video-list',
  12.         'reqID': page+1,
  13.         'ajaxpipe': '1',
  14.         'type': 'video',
  15.         'order': 'newest',
  16.         'page': page,
  17.         'pageSize': '20',
  18.         't': '1653659024877',
  19.     }
  20.     headers = {
  21.         'referer': 'https://www.acfun.cn/u/29946310',
  22.         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
  23.     }
  24.     response = requests.get(url=link, params=data, headers=headers)
  25.     # pprint.pprint(response.text)
  26.     ac_id_list = re.findall('atomid.*?:.*?"(\d+).*?"', response.text)
  27.     print(ac_id_list)
  28.     for ac_id in ac_id_list:
  29.         url = f'https://www.acfun.cn/v/ac{ac_id}'
  30.         headers = {
  31.             'referer': f'https://www.acfun.cn/u/{ac_id}',
  32.             'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
  33.         }
  34.         response = requests.get(url=url, headers=headers)
  35.         title = re.findall('<title >(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ</title>', response.text)[0]
  36.         html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]
  37.         json_data = json.loads(html_data)
  38.         m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
  39.         m3u8_data = requests.get(url=m3u8_url, headers=headers).text
  40.         m3u8_data = re.sub('#E.*', '', m3u8_data).split()
  41.         print(title)
  42.         print(m3u8_url)
  43.         # for ts in m3u8_data:
  44.         #     ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts
  45.             # ts_content = requests.get(url=ts_url, headers=headers).content
  46.             # with open('video\\' + title + '.mp4', mode='ab') as f:
  47.             #     f.write(ts_content)
  48.             # print(ts_url)
复制代码
 
 
 
 
 
Python的应用学习方向有哪些?

网站开发:

如目前优秀的全栈的 django、框架flask ,都继承了python简单、明确的风格,开发效率高、易维护,与自动化运维结合性好。
python已经成为自动化运维平台领域的事实标准;
爬虫程序

在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。
从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。
数据分析

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

执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,使用自动化脚本
就无需手动一次又一次地完成这些任务,非常方便。
人工智能

各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。
游戏开发/辅助 自动化测试 运维 图像处理 树莓派
 
 
尾语

成功没有快车道,幸福没有高速路。
所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持
——励志语录
本文章就写完啦~感兴趣的小伙伴可以复制代码去试试

你们的支持是我最大的动力!!记得三连哦~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表