当前位置: 首页 > article >正文

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

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

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

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

经过百度,发现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.kler.cn/a/108203.html

相关文章:

  • npm list @types/node 命令用于列出当前项目中 @types/node 包及其依赖关系
  • Linux 常用操作指令大揭秘(下)
  • [前端]NodeJS常见面试题目
  • 算法——移除链表元素(leetcode203)
  • MySQL Workbench导入数据比mysql命令行慢
  • java导出pdf
  • Latex报错 “Paragraph ended before \Gin@iii was complete“
  • 万字解析设计模式之工厂方法模式与简单工厂模式
  • 竞赛选题 深度学习图像修复算法 - opencv python 机器视觉
  • 4.5 final修饰符
  • hive使用中的参数优化与问题排查
  • Kafka KRaft模式探索
  • 【unity小技巧】unity排序问题的探究
  • 如何使用 Rask AI 进行视频本地化
  • 腾讯云和阿里云双11优惠大战,服务器价格相差1块钱?
  • laravel+vue2 element 一套项目级医院手术麻醉信息系统源码
  • python实现ModBusTCP协议的server
  • 【vtk学习笔记1】编译安装vtk9.2.6,运行官方例子
  • 如何在linux服务器上安装Anaconda与pytorch,以及pytorch卸载
  • TextureView和SurfaceView
  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰
  • localhost知识
  • iMazing2024年最新许可证-iMazing许可证激活补丁
  • UE5实现相机水平矫正
  • 基于数字电路交通灯信号灯控制系统设计-单片机设计
  • 什么是三元表达式?