抖音之获取粉丝数

抖音有开放平台,可以走官方oauth 抖音开放平台:抖音开放平台

本项目仅供学习使用,请勿商业使用! 本项目仅供学习使用,请勿商业使用!

抖音有开放平台,可以走oauth授权。 不过由于wx小程序封杀了抖音,所以wx小程序要走抖音官方这条路就行不通了。不多说,直接上源码

DyUtils

package com.zengp.demo.util;

import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import com.zengp.demo.constant.CommConstants;
import com.zengp.demo.model.DyUser;
/**
 * 获取抖音粉丝等相关信息(不走官方授权)
 * 此工具类可直接使用,也可根据其逻辑自行优化
 * @author zengp
 *
 */
public class DyUtils {
	// 短链转长链,目的是将短链解析出来拿到sec_uid,可自行优化
	// 换个新的免费转换接口 旧的已不适用目前抖音的短链转长链
	private static String shortchainUrl = "https://www.json.cn/JsonApi/Api/ShortUrl/restoreShortUrl";
	// 抖音官方接口(未开放)
	private static String dyUrl = "https://www.iesdouyin.com/web/api/v2/user/info/";
	// 必要 新增代理 目前需要模拟浏览器访问才能拿到数据
	private static String userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36";

	public static DyUser dyFans (String link) {
		link = clearDyHomeLink(link);
		RestTemplate restT = new RestTemplate();
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
		MultiValueMap<String,String> map = new LinkedMultiValueMap<>();
		map.add("url", link);
		HttpEntity<MultiValueMap<String,String>> request = new HttpEntity<>(map,headers);
		ResponseEntity<String> response = restT.postForEntity(shortchainUrl, request, String.class);
		String dyResult = response.getBody();
		String secUid = getSecUid(dyResult);
		DyUser dyUser = getDyFans(secUid);
		return dyUser;
	}

	/**
	 * 获取抖音的sec_uid
	 * @param str
	 * @return
	 */
	private static String getSecUid (String str) {
		String result = "";
		StringBuffer sb = new StringBuffer(str);
		int start = sb.indexOf(CommConstants.secUid) + CommConstants.secUid.length() + CommConstants.cursor;
		int end = start + CommConstants.uidLength;
		result = sb.substring(start, end);
		return result;
	}
	/**
	 *  获取抖音相关信息
	 * @param secUid
	 * @return
	 */
	private static DyUser getDyFans (String secUid) {
		RestTemplate restTemplate = new RestTemplate();
		String url = dyUrl + CommConstants.secUidUrl + secUid;
		HttpHeaders headers = new HttpHeaders();
		headers.set("user-agent", userAgent);
		// 注意几个请求参数
		HttpEntity<DyUser> response = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(null, headers), DyUser.class);
		DyUser dyUser = response.getBody();
		return dyUser;
	}

	/**
	 *  纯净化抖音主页分享链接
	 * 保险起见建议还是让用户自行去掉中文
	 * @param link
	 * @return
	 */
	private static String clearDyHomeLink (String link) {
		String result = "";
		// 这里可以优化
		result = link.replaceAll(CommConstants.REGEX_CHINESE, "");
		result = result.replaceAll(CommConstants.REGEX_COMMA, "");
		result = result.replaceAll(CommConstants.REGEX_EXCLAMATORY_MARK, "");
		result = result.trim();
		return result;
	}
}

}

主要是通过抖音的分享链接短链解析长链拿到secuid,然后通过抖音非官方接口请求到数据。所以就做到了通过用户主页链接就能拿到该用户的所有公开资料,可以自行选取自己要的字段,我主要是要粉丝数、点赞数和关注数。

使用示例

用雷猴的某音主页分享链接

运行结果

实际对比

源码中涉及到的接口,如有侵权,请联系博主。

原创不易,转载请标明出处。

本文仅供学习使用,请勿商业使用。

由于抖音接口经常有变动,所以会导致获取失败的问题,本文后续将不再频繁更新,如果获取数据有问题请留言,我看到后会及时解决,请关注仓库更新动向。

新增国内源码地址,方便大家查看。

完整源码

github:

https://github.com/Zeng49487/MediaFans

国内gitee:

https://gitee.com/zp49487/MediaFans

### 使用LSTM进行粉丝增长预测 #### 据准备 为了构建有效的LSTM模型来预测粉丝的增长情况,首先需要收集并整理相关的时间序列据。这通常涉及获取特定账号每日新增粉丝的历史记录以及其他可能影响因素的信息,比如发布的视频量、互动率等。 #### 特征工程 考虑到时间依赖性和周期模式对于此类预测的重要性,在特征设计阶段应该特别注意以下几个方面: - **时间窗口选取**:合理设置过去几天的据作为输入X的一部分,以便捕捉短期趋势。 - **外部变量引入**:如果可以获得其他关联指标(如点赞、评论),这些也可以被纳入考虑范围之内,因为它们往往能够反映用户的活跃度和兴趣偏好变化。 - **标准化/归一化处理**:由于不同维度之间可能存在量纲差异较大等问题,因此建议对原始值做适当变换以提高后续建模效率[^1]。 #### 构建LSTM网络结构 下面给出一段简单的Python代码用于定义一个基于Keras库实现的基础版单层LSTM单元架构: ```python from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense, Dropout def build_lstm_model(input_shape): model = Sequential() # 添加一层LSTM节点,并指定返回整个序列而不是最后一个输出 model.add(LSTM(units=50, return_sequences=True, input_shape=input_shape)) model.add(Dropout(0.2)) # 防止过拟合 # 可选地堆叠更多LSTM层或全连接层... # 输出层采用Dense激活函映射至目标值域内 model.add(Dense(1)) return model ``` 此部分展示了如何创建一个多步长回归任务下的基础框架;实际应用中可根据具体需求调整层、神经元目以及是否加入正则项等内容。 #### 训练过程配置 完成上述准备工作之后就可以着手于参寻优环节了——即寻找一组最优超参组合使得最终泛化能力最强。这里列举了一些常见的做法: - 利用交叉验证方法评估多种候选方案的表现; - 尝试不同的批量大小(batch size)与迭代次(epoch number),观察收敛速度及稳定性; - 对初始权重初始化策略做出尝试,例如He Normal/Glorot Uniform分布等。 值得注意的是,当样本规模庞大时,GPU加速将会极大地缩短运算耗时,从而加快实验进度。 #### 结果解释与可视化 最后一步便是将训练完毕后的最佳模型应用于新据上进行推理操作,并绘制图表直观呈现预测轨迹同真实走势之间的吻合程度。借助Matplotlib或其他绘图工具包可以帮助更好地理解两者间的关系特性。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值