yijiuxiaole 发表于 2021-12-31 20:15

爬某牙(顔值)视频

本帖最后由 yijiuxiaole 于 2021-12-31 20:26 编辑

祝大家元旦快乐。
今天干的是某牙视频
连接在这 还是老规矩 首先分析 f12 刷新 列表发现是静态的数据这个先不管,直接看视频 刷新 点击media(视频)

点击进去 复制里面的关键字 ctrl+f 粘贴 搜索 发现一个连接里面有视频连接 然后把连接的那些参数删除发现有一个id可以用


https://liveapi.huya.com/moment/getMomentContent?callback=jQuery1124030062870365079375_1640948409562&videoId=628255115&_=1640948409580 这是原来的
https://liveapi.huya.com/moment/getMomentContent?&videoId=628255115 这是简化的
思路就是
获取每个视频的id 把这个id放进简化的连接里面 在请求就是视频的直连

import re
import os
import requests

if not os.path.exists('shiping'): # 判断文件夹是否存在
    os.mkdir('shiping')
headers = {
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36'
    }
for jj in range(1,10):
    url = f'https://v.huya.com/g/Dance?set_id=31&order=hot&page={jj}' # 这个是请求页数
    print(f'正在下载第{jj}页')
    resp = requests.get(url,headers=headers) # 进行请求
    guize = re.compile(r'<li data-vid="(.*?)"><a href=".*?" class="video-wrap" target="_blank" title="(.*?)">',re.S) # 列表的正则匹配模板 0是id 1是名字
    a = re.findall(guize,resp.text) # 得到匹配的内容
    for i in a: # 进行遍历
      name = i
      print(f'正在下载{name}')
      resp1 = requests.get(url=f'https://liveapi.huya.com/moment/getMomentContent?videoId={i}',headers=headers).json()['data']['moment']['videoInfo']['definitions']
      for j in resp1:
            resp2 = requests.get(url=j['url'],headers=headers).content
            with open(f'./shiping/{name}.mp4','wb') as f:
                f.write(resp2)
                print(f'{name}保存完成')
            break # 是一个列表 得到第0个就行 所以终止

祝大家元旦快乐!

Ls30 发表于 2021-12-31 23:37

感谢分享思路和源码,元旦同乐啊!

lz132 发表于 2022-1-1 00:04

最近刚好在学习python不错不错{:1_918:}

猫神 发表于 2022-1-2 14:43

想问一下老哥 要想制作一个微信小程序每日自动打卡的工具难不难是不是也要用到python

geniuslch0105 发表于 2022-1-4 13:08

元旦快乐呀,老哥!!!

wantwill 发表于 2022-3-30 11:41


最近刚好在学习python不错不错
页: [1]
查看完整版本: 爬某牙(顔值)视频