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爬虫 爬抓虎牙视频,并保存到当地文件夹
免责申明:
本站资源均来源于互联网,如有侵权请联系站长!将第一时间删除
本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
资源仅供学习参考请勿商用或其它非法用途,否则一切后果用户自负!
毛毛博客 » python爬虫 爬抓虎牙视频,并保存到当地文件夹