嗨喽,大家好呀~这里是爱看美女的茜茜呐
今天我们要采集的网站呢,是国内知名的视频弹幕网站~
这里有及时的动漫新番,活跃的ACG氛围,有创意的Up主,还有不知多沙雕的网友
而它作为我们本次的目的,它也是非常有意思的,因为它下载的时候是视、音频分开的~
现在,话不多说,让我们开始叭 ⛱
本片文章代码提供者: 青灯教育-自游
下面的尽量跟我保持一致哦~不然有可能会发生报错
内置模块 你安装好python环境就可以了
shipin内容, 是可以在网页源代码有的 搜索playinfo就有相关数据… 通过开发者工具抓包分析
网址里的网名被我删啦,你可以看一下它的链接如何的然后自己添加一下
如果你实在不会或有点点小懒癌的小可耐也可以私聊我领取完整源码哦~
import os
# 导入数据请求模块 <使用请求工具去发送请求>
import requests
# 导入正则模块
import re
# 导入json
import json
# 导入格式化输出模块
import pprint
# 导入进程模块
import subprocess
import threading
对于shipin播放页面url地址发送请求
ef get_video_content(bv_id):
url = f'https://www..com/video/{bv_id}' # 确定网址, 确定自己要网址是那个
# headers请求头, 用来伪装python代码, 防止被服务器识别出来是你爬虫程序.... user-agent 用户代理 表示浏览器基本身份标识
# 通过requests模块里面get请求方法<函数>对于url地址发送请求... 等号左边的都是自定义变量 不能以数字开头 不建议使用关键词命名
# 有颜色url是函数参数 关键字传参
response = requests.get(url=url, headers=headers) # 响应对象 200状态码表示请求成功
print(response)
获取网页源代码 <有很多数据内容>
# print(response.text) # response.text 获取响应对象文本数据 >>> 字符串数据
提取我们想要数据内容 re
css
xpath
建议都要学习, 选择最适合用的
re.findall(‘“title”:“(.*?)”,’, response.text)
使用re
模块里面findall
<找到所有>方法 从什么地方去找什么数据
从response.text
里面去找 "title":"(.*?)"
, 其中 (.*?)
这段是我们想要数据
正则匹配提取出来数据, 返回列表数据 [0]
根据索引位置取值, 在python里面索引位置是从0开始计数
title = re.findall('"title":"(.*?)",', response.text)[0]
# 前端小知识点 前端标签两个两个一起 response.text 字符串类型
html_data = re.findall('', response.text)[0] # 获取视频信息 也是复制
# print(html_data)
# print(type(html_data)) # type() 查看数据类型
json_data = json.loads(html_data) # 转数据类型
# print(json_data)
# print(type(json_data)) # 字典数据类型, 字典取值 不会5 会6 根据冒号左边的内容, 提取冒号右边内容
# pprint.pprint(json_data)
# print(json_data['code'])
audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
video_url = json_data['data']['dash']['video'][0]['baseUrl']
print(audio_url)
print(video_url)
print(title)
图片 视频 音频 特定格式文件 都获取二进制数据进行保存
# audio_content = requests.get(url=audio_url, headers=headers).content # response.content 获取二进制数据内容
# video_content = requests.get(url=video_url, headers=headers).content # response.content 获取二进制数据内容
# with open('video\\' + title + '.mp3', mode='wb') as f:
# f.write(audio_content)
# with open('video\\' + title + '.mp4', mode='wb') as f:
# f.write(video_content)
#
# cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"
# subprocess.run(cmd, shell=True)
# os.remove(f'video\\{title}.mp4')
# os.remove(f'video\\{title}.mp3')
for page in range(1, 13):
print(f'正在采集第{page}页数据内容')
link = f'https://api..com/x/space/arc/search?mid=1305006386&ps=30&tid=0&pn={page}&keyword=&order=pubdate&jsonp=jsonp'
headers = {
'Referer': 'https://www..com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
"""
response.text 获取文本
response.content 获取二进制
response.json() 获取json字典数据
m3u8
"""
resp_json = requests.get(url=link, headers=headers).json()
for index in resp_json['data']['list']['vlist']:
bv_id = index['bvid']
print(bv_id)
感谢你观看我的文章呐~本次航班到这里就结束啦
希望本篇文章有对你带来帮助 ,有学习到一点知识~
躲起来的星星也在努力发光,你也要努力加油(让我们一起努力叭)。
最后,博主要一下你们的三连呀(点赞、评论、收藏),不要钱的还是可以搞一搞的嘛~
不知道评论啥的,即使扣个6666也是对博主的鼓舞吖 感谢