爬取抖音用户的个人基本信息

news2024/12/23 9:15:58

今年夏季,大概七八月份,刀郎开通抖音账号,并在抖音上发布多首作品,一时之间其热度暴涨,其粉丝也是与日俱增。

有人为了蹭热度,直播刀郎粉丝的实时变化情况,直播热度最高的时候同时几千人在线观看。

其大概率使用了爬虫技术,通过不断地模拟发送请求,获取相应数据,实现粉丝数量的实时更新。

经过百度,发现CSDN上有大量关于获取抖音用户数据的爬虫教程,经过实践,发现部分有效、部分失效,教程中的某些URL抖音已经不再使用,使用了新的URL。

结合网络教程,编写了相关代码,尝试了爬取抖音用户基本信息,获得了特定用户的粉丝数据。

截止2023.10.24,程序依然有效,依然可以正常运行。

1、确定请求的URL

关于请求的url,忘记当初是如何具体获取的该URL。

印象中用了两种途径:

一种途径是,利用F12开发者工具搜索关键词,因为需要的是返回用户信息的url,那么可以反推其返回的信息中必然会出现用户名等关键词,因此搜索抖音用户名“xxx”,找到了返回用户基本信息的URL。

另一种途径是,利用抓包软件fiddler分析url,貌似网上教程中都是用的该方法,不过很多教程中的URL已经失效,无法根据抓包软件找到,也可能是我当时没找到。

经验证,响应数据的URL为:

https://www.douyin.com/aweme/v1/web/user/profile/other/

2、构造header

确定了响应数据的URL,那么header直接从浏览器复制即可,此处不再赘述。

3、发送请求

发送请求,可以利用python的包requests来进行。

发送请求时,印象中遇到了SSL、443之类的错误,很多时候是由于没有设置verify字段导致的。

4、输出数据

相应直接拿到的数据是json格式的,需要解析json,转化为字典,然后再获取具体的某个字段。

json数据,可以利用在线格式化工具,对其格式化,查看数据结构,方便查找自己想要的信息。
在这里插入图片描述

附:代码

import json
import requests
headers = {
    'Host': 'www.douyin.com',
    'Connection': 'keep-alive',
    'sec-ch-ua': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'Accept': 'application/json, text/plain, */*',
    'sec-ch-ua-mobile': '?0',
    'User-Agent': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'sec-ch-ua-platform': '"Windows"',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'xxxxxxxxxxxx此处为用户的主页URLxxxxxxxxx',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cookie': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
}

url = 'https://www.douyin.com/aweme/v1/web/user/profile/other/?xxxxxxxxxxxxxxxxxxx
# 利用requests发送请求,印象中遇到了SSL、443之类的错误,很多时候是由于没有设置verify字段导致的。
res = requests.get(url, headers=headers, verify=False)
print(res)

# res.text是响应结果,json字符串形式
strText = res.text
print(strText)

# 解析json字符串,转换为字典,方便python读取现需要的字段。
dict = json.loads(strText)
print(dict)

# 字典中,user字段存储了用户的基本信息,其内部又包含了很多详细信息。
# 粉丝数
follower_count = dict['user']['follower_count']
print("粉丝数:" ,follower_count)
# 点赞数
total_favorited = dict['user']['total_favorited']
print("点赞数:" ,total_favorited)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1145339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot内置工具类之断言Assert的使用与部分解析

先例举一个service的demo中用来验证参数对象的封装方法,使用了Assert工具类后是不是比普通的 if(xxx) { throw new RuntimeException(msg) } 看上去要简洁多了? 断言Assert工具类简介 断言是一个判断逻辑,用来检查不该发生的情况&#xff…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写

红队专题 招募六边形战士队员[1]远控介绍及界面编写1.远程控制软件演示及教程简要说明主程序可执行程序 服务端生成器主机上线服务端程序 和 服务文件管理CMD进程服务自启动主程序主对话框操作菜单列表框配置信息 多线程操作非模式对话框 2.环境:3.界面编程新建项目…

MD5加密后16位与32位的区别 [ 详细 ]

文章目录 前言MD5加密算法说明MD516位和32位有何区别关于MD5的一些常见问题1、使用MD5对密码加密有什么用?2、为什么通过md5.cn在线加解密站还能解出明文呢? 总结 前言 MD5是HASH函数的一种,HASH函数又称杂凑函数,是在信息安全领…

Spark新特性与核心概念

一、Sparkshuffle (1)Map和Reduce 在shuffle过程中,提供数据的称之为Map端(Shuffle Write),接受数据的称之为Redeuce端(Shuffle Read),在Spark的两个阶段中,总…

C语言_断言assert详解

