在这说一下我提取抖音视频的方法
1.首先是抖音视频我不是从APP上抓取的,因为对应用户视频列表抓取链接存在字段加密,无法获取我的视频信息获取步骤如下:
1)通过访问登录新抖微信小程序,采用fiddler对其进行抓包,获取到根据用户名搜索的API,
post请求https://xd.newrank.cn/xdnphb/nr/cloud/douyin/mini/detail/accountInfoAll
{"uid":"uname"}
2)通过搜索获取到用户对应的UID,以及点击进入用户信息界面抓取对应的用户最近视频信息列表API,
post请求:
https://xd.newrank.cn/xdnphb/nr/cloud/douyin/mini/detail/aweme
{\"uid\":\""+uid+"\",\"sort\":\"create_time\"}
3)根据视频列表API获取到对应的视频ID,通过API就可以获得对应的视频信息及下载地址
"https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="+awemeid
4)我在这里视频下载使用的是aria2-1.35.0-win-64bit-build,aria2c进行下载的。
用户信息获取

```python
import codecs

import requests
import json
import time
import re
mcn_url = "https://xd.newrank.cn/xdnphb/nr/cloud/douyin/accountSearch?xyz=5b656c1bfdad2f2b81ee1c7b7ee8d7a1&nonce=93756e082"
headers = {
            "cookie": "tt_token=true; token=B84BC70398524281A23B32907A923FA3; Hm_lvt_a19fd7224d30e3c8a6558dcb38c4beed=1600998811; UM_distinctid=174c2f7269d8e-018b82af719c7a-5d462912-144000-174c2f7269e2c0; __root_domain_v=.newrank.cn; _qddaz=QD.5qt4ff.423qqb.kfhld1hh; Hm_lvt_e20c9ff085f402c8cfc53a441378ca86=1601003995; Hm_lpvt_e20c9ff085f402c8cfc53a441378ca86=1601003995; _uab_collina=160100400201237841270221; Hm_lpvt_a19fd7224d30e3c8a6558dcb38c4beed=1601176471; tt_token=true",
            "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
        }

def create_mcn_body():
    """构建mcn机构请求体"""
    data = {"input": {"keyword": "Mr_nuannan", "type": ""}, "xd_tags": [], "type": "", "nr_range_list": [], "verify": "",
            "contact": "", "mcn": "", "with_fusion_shop_entry": "", "is_live": "",
            "account_info": {"province": "", "city": "", "gender": "",
                             "constellation_name": "", "age_range": ""},
            "data_performance": {"favorited_range_list": [], "follower_range_list": []},
            "relate_goods": {"goods_name": "", "goods_cate1": "", "goods_cate2": "", "price_range": "",
                             "goods_sales_range": "", "visitor_count_range": "", "goods_source": "",
                             "price": {"gte": "", "lt": ""}},
            "fans_info": {"province": "", "city": "", "gender": "", "age_range": "", "constellation_name": ""},
            "sort": "", "size": 20, "start": 1}
    return data

def get_response(url, headers, body):
    time.sleep(5)
    """获取响应"""
    ret = requests.post(url,
                        headers=headers,
                        json=body
                        )
    return ret.text

def get_mcn( page):
        """获取机构信息"""
        data = create_mcn_body(page)
        result = get_response(mcn_url, headers, data)
        response = json.loads(result)
        data = response.get('data')
        mcn_list = data.get('list')
        return mcn_list

def get_video(uid,page):
    data = create_mcn_body(page)
    result = get_response(mcn_url, headers, data)
    response = json.loads(result)

def parse_mcn(mcn_element):
        """解析mcn机构"""
        mcn_item =dict()
        mcn_item['uid'] = mcn_element.get('uid')
        mcn_item['account'] = mcn_element.get('account')
        mcn_item['nickname'] = re.sub("<[^>]*>", "", mcn_element.get('nickname'))
        mcn_item['signature'] = mcn_element.get('signature').replace('\n', '').replace('\r', '')
        mcn_item['follower_count'] = mcn_element.get('follower_count')
        mcn_item['aweme_count'] = mcn_element.get('aweme_count')
        return mcn_item

def userMsg():
        mcn_list = get_mcn(1)
        print(mcn_list)
        # 当前页机构 list
        user_list=[]
        for mcn in mcn_list:
            mcn_item = parse_mcn(mcn)
            user_list.append(mcn_item)
        return user_list

def videoMsg():
    video_list=get_video()

if __name__ == '__main__':
    f = codecs.open('./dy/userMsg.txt', "a", 'utf-8')
    user_list=userMsg()
    for user in user_list:
        print(user)
        f.write(user.get("uid") + "|"+ user.get("account") + "|"+user.get("nickname") + "|"+user.get("signature") + "|"+user.get("follower_count") + "|"+user.get("aweme_count") + "|" +'\r\n')

```
视频信息获取

