日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 爬取B站原視頻的實例代碼

瀏覽:162日期:2022-07-11 18:12:16

B站原視頻爬取,我就不多說直接上代碼。直接運行就好。B站是把視頻和音頻分開。要把2個合并起來使用。這個需要分析才能看出來。然后就是登陸這塊是比較難的。

import osimport reimport argparseimport subprocessimport prettytablefrom DecryptLogin import login’’’B站類’’’class Bilibili():def __init__(self, username, password, **kwargs):self.username = usernameself.password = passwordself.session = Bilibili.login(username, password)self.headers = {’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36’}self.user_info_url = ’http://api.bilibili.com/x/space/acc/info’self.submit_videos_url = ’http://space.bilibili.com/ajax/member/getSubmitVideos’self.view_url = ’http://api.bilibili.com/x/web-interface/view’self.video_player_url = ’http://api.bilibili.com/x/player/playurl’’’’運行主程序’’’def run(self):while True:userid = input(’請輸入目標用戶ID(例:345993405)(我的一個LOL好友凱撒可以關注他一下 謝謝) ——> ’)user_info = self.__getUserInfo(userid)tb = prettytable.PrettyTable()tb.field_names = list(user_info.keys())tb.add_row(list(user_info.values()))print(’獲取的用戶信息如下:’)print(tb)is_download = input(’是否下載該用戶的所有視頻(y/n, 默認: y) ——> ’)if is_download == ’y’ or is_download == ’yes’ or not is_download:self.__downloadVideos(userid)’’’根據userid獲得該用戶基本信息’’’def __getUserInfo(self, userid):params = {’mid’: userid, ’jsonp’: ’jsonp’}res = self.session.get(self.user_info_url, params=params, headers=self.headers)res_json = res.json()user_info = {’用戶名’: res_json[’data’][’name’],’性別’: res_json[’data’][’sex’],’個性簽名’: res_json[’data’][’sign’],’用戶等級’: res_json[’data’][’level’],’生日’: res_json[’data’][’birthday’]}return user_info’’’下載目標用戶的所有視頻’’’def __downloadVideos(self, userid):if not os.path.exists(userid):os.mkdir(userid)# 非會員用戶只能下載到高清1080Pquality = [(’16’, ’流暢 360P’), (’32’, ’清晰 480P’), (’64’, ’高清 720P’), (’74’, ’高清 720P60’), (’80’, ’高清 1080P’), (’112’, ’高清 1080P+’), (’116’, ’高清 1080P60’)][-3]# 獲得用戶的視頻基本信息video_info = {’aids’: [], ’cid_parts’: [], ’titles’: [], ’links’: [], ’down_flags’: []}params = {’mid’: userid, ’pagesize’: 30, ’tid’: 0, ’page’: 1, ’order’: ’pubdate’}while True:res = self.session.get(self.submit_videos_url, headers=self.headers, params=params)res_json = res.json()for item in res_json[’data’][’vlist’]:video_info[’aids’].append(item[’aid’])if len(video_info[’aids’]) < int(res_json[’data’][’count’]):params[’page’] += 1else:breakfor aid in video_info[’aids’]:params = {’aid’: aid}res = self.session.get(self.view_url, headers=self.headers, params=params)cid_part = []for page in res.json()[’data’][’pages’]:cid_part.append([page[’cid’], page[’part’]])video_info[’cid_parts’].append(cid_part)title = res.json()[’data’][’title’]title = re.sub(r'[‘’/:*?'<>|s’]', ’ ’, title)video_info[’titles’].append(title)print(’共獲取到用戶ID<%s>的<%d>個視頻...’ % (userid, len(video_info[’titles’])))for idx in range(len(video_info[’titles’])):aid = video_info[’aids’][idx]cid_part = video_info[’cid_parts’][idx]link = []down_flag = Falsefor cid, part in cid_part:params = {’avid’: aid, ’cid’: cid, ’qn’: quality, ’otype’: ’json’, ’fnver’: 0, ’fnval’: 16}res = self.session.get(self.video_player_url, params=params, headers=self.headers)res_json = res.json()if ’dash’ in res_json[’data’]:down_flag = Truev, a = res_json[’data’][’dash’][’video’][0], res_json[’data’][’dash’][’audio’][0]link_v = [v[’baseUrl’]]link_a = [a[’baseUrl’]]if v[’backup_url’]:for item in v[’backup_url’]:link_v.append(item)if a[’backup_url’]:for item in a[’backup_url’]:link_a.append(item)link = [link_v, link_a]else:link = [res_json[’data’][’durl’][-1][’url’]]if res_json[’data’][’durl’][-1][’backup_url’]:for item in res_json[’data’][’durl’][-1][’backup_url’]:link.append(item)video_info[’links’].append(link)video_info[’down_flags’].append(down_flag)# 開始下載out_pipe_quiet = subprocess.PIPEout_pipe = Nonearia2c_path = os.path.join(os.getcwd(), ’tools/aria2c’)ffmpeg_path = os.path.join(os.getcwd(), ’tools/ffmpeg’)for idx in range(len(video_info[’titles’])):title = video_info[’titles’][idx]aid = video_info[’aids’][idx]down_flag = video_info[’down_flags’][idx]print(’正在下載視頻<%s>...’ % title)if down_flag:link_v, link_a = video_info[’links’][idx]# --視頻url = ’'{}'’.format(’' '’.join(link_v))command = ’{} -c -k 1M -x {} -d '{}' -o '{}' --referer='https://www.bilibili.com/video/av{}' {} {}’command = command.format(aria2c_path, len(link_v), userid, title+’.flv’, aid, '', url)print(command)process = subprocess.Popen(command, stdout=out_pipe, stderr=out_pipe, shell=True)process.wait()# --音頻url = ’'{}'’.format(’' '’.join(link_a))command = ’{} -c -k 1M -x {} -d '{}' -o '{}' --referer='https://www.bilibili.com/video/av{}' {} {}’command = command.format(aria2c_path, len(link_v), userid, title+’.aac’, aid, '', url)print(command)process = subprocess.Popen(command, stdout=out_pipe, stderr=out_pipe, shell=True)process.wait()# --合并command = ’{} -i '{}' -i '{}' -c copy -f mp4 -y '{}'’command = command.format(ffmpeg_path, os.path.join(userid, title+’.flv’), os.path.join(userid, title+’.aac’), os.path.join(userid, title+’.mp4’))print(command)process = subprocess.Popen(command, stdout=out_pipe, stderr=out_pipe_quiet, shell=True)process.wait()os.remove(os.path.join(userid, title+’.flv’))os.remove(os.path.join(userid, title+’.aac’))else:link = video_info[’links’][idx]url = ’'{}'’.format(’' '’.join(link))command = ’{} -c -k 1M -x {} -d '{}' -o '{}' --referer='https://www.bilibili.com/video/av{}' {} {}’command = command.format(aria2c_path, len(link), userid, title+’.flv’, aid, '', url)process = subprocess.Popen(command, stdout=out_pipe, stderr=out_pipe, shell=True)process.wait()os.rename(os.path.join(userid, title+’.flv’), os.path.join(userid, title+’.mp4’))print(’所有視頻下載完成, 該用戶所有視頻保存在<%s>文件夾中...’ % (userid))’’’借助大佬開源的庫來登錄B站’’’@staticmethoddef login(username, password):_, session = login.Login().bilibili(username, password)return session’’’run’’’if __name__ == ’__main__’:parser = argparse.ArgumentParser(description=’下載B站指定用戶的所有視頻(僅支持Windows下使用)’)parser.add_argument(’--username’, dest=’username’, help=’xxx’, type=str, required=True)parser.add_argument(’--password’, dest=’password’, help=’xxxx’, type=str, required=True)print(parser)args = parser.parse_args([’--password’, ’xxxx’,’--username’, ’xxx’])# args = parser.parse_args([’--password’, ’FOO’])print(’5’)bili = Bilibili(args.username, args.password)bili.run()

