今年夏季,大概七八月份,刀郎开通抖音账号,并在抖音上发布多首作品,一时之间其热度暴涨,其粉丝也是与日俱增。
有人为了蹭热度,直播刀郎粉丝的实时变化情况,直播热度最高的时候同时几千人在线观看。
其大概率使用了爬虫技术,通过不断地模拟发送请求,获取相应数据,实现粉丝数量的实时更新。
经过百度,发现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)