python爬虫 爬抓虎牙视频,并保存到当地文件夹

今天毛毛的笔记是写一个爬抓短视频的爬虫程序,在网上看了一些人写的爬虫,本来想直接拷贝来用的,发现代码都是断断续续的,所以整理了一下,并且封装成了函数。
总结:requests下面用get()方法来构建一个向服务器请求资源的url对象,保存数据的时候也是。
修改了正则表达式,因为有的时候名字会出现\n换行符,会导致保存报错 ,所以将其排除在外了,还优化了批量采集。

# -*- codeing = utf-8 -*-
# @Time : 2022/9/30 0030 14:23
# @Author : 毛毛
# @File : yingping.py
# @Function :爬抓虎牙视频
import re

import requests
import re
import json

#第一步:获取视频列表,所有视频的ID
def pazhua_ID():
    dataurllist = []
    for i in range(3,6):
        listurl = f'https://v.huya.com/g/cоsplay?set_id=35&order=mostplay&page={ i }'
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
        }
        # 用代码直接获取的 一般大多数都是直接 cookie
        response = requests.get(url=listurl, headers=headers)
        html = response.text

        result = re.findall('', html)[0]
        # 需要把获取的字符串数据, 转成json字典数据
        json_data = json.loads(result)['videoData']['videoDataList']['value']
        # json_data 列表 里面元素是字典
        #print(json_data)
        video_ids = [i['vid'] for i in json_data]  # 列表推导式
        # lis = []
        # for i in json_data:
        #     lis.append(i['vid'])
        # print(video_ids)
        # print(type(json_data))
        dataurllist.append(video_ids)
    return dataurllist   #返回所有ID 组成一个数组


# 抓取视频地址和标题
def main(datalist):
    datalist = []  # 给个空数组保存所有数据用来返回

    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
    }
    #这里 用上面写好的函数pazhua_ID() 循环拿到每一个ID
    listid = pazhua_ID()
    for list in listid:
        for id in list:
            html_url = f'https://liveapi.huya.com/moment/getMomentContent?videoId={ id }&uid=&_=1634127164373'
            response = requests.get(url=html_url, headers=headers)
            title = response.json()['data']['moment']['title']
            video_url = response.json()['data']['moment']['videoInfo']['definitions'][0]['url']
            video_info = [title, video_url]

            #print(video_info)
            datalist.append(video_info)

    return datalist




#保存数据
def savevideo(datalist):
    # 保存数据, 也是还需要对于播放地址发送请求的
    # response.content 获取响应的二进制数据
    for data in datalist:
        #data[0] 名字 data[1]视频地址
        title = str(data[0])
        path = data[1]
        new_title = re.sub(r'[\/:*?"<>|\n]', '_', title)

        shiping = requests.get(path).content
        # 'video\\' + title + '.mp4' 文件夹路径以及文件名字 mode 保存方式 wb二进制保存方式
        with open(f'video/{new_title}.mp4', mode='wb') as f:  #保存路径
            f.write(shiping)
            print('保存成功: ', new_title)

    print("下载完成。。。。。")



if __name__ == "__main__":
    datalist = []
    # 抓取,并返回所有数据datalist
    # 保存数据
    datalist = main(datalist)
    savevideo(datalist)

如下载链接失效,请联系管理员处理【QQ:941007525,微信:style028666】

免责申明:
本站资源均来源于互联网,如有侵权请联系站长!将第一时间删除
本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
资源仅供学习参考请勿商用或其它非法用途,否则一切后果用户自负!

毛毛博客 » python爬虫 爬抓虎牙视频,并保存到当地文件夹

发表回复

简简单单,不求发展

立即查看 了解详情