python视频爬虫

文章目录

爬虫的基本步骤

1.抓包分析,利用浏览器的开发者工具

2.发送请求

3.获取数据

4.解析数据

5.保存数据

一些工具

  1. requests, 用于发送请求,可以通过get,post等方式。通常需要加标头headers将Cookies和User-Agent,referer带上。
  2. re, 正则表达式,用于查找目标字符串,解析网页。
  3. urllib.parse.unquote, 用于解码 URL 编码的字符串。URL 编码(也称为百分号编码)是将某些字符转换为 % 后跟两位十六进制数的形式,以便在 URL 中安全传输。
  4. json.loads(), 将json数据格式转化为字典。
  5. pprint.pprint(), 用于"美化打印"(pretty-print)复杂的数据结构,如字典、列表等。它可以使输出更易于阅读,特别是在处理嵌套结构时。
  6. DrissionPage.ChromiumPage,用于模拟浏览器。

模拟浏览器并监听文件

dp=ChromiumPage()

dp.listen.start('文件名称')

dp.get(url)

resp=dp.listen.wait()

resp_dict=resp.response.body

视频爬取易错点

短视频一般是mp4的文件。长视频往往是m3u8流媒体,需要爬取多个ts文件。但是,长视频也可能是音频(audio)+视频(video)的形式传输,并利用ffmpeg合成。

爬完一个视频后应当停顿几秒,防止服务器发爬机制。

一个代码示例

python 复制代码
from DrissionPage import ChromiumPage
import requests
import json
import re
from tqdm import tqdm
# 打开浏览器
dp = ChromiumPage()
# 打开网址
url = input("请输入视频链接:")
dp.get(url)
# 监听数据包
dp.listen.start('proxyhttp')
# 等待数据包加载
resp = dp.listen.wait()
# 获取相应数据
response = resp.response.body
# print(response)
json_data = response['vinfo']
# print(type(json_data))
# 将json字符串转换成json字典
info_json = json.loads(json_data)
# print(type(info_json))
# 取出视频切片链接包的地址
m3u8_url = info_json['vl']['vi'][0]['ul']['ui'][-1]['url']
# print(m3u8_url)
 
headers = {
    # 用户信息
'cookie':
'填写自己的用户信息',
   'referer':
'https://v.qq.com/',
    # 防盗链
    'user-agent':
'填写自己的设备信息'
    # 设备信息
}
# 请求获取所有的视频ts片段
m3u8 = requests.get(url=m3u8_url, headers=headers).text
# print(m3u8)
ts_list = re.findall(',\n(.*?)\n#',  m3u8)
ts_name = '/'.join(m3u8_url.split('/')[:-1]) + '/'
# print(ts_name)
# print(ts_list)
for ts in tqdm(ts_list):
    # 拼接完整的ts视频链接
    ts_url = ts_name + ts
    # 获取视频片段内容
    ts_content = requests.get(url=ts_url, headers=headers).content
    #以追加的形式,写入2进制数据
    with open('保存位置.mp4', mode='ab') as f:
        f.write(ts_content)

参考

https://blog.csdn.net/2201_75495538/article/details/143438422

相关推荐
Oueii几秒前
如何为开源Python项目做贡献?
jvm·数据库·python
小鸡吃米…3 分钟前
Python 中的并发 —— 进程池
linux·服务器·开发语言·python
小王不爱笑1326 分钟前
Java 异常全解析:从原理到实战,搞定异常处理
java·开发语言
Techblog of HaoWANG7 分钟前
目标检测与跟踪(10)-- Jetson Xavier NX刷机、移植&部署YOLOv8量化模型(中)
python·yolo·目标检测·onnx·量化部署
历程里程碑8 分钟前
40 UDP - 2 C++实现英汉词典查询服务
linux·开发语言·数据结构·c++·ide·c#·vim
万里沧海寄云帆15 分钟前
Vscode解决python venv虚拟环境问题
ide·vscode·python
2401_8914821717 分钟前
Python Web爬虫入门:使用Requests和BeautifulSoup
jvm·数据库·python
超越自我肖17 分钟前
python--while循环案例九九乘法表
python
油泼辣子多加21 分钟前
【PY】数据处理函数
python·深度学习·机器学习·数据分析
叫我一声阿雷吧21 分钟前
JS 入门通关手册(20):构造函数与原型:JS 面向对象第一课
开发语言·javascript·前端开发·前端面试·构造函数·js进阶·js面向对象