吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1915|回复: 14
收起左侧

[讨论] 端午了 爬个端午视频图个吉利 (照着学习视频爬的)熟悉高手思维流程

[复制链接]
lihu5841314 发表于 2021-6-14 15:47
[Asm] 纯文本查看 复制代码
import json
import   re
import requests
# import ffmepg
import pprint  #格式化输出模块
"""
端午节爬个龙舟竞渡视频
url = "https://www.bilibili.com/video/BV1nq4y177iF"
1.分析数据来源(视频一般都是流媒体  通过抓包工具解析)
2.通过视频播放详情页发送请求,获取网页源代码 获取数据下载地址 提取视频标题、视频播放地址、音频地址
3.存储数据
4.把视频音频合并到一起
"""
#1.分析数据来源 (通过抓包工具发现一堆m4?e的包和 data:image/svg +xml  image是图片的意思应该不是需要的  m4?e打开是一堆乱码  搞不懂只能试试看是不是这个
#找到页面源码的地址 用search查找m4?e前面相同的部分(流媒体肯定是一堆的)
html_url = "https://www.bilibili.com/video/BV1nq4y177iF"
cookie = """_uuid=DAA18F27-6BFA-2E38-BC4C-F60C4AF0599081540infoc; buvid3=E6E47A83-F53F-44A1-82F2-AB97DF02A8FF34763infoc; CURRENT_FNVAL=80; blackside_state=1; rpdid=|(J|YJkmul|~0J'uYkJYJ~YJ); buvid_fp=E6E47A83-F53F-44A1-82F2-AB97DF02A8FF34763infoc; bsource=search_baidu; sid=hugiee8z; PVID=2; fingerprint=0acd05e7bcca97693925ee707a38da32; buvid_fp_plain=E6E47A83-F53F-44A1-82F2-AB97DF02A8FF34763infoc; DedeUserID=349902220; DedeUserID__ckMd5=3e8ad8f940acac21; SESSDATA=1f0328c2,1639207924,8d916*61; bili_jct=4f54db114f0e72caf3d13f5645ceecc4"""
headers = {
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    "Referer": "https://www.bilibili.com/", #防盗链  告诉服务器你从哪里发送的请求
    "cookie":cookie
}
def  get_response(url):
     try:
        response = requests.get(url,headers=headers)
        if  response.status_code == 200:
            return response
     except:
         print(url + "请求失败")
         return None
def  get_video_info(html_url):
     response = get_response(html_url)
     title = re.findall(r'<title data-vue-meta="true">(.*?)_哔哩哔哩_bilibili</title>',response.text)[0]
     html_data = re.findall(r'<script>window.__playinfo__=(.*?)</script>',response.text)[0]
     #将字符串转换成字典
     json_data = json.loads(html_data)
     #json字典根据键值对取值
     audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
     video_url = json_data['data']['dash']['video'][0]['baseUrl']
     video_info = [title,audio_url,video_url]
     return video_info

def save(title,audio_url,video_url):
    #保存视频、音频 图片 都是二进制数据
    audio_url_content = get_response(audio_url).content
    video_url_content = get_response(video_url).content
    with  open(title+".mp3","wb")   as f:
        f.write(audio_url_content)
    with  open(title+".mp4","wb")   as f_1:
        f_1.write(video_url_content)
    print(title+"视频内容保存完成")
#
# def merge_data(video_name): #ffmpeg  下载不下来 不搞合并了
#     """数据的合并"""
#     #ffmpeg -i video.map4 -i audio.mp3 -c copy -c:a aac -strict experimental  output.mp4
#     COMMAND = f'ffmpeg -i {video_name}.map4 -i {video_name}.mp3 -c copy -c:a aac -strict experimental  {video_name}output.mp4'.run()
#     subprocess.Popen(COMMAND,shell =True)
#     print("视频合成结束",video_name)

def  main():
    video_info = get_video_info(html_url)
    save(video_info[0],video_info[1],video_info[2])


if __name__ == '__main__':
    main()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
卢布 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lihu5841314 发表于 2021-6-14 15:48
加个cookie也不知道有没效果  
JasonJHu 发表于 2021-6-14 16:30
给楼主点个赞,每一次手搓都是学习的沉淀

最近我也在学习requests的库,收下比对一下^_^
才硕 发表于 2021-6-14 16:36
 楼主| lihu5841314 发表于 2021-6-14 16:41
JasonJHu 发表于 2021-6-14 16:30
给楼主点个赞,每一次手搓都是学习的沉淀

最近我也在学习requests的库,收下比对一下^_^

交流 交流
jjl 发表于 2021-6-14 16:58
加油!我也学Python
三滑稽甲苯 发表于 2021-6-14 17:14
you-get可以试试,只需输入you-get <url>即可下载
花甲三盘 发表于 2021-6-14 18:12
多谢多谢,正好在学
8204118 发表于 2021-6-14 19:27
b站的直接去搜呗
zcgy918 发表于 2021-6-14 20:32
正在学,加油
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表