把賬號密碼填上就行。這是我根據一個微信公眾號Charles大佬的想法寫的。大家可以去關注他一下。

以上就是python 爬取B站原視頻的實例代碼的詳細內容,更多關于python 爬取B站原視頻的資料請關注好吧啦網其它相關文章!

相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
伊人久久亚洲热| 国产一区二区三区四区大秀| 久久精品99国产精品日本| 黄色精品网站| 亚洲二区三区不卡| 亚洲一级影院| 久久久久蜜桃| 久久久久中文| 国产精品xx| 在线手机中文字幕| 日韩久久电影| 日韩精品午夜| 999国产精品视频| 久久精品青草| 国产在线不卡| 免费国产亚洲视频| 日韩成人综合| 欧美日韩精品免费观看视频完整 | 激情六月综合| 国产视频一区在线观看一区免费| 日韩精品一级二级| 日韩av黄色在线| 欧美午夜三级| 福利一区和二区| 今天的高清视频免费播放成人| 亚洲欧美日本国产专区一区| 亚洲视频国产精品| 国产精成人品2018| 久久久久国产精品一区二区| 国产亚洲高清视频| 国产欧美在线| 亚洲v在线看| 四虎精品永久免费| 国际精品欧美精品| 亚洲女同一区| 麻豆精品av| 影院欧美亚洲| 91精品国产自产在线丝袜啪| 神马日本精品| 亚洲综合三区| 国产精品九九| 国产一区久久| 精品一区二区三区在线观看视频| 成人羞羞视频播放网站| 日本不卡在线视频| 亚洲调教视频在线观看| 国产日韩欧美三级| 国产精品色网| 久久婷婷av| 国产精品对白| 亚洲精品婷婷| 91九色精品国产一区二区| 日本亚洲视频| 香蕉久久精品| 超碰成人av| 欧美在线日韩| 一区二区日韩免费看| 久久影视一区| 久久高清免费| 三上亚洲一区二区| 日韩av一区二区三区四区| 免费av一区二区三区四区| 91亚洲国产高清| 黄色网一区二区| 国产精品极品在线观看| 热久久免费视频| 亚洲大全视频| 国产一区二区三区四区| 国产毛片一区二区三区| 久热精品在线| 免费精品视频| 一区二区精品| 欧美亚洲综合视频| 国产精品巨作av| 美女国产精品久久久| 久久字幕精品一区| 国产成人精品福利| av最新在线| 天堂资源在线亚洲| 亚洲一区二区免费看| 蜜桃视频在线观看一区二区| 亚洲一区国产一区| 午夜在线精品偷拍| 国产亚洲福利| 欧美一区精品| 97精品国产福利一区二区三区| 日韩欧美在线中字| 欧美在线亚洲| 国产伦精品一区二区三区千人斩| 麻豆精品视频在线观看| 免费高潮视频95在线观看网站| 五月精品视频| 国产精品igao视频网网址不卡日韩| 欧美偷窥清纯综合图区| 高清一区二区三区av| 国产精品日韩欧美一区| 欧美日韩亚洲一区在线观看| 久久天堂影院| 尤物精品在线| 国产精品久久久免费| 亚洲调教视频在线观看| 国产欧美日韩一级| 在线国产一区| 国产91在线精品| 亚洲精品一二三**| 久久国产中文字幕| 久久免费精品| 视频精品一区| 国产一区久久| 国产精品99在线观看| 日本成人手机在线| 99久久精品国产亚洲精品| 综合国产视频| 99久久夜色精品国产亚洲1000部| 欧美日韩亚洲一区三区| 国产视频一区欧美| 新版的欧美在线视频| 国产视频一区二| 91超碰国产精品| 福利一区二区三区视频在线观看| 亚洲精品高潮| 另类国产ts人妖高潮视频| 久久男人av资源站| 久久不见久久见中文字幕免费| 欧美中文日韩| 亚洲一区二区成人| 久久国产日本精品| 国产色99精品9i| 日韩精品成人在线观看| 鲁大师影院一区二区三区| 久久久久免费av| 久久久久网站| 亚洲午夜在线| 日韩三区免费| 亚洲成人不卡| 日韩av免费| 在线视频观看日韩| 欧美另类综合| 在线国产精品一区| 少妇精品久久久一区二区| 日韩国产在线一| 久久国产生活片100| 国产精品视频一区二区三区综合| 精品国产一区二区三区av片| 国产精品1区在线| 久久精品国产99国产精品| 精品久久精品| 色婷婷久久久| aa亚洲婷婷| 亚洲尤物av| 国产精品jk白丝蜜臀av小说| 精品理论电影在线| 欧美手机在线| 亚洲区国产区| 欧美日韩亚洲一区三区| 精品久久久久久久| 亚洲免费高清| 国产日韩高清一区二区三区在线| 国产剧情在线观看一区| 四虎4545www国产精品| 蜜桃av一区二区三区电影| 国产精品成人国产| 亚洲高清成人| 久久久久黄色| 免费在线观看精品| 国产一区二区三区四区二区| 亚洲神马久久| 国产suv精品一区| 亚洲资源网站| 日韩国产欧美| 亚洲欧美网站在线观看| 日韩综合在线| 综合五月婷婷| 国产精品主播| 视频一区二区中文字幕| 91日韩在线| 国产精品一区二区美女视频免费看 | 精品国产黄a∨片高清在线| 激情六月综合| 精品国产精品国产偷麻豆| 久久精品观看| 国产精品九九| 黄色日韩在线| 在线看片福利| 亚洲深深色噜噜狠狠爱网站| 中文一区一区三区高中清不卡免费| 日本不卡视频在线| 999国产精品视频| 国产一区二区三区网| 国产情侣一区在线| 日韩精品福利一区二区三区| 日韩一级精品| 亚洲精品小说| 欧美~级网站不卡| 亚洲人成在线网站| 69堂精品视频在线播放| 婷婷精品在线观看| 一区二区自拍| 久久国产精品久久久久久电车| 亚洲成人精品|