一、assert定义 assert() 的用法像是一种"契约式编程",在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个 if 语句: if(假设成立) {程序正常运行&…

PYTHON+CH341 3线SPI驱动UC1601 LCD实现汉字显示

前言 参考大佬用CH341驱动OLED,链接如下:GitHub - jimjiang2/ch341dll_wrap_typical_app: A ch341dll Wrap is for using in Python 32bits windows to access I2C SPI and MDIO (by GPIO), and Demo with display PC sreen on OLED by i2c or SPI . 本文主要实现了…

C++设计模式_17_Mediator 中介者

Mediator 中介者也是属于“接口隔离”模式。 文章目录 1. 动机 (Motivation)2. 模式定义3. 结构(Structure)4. 要点总结5. 其他参考 1. 动机 (Motivation) 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系…

【python】pip的使用

切换默认源 pip config set global.index-url 源地址 查看切换源是否成功:pip config list 常用镜像源 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:https://mirrors.aliyun.com/pypi/simple/豆瓣:https://pypi…

入学生活科研随笔

近而立之年,巅峰享受的时期有两段。一是高考后,收到入学通知书。早晨,八点多,我醒来在院子里看到,爸爸在门口和邮政快递员寒暄。那天应该是8月15号,清晨凉凉爽爽的,杨树遮住了大半个院子。第二段…

matlab中filter帮助文档中“对矩阵行进行滤波”的解释

1、创建向量 % 创建一个由随机输入数据组成的 215 矩阵。 rng("default") %固定随机数种子 x randi(5,2,6) 结果 x 5 1 4 2 5 1 5 5 1 3 5 5 2、定义有理传递函数的分子和分母系数。 b 1; a [1 -0.2]; 3、沿着…

MATLAB R2018b详细安装教程(附资源)

云盘链接: pan.baidu.com/s/1SsfNtlG96umfXdhaEOPT1g 提取码:1024 大小:11.77GB 安装环境:Win10/Win8/Win7 安装步骤: 1.鼠标右击【R2018b(64bit)】压缩包选择【解压到 R2018b(64bit)】 2.打开解压后的文件夹中的…

【开源】基于SpringBoot的天然气工程运维系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程 12.2.2 流程 22.3 各角色功能2.3.1 系统管理员功能2.3.2 用户服务部功能2.3.3 分公司(施工单位)功能2.3.3.1 技术员角色功能2.3.3.2 材料员角色功能 2.3.4 安…

【APUE】并发 — 信号

目录 一、异步与同步 二、信号的概念 三、signal 函数 3.1 函数原型 3.2 代码示例 四、信号的不可靠 五、可重入函数 反例1:函数内使用了静态数据 反例2:函数内使用了 malloc 或 free 反例3:函数内调用了标准 I/O 函数 六、标准…

基于鸡群算法的无人机航迹规划-附代码

基于鸡群算法的无人机航迹规划 文章目录 基于鸡群算法的无人机航迹规划1.鸡群搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用鸡群算法来优化无人机航迹规划。 1.鸡群搜索算法 …

Docker Harbor概述及构建

Docker Harbor概述及构建 一、Docker Harbor 概述1.1、harbor 简介1.2、Harbor的优势1.3、Harbor 的核心组件1.4、Docker私有仓库 架构 二、Harbor构建Docker私有仓库2.1 环境配置2.2、部署Harbor服务2.2.1、上传dock-compose,并设置权限2.2.2、安装harbor-offline-…

C语言每日一题(21)删除排序数组中的重复项

力扣 26.删除排序数组中的重复项 题目描述 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考…

springboot打包后运行失败

运行jar包,报错如下: 环境描述 win11, springboot项目,jdk1.8,IDEA2022.1.3, spring-boot-maven-plugin版本2.2.6.RELEASE。 idea能正常运行,也能正常打成jar包。但运行jar包出错,报错信息如上。 问题来…

七层负载均衡 HAproxy

一、HAproxy 1、负载均衡类型: (1) 无负载均衡: 没有负载均衡,用户直接连接到 Web 服务器。当许多用户同时访问服务器时,可能无法连接。 (2) 四层负载均衡: 用户访问负载均衡器,负载均衡器将用户的请求…

时序预测 | Python实现ARIMA-LSTM差分自回归移动模型结合长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-LSTM差分自回归移动模型结合长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-LSTM差分自回归移动模型结合长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Python实现ARIMA-LSTM差…

关于数据中台的理解和思考

一、什么是数据中台 数据中台是指通过数据技术,对海量数据进行采集、计算、存储、加工,同时统一标准和口径。把数据统一后,会形成标准数据,再进行存储,形成大数据资产层,进而为客户提供高效的、可复用的服…