```python
import codecs
import http

import requests
import json
import time
import re
detail_url="https://xd.newrank.cn/xdnphb/nr/cloud/douyin/mini/detail/aweme"

headers2 = {
            "cookie": "vtoken=1;token=890CBCEEF50E43D7AB241F0BE3E892F7",
            "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat",
        }

def create_aweme_body():
    data={"uid":"110563717491","sort":"create_time"}
    return data

def get_aweme_response(detailurl, headers, body):
    time.sleep(5)
    """获取响应"""
    ret = requests.post(detailurl,
                        headers=headers,
                        json=body
                        )
    return ret.text

def get_aweme( ):
        """获取视频信息"""
        data = create_aweme_body()
        result = get_aweme_response(detail_url, headers2, data)
        response = json.loads(result)
        print(response)
        data = response.get('data')
        mcn_list = data.get('list')
        return mcn_list

def parse_mcn(mcn_element):
        """解析mcn机构"""
        mcn_item =dict()
        mcn_item['uid'] = mcn_element.get('uid')
        mcn_item['account'] = mcn_element.get('account')
        mcn_item['nickname'] = re.sub("<[^>]*>", "", mcn_element.get('nickname'))
        mcn_item['signature'] = mcn_element.get('signature').replace('\n', '').replace('\r', '')
        mcn_item['follower_count'] = mcn_element.get('follower_count')
        mcn_item['aweme_count'] = mcn_element.get('aweme_count')
        return mcn_item

def parse_aweme(aweme_element):
    """解析mcn机构"""
    aweme_item = dict()
    aweme_item['aweme_id'] = aweme_element.get('aweme_id')
    aweme_item['aweme_desc'] = aweme_element.get('aweme_desc')
    aweme_item['comment_count'] = re.sub("<[^>]*>", "", aweme_element.get('comment_count'))
    aweme_item['digg_count'] = aweme_element.get('digg_count').replace('\n', '').replace('\r', '')
    aweme_item['create_time'] = aweme_element.get('create_time')
    aweme_item['share_url'] = aweme_element.get('share_url')
    return aweme_item

def parse_detail(aweme_element):
        """解析mcn机构"""
        detail_item = dict()
        detail_item['aweme_id'] = aweme_element.get('aweme_id')
        detail_item['play_addr'] = aweme_element.get('video').get('play_addr').get('url_list')[0]
        detail_item['desc'] =aweme_element.get('desc')
        detail_item['author_user_id'] = aweme_element.get('author_user_id')
        return detail_item

def awemeListMsg():
        aweme_list = get_aweme(1)
        # print(aweme_list)
        # 当前页机构 list
        user_list=[]
        for aweme in aweme_list:
            aweme_item = parse_aweme(aweme)
            user_list.append(aweme_item)
        return user_list

# 发送给aria2开始下载
def SendDownloadInfo(id, url, referer, savePath,vname):
    jsonreq = json.dumps({"jsonrpc": "2.0", "id": id, "method": "aria2.addUri",
                          "params": [[url], {"referer": referer, "dir": savePath,"out":vname}]})
    resp = requests.post("http://localhost:6800/jsonrpc", data=jsonreq)
    print(jsonreq)
    if resp.status_code == 200:
        return True
    return False

if __name__ == '__main__':

f = codecs.open('./dy/awemeMsg.txt', "a", 'utf-8')
    aweme_list=awemeListMsg()
    for aweme in aweme_list:
        url="https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="+aweme.get("aweme_id")
        response = requests.get(url=url)
        detailmsg= dict()
        if response.status_code >= 200 and response.status_code < 300:
            data = response.json()
            print(data)
            detail_list = data['item_list']
            for detail in detail_list:
                detailmsg=parse_detail(detail)
                print(detailmsg.get("play_addr"))
                SendDownloadInfo(detailmsg.get("aweme_id"), detailmsg.get("play_addr"), 'https://www.iesdouyin.com', './dy',detailmsg.get("aweme_id")+'.mp4')
        f.write(aweme.get("aweme_id") + "|"+ aweme.get("aweme_desc") + "|"+aweme.get("comment_count") + "|"+aweme.get("digg_count") + "|"+aweme.get("create_time") + "|"+aweme.get("share_url") + "|" +'\r\n')

```
其中代码在使用的aria2c的使用方法为(采用RPC下载)
使用rpc调用aria2c.exe进行视频下载
aria2c.exe --conf-path=./aria2.conf(在对应的目录下进入命令界面运行该命令)
其中aria2c.exe下载地址如下:
http://file.mail.10086.cn/share2/fileexpress/filedownload.htm?sendid=45870705559957161213222811320431

