• 爬取某牙视频


    爬取页面链接:游戏视频_游戏攻略_虎牙视频

    爬取步骤:点进去一个视频播放,查看media看有没有视频,发现没有。在xhr中发现有许多ts文件,但这种不是很长的视频一般都有直接的播放链接,所以目标还是找直接的链接。在搜索中搜索ts文件的某一个参数,或直接搜m3u8可以找到getmonment的包,里面有下载的链接。而这个包的链接与视频id有关

    一页如何下载:在主界面找到含有多个视频id的包,爬取视频id和视频名称,再循环将id赋值给getmonment的包的链接,实现一页下载。

    多页下载:观察主界面的包找url的规律即可。

    代码展现:

    1. import requests
    2. import re
    3. import os
    4. from tqdm import tqdm
    5. filename = 'video虎牙\\'
    6. if not os.path.exists(filename):
    7. os.mkdir(filename)
    8. url = 'https://www.huya.com/video/g/all?set_id=37&order=hot&page=1'
    9. headers = {
    10. "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    11. }
    12. response = requests.get(url=url,headers=headers).text
    13. id_list = re.findall('\{"vid":(.*?),',response)
    14. for id in tqdm(id_list):
    15. headers1 = {
    16. "Referer":"https://www.huya.com/",
    17. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    18. }
    19. link = f'https://liveapi.huya.com/moment/getMomentContent?videoId={id}&uid=&_=1708997648767'
    20. json_data = requests.get(url=link,headers=headers).json()
    21. video_name = json_data['data']['moment']['title']
    22. video_url = json_data['data']['moment']['videoInfo']['definitions'][0]['url']
    23. print(f'正在下载:{video_name}')
    24. video_content = requests.get(url=video_url,headers=headers1).content
    25. with open(filename+video_name+'.mp4','wb') as f:
    26. f.write(video_content)

    结果展现:

     

  • 相关阅读:
    Rust——包管理
    第一季:1自增变量【Java面试题】
    两个char型数据有效位不超过四位分别赋给高地址和低地址
    Python入门教程
    代码随想录算法训练营第五十八天| 583. 两个字符串的删除操作 、72. 编辑距离
    一张图理解EOS是什么
    《爵士乐史》乔德.泰亚 笔记
    Java ~ Reference ~ WeakReference
    听书项目开发过程及重难点总结
    Kong Learning
  • 原文地址:https://blog.csdn.net/m0_57265868/article/details/136315936