python爬取抖音用户个人信息
公司最近有个需求,要求抖音网红入驻平台的时候获取到抖音网红的个人信息页面的数据:
一开始的思路是抖音网红提供抖音号,通过appium自动化通过抖音号搜索获取个人信息(该想法以后实现),后来发现一种可以实现公司需求然后没有很复杂的方法。进入正题吧
机缘巧合下发现可以通过抖音个人页面分享出来的链接获取到抖音的个人信息,接下来就带你们去了解一下呗
第一步:获取分享出来的抖音页面
抖音分享出来的是短连接,不过我们都可以拿到数据的
-
如图:
个人页面的数据都在页面中展示出来了,我们利用爬虫的技术获取想要的数据就可以,不过这个页面看到的数字并不是数字,而是抖音进行加密的一种字体。如图:
首先我们把字体下载到本地看看字体的加密规则,找到woff文件下载到本地。使用工具打开woff文件。这里我是找的 百度的一个字体编辑器。打开以后可以看出来字体的加密方式,如图:
那么接下来根据加密方式去写代码了, 自己封装的一个
# Douyin/font.py
mapCodeToFont = {
0xe602: num_,
0xe603: num_1,
0xe604: num_2,
0xe605: num_3,
0xe606: num_4,
0xe607: num_5,
0xe608: num_6,
0xe609: num_7,
0xe60a: num_8,
0xe60b: num_9,
0xe60c: num_4,
0xe60d: num_1,
0xe60e: num_,
0xe60f: num_5,
0xe610: num_3,
0xe611: num_2,
0xe612: num_6,
0xe613: num_8,
0xe614: num_9,
0xe615: num_7,
0xe616: num_1,
0xe617: num_3,
0xe618: num_,
0xe619: num_4,
0xe61a: num_2,
0xe61b: num_5,
0xe61c: num_8,
0xe61d: num_9,
0xe61e: num_7,
0xe61f: num_6,
}
mapFontToNum = {
num_: 1,
num_1: 0,
num_2: 3,
num_3: 2,
num_4: 4,
num_5: 5,
num_6: 6,
num_7: 9,
num_8: 7,
num_9: 8,
}
class GetDouyinNum(object):
def __init__(self, code):
self.code = code
def get_num(self):
dic = {
}
if self.code == :
return
for i in self.code:
j = i.replace( &#, 0).replace(; , )
dic[j] = str(mapFontToNum[mapCodeToFont[j]])
return dic
def dy_id(self):
"""
抖音号
:param:
:return:
"""
desc_header = re.findall(抖音ID: (.*?) </p>, self.result, re.S)
# 可作判断,有些抖音号含有26个字母
desc_back = re.findall(<i class="icon iconfont ">(.*?)</i>, self.result, re.S)
dic = GetDouyinNum(desc_back).get_num()
res = desc_header[0]
for i, j in dic.items():
res = res.replace(<i class="icon iconfont "> &# + i[1:] + ; </i>, j)
return res
最终结果: 还有抖音昵称丶抖音头像就直接可以使用xpath获取到。源码已经放在我的 上了。有兴趣的可以上去瞧瞧。
虽然这次的数据获取并不是很难。首先自己可以做一次笔记,也可以提供给需要的人学习。作为爬虫小白的我会慢慢研究根据抖音号去获取用户信息的,毕竟以上这种方法是一对一的获取数据,有点限制。不过刚好切合公司需求吧,只有慢慢学习才有进步,加油!希望陌生的你可以一起加油。