抖音视频根据用户ID下载方法相关推荐

  1. 抖音素材哪里收集_教大家抖音视频素材哪里找的方法

    教大家抖音视频素材哪里找的方法 关于到现在教大家抖音视频素材哪里找的方法这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道教大家抖音视频素材哪里 ...

  2. 不会制作优质抖音视频?以下附步骤方法

    要在抖音上获得更多的关注和粉丝,制作高质量的抖音视频是必不可少的一环.那么,怎样制作优质的抖音视频呢?不若与众今天就来给创作者们分享一些小技巧. 一.抖音视频的主题 一个好的主题是制作优质抖音视频的重 ...

  3. 抖音视频片段截取的简单方法

    手机视频片段截取的简单方法,首先在手机上安装并启动"王者剪辑app",进入一键剪辑中的"时长剪切"功能, 导入需要剪切的视频, 接着选择需要剪切的时长片段,然后 ...

  4. 如何去掉抖音短视频水印----全网最好用的去抖音视频水印方法

    抖音视频去水印最方便的方法是什么呢?就是直接保存.用去水印版的安装包,安装好之后,喜欢的视频直接保存就可以去水印,全网最好用的方法.不需要复制链接,解析视频再下载等一系列烦琐操作. 视频版操作方法在这 ...

  5. 抖音视频无水印下载工具 绿色版

    抖音视频无水印下载是一款用于抖音视频解析出来并下载的下载工具.可以轻松下载自己喜欢的视频,而且无水印,需要的快来下载使用吧! 抖音视频无水印下载 [工具特点] 支持解析任何抖音视频 解析出来的视频没有 ...

  6. 抖音短视频服务器维护中无法打开,打不开抖音视频的解决办法

    打不开抖音视频的解决办法 2020-12-16 12:19:45  来源:网络整理 扫码可以: 1.在手机上浏览 2.分享给微信好友或朋友圈 摘要: 以抖音12.9.0版本为例,打不开抖音视频的原因及 ...

  7. python爬取抖音用户数据_python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

  8. python之批量下载抖音视频

    python批量下载抖音视频 知识储备:博主是在Pycharm下进行的 文件夹:dou_ying 1:在文件夹doy_ying下新建第一个文件:dou_ying_video_download.py 代 ...

  9. 如何使用 Python 开发一个【抖音视频下载神器】

    国外有个在线网站,专门帮别人下载 YouTube 上面的视频,功能很简单直接,就是把你想要的 youtube 视频地址复制进去,然后点击 start 就可以下载视频: 不过,当你点击下载的时候,会跳转 ...

  10. python爬取抖音用户数据_使用python爬取抖音视频列表信息

    如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息 抓包分析 Chrome Deveploer Tools Chro ...

最新文章

  1. C++11 unordered_map详细介绍
  2. [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)
  3. s5pv210运行裸机程序的方法之在SDRAM(DDR2)中运行
  4. 正则化方法之DropBlock
  5. 好久没有处理过故障了
  6. boost.asio系列——socket编程
  7. 机器人视觉——使用numpy进行像素的处理 || 获取图像的属性 || 感兴趣区域ROI || 通道的拆分与合并
  8. ImageView可直接调用的,根据URL设置图片的工具类
  9. 真恶心,用安卓模拟器开微信不能找附近的人
  10. 我的高质量软件发布心得
  11. python装饰器模式带参数_Python装饰器使用实例:验证参数合法性 请教Python 使用装饰器实现单例模式的原理...
  12. 行内元素(HTML、CSS)
  13. mysql 多个表union查询_mysql查询两个表,UNION和where子句
  14. js中的4种函数调用模式:函数调用、方法调用、构造器调用、间接调用
  15. Codeforces Round #379 (Div. 2) E. Anton and Tree —— 缩点 + 树上最长路
  16. 【Word】快速插入参考文献
  17. 【笔记-uni app】《uni-app 快速入门 从零开始实现新闻资讯类跨端应用》
  18. 如何解决Sketch导出文件出现色差偏暗或偏淡这个问题?
  19. 论文《DeepHawkes: Bridging the Gap between Prediction and Understanding of Information Cascades》阅读
  20. 16进制颜色值透明度百分比对照

热门文章

  1. 搜索不到网络计算机和设备,电脑搜不到无线网络原因分析和对应解决办法
  2. 上海交通大学计算机专业考研多少分进复试,2019考研:初试分数370+,有希望进上海交通大学么?...
  3. 路由器第三方固件的刷入与调试
  4. 手机查看云服务器文件夹,手机查看云服务器文件夹
  5. 瞅瞅Levels.fyi发布的2020年度程序员收入报告
  6. 飞鱼星路由器端口映射/端口转发的设置步骤及注意事项
  7. bootstrap table表格 设置背景颜色 设置字体颜色cellStyle 显示隐藏列(更换工具栏图标) 固定列 导出(兼容全部导出时(all)) 调整列宽 日期格式化1970-01-01bug
  8. 永久删除计算机文件怎么操作步骤,如何彻底删除电脑中的文件 永久删除文件方法...
  9. import xx fromxx 的含义
  10. 男人们必知的人生定律