爬取抖音视频
import requests user_id = '58841646784' # 6556303280 # 获取一个用户的所有作品 """ signature = _bytedAcrawler.sign('用户ID') douyin_falcon:node_modules/byted-acrawler/dist/runtime """ import subprocess signature = subprocess.getoutput('node s1.js %s' %user_id) user_video_list = [] # ############################# 获取个人作品 ########################## user_video_params = { 'user_id': str(user_id), 'count': '21', 'max_cursor': '0', 'aid': '1128', '_signature': signature, 'dytk': 'b4dceed99803a04a1c4395ffc81f3dbc' # '114f1984d1917343ccfb14d94e7ce5f5' } def get_aweme_list(max_cursor=None): if max_cursor: user_video_params['max_cursor'] = str(max_cursor) res = requests.get( url="https://www.douyin.com/aweme/v1/aweme/post/", params=user_video_params, headers={ 'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', 'x-requested-with':'XMLHttpRequest', 'referer':'https://www.douyin.com/share/user/58841646784', } ) content_json = res.json() aweme_list = content_json.get('aweme_list', []) user_video_list.extend(aweme_list) if content_json.get('has_more') == 1: return get_aweme_list(content_json.get('max_cursor')) get_aweme_list() # ############################# 获取喜欢作品 ########################## favor_video_list = [] favor_video_params = { 'user_id': str(user_id), 'count': '21', 'max_cursor': '0', 'aid': '1128', '_signature': signature, 'dytk': 'b4dceed99803a04a1c4395ffc81f3dbc' } def get_favor_list(max_cursor=None): if max_cursor: favor_video_params['max_cursor'] = str(max_cursor) res = requests.get( url="https://www.douyin.com/aweme/v1/aweme/favorite/", params=favor_video_params, headers={ 'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', 'x-requested-with':'XMLHttpRequest', 'referer':'https://www.douyin.com/share/user/58841646784', } ) content_json = res.json() aweme_list = content_json.get('aweme_list', []) favor_video_list.extend(aweme_list) if content_json.get('has_more') == 1: return get_favor_list(content_json.get('max_cursor')) get_favor_list() # ############################# 视频下载 ########################## for item in user_video_list: video_id = item['video']['play_addr']['uri'] video = requests.get( url='https://aweme.snssdk.com/aweme/v1/playwm/', params={ 'video_id':video_id }, headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', 'x-requested-with': 'XMLHttpRequest', 'referer': 'https://www.douyin.com/share/user/58841646784', }, stream=True ) file_name = video_id + '.mp4' with open(file_name,'wb') as f: for line in video.iter_content(): f.write(line) for item in favor_video_list: video_id = item['video']['play_addr']['uri'] video = requests.get( url='https://aweme.snssdk.com/aweme/v1/playwm/', params={ 'video_id':video_id }, headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', 'x-requested-with': 'XMLHttpRequest', 'referer': 'https://www.douyin.com/share/user/58841646784', }, stream=True ) file_name = video_id + '.mp4' with open(file_name, 'wb') as f: for line in video.iter_content(): f.write(line)