python爬取抖⾳⽤户个⼈信息
公司最近有个需求,要求抖⾳⽹红⼊驻平台的时候获取到抖⾳⽹红的个⼈信息页⾯的数据:
粉丝数
关注数
点赞数
抖⾳昵称家装油漆品牌
抖⾳头像
抖⾳号
⼀开始的思路是抖⾳⽹红提供抖⾳号,通过appium⾃动化通过抖⾳号搜索获取个⼈信息(该想法以后实现),后来发现⼀种可以实现公司需求然后没有很复杂的⽅法。进⼊正题吧
机缘巧合下发现可以通过抖⾳个⼈页⾯分享出来的链接获取到抖⾳的个⼈信息,接下来就带你们去了解⼀下呗
第⼀步:获取分享出来的抖⾳页⾯
如图:
个⼈页⾯的数据都在页⾯中展⽰出来了,我们利⽤爬⾍的技术获取想要的数据就可以,不过这个页⾯看到的数字并不是数字,⽽是抖⾳进⾏加密的⼀种字体。如图:
⾸先我们把字体下载到本地看看字体的加密规则,到woff⽂件下载到本地。使⽤⼯具打开woff⽂件。这⾥我是的百度的⼀个字体编辑
器。打开以后可以看出来字体的加密⽅式,如图:
那么接下来根据加密⽅式去写代码了, ⾃⼰封装的⼀个
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):
def get_num(self):
dic ={}
de =='':
return''
for i de:
j = i.replace(' &#','0').replace('; ','')
dic[j]=str(mapFontToNum[mapCodeToFont[j]])
return dic
以上代码是根据字体代号映射出数字字典。然后在主逻辑中进⾏粉丝量⼂关注数⼂点赞数⼂抖⾳号的爬取
"""
抖⾳号
:param:
:return:
"""
desc_header = re.findall('抖⾳ID:    (.*?)  </p>', sult, re.S)
# 可作判断,有些抖⾳号含有26个字母
desc_back = re.findall('<i class="icon iconfont ">(.*?)</i>', sult, re.S)
dic = GetDouyinNum(desc_back).get_num()
res = desc_header[0]
for i, j in dic.items():
res = place('<i class="icon iconfont "> &#'+ i[1:]+'; </i>', j)
return res
def focus(self):
"""
粉丝数
:param:
:return:刘烨
"""
try:
desc_header = re.findall(
r'<span class="focus block"><span class="num">    (.*?)</span><span class="text">关注</span> </span>',
desc_back = re.findall('<i class="icon iconfont follow-num">(.*?)</i>', sult, re.S)
dic = GetDouyinNum(desc_back).get_num()
follower_res = desc_header[0]
动漫制作技术是学什么
for i, j in dic.items():
follower_res = place('<i class="icon iconfont follow-num"> &#'+ i[1:]+'; </i>', j) return follower_res
except Exception as e:
print(e)
def likes(self):
"""
点赞数
:param:
:return:
"""
洗衣机买什么牌子好try:
desc_header = re.findall(
r'<span class="liked-num block"><span class="num">    (.*?) </span><span class="text">赞</span></span>',                sult, re.S)
desc_back = re.findall('<i class="icon iconfont follow-num">(.*?)</i>', sult, re.S)
dic = GetDouyinNum(desc_back).get_num()
like_res = desc_header[0]
for i, j in dic.items():
无人机驾驶证
like_res = place('<i class="icon iconfont follow-num"> &#'+ i[1:]+'; </i>', j)
return like_res
except Exception as e:
print(e)
最终结果:
还有抖⾳昵称⼂抖⾳头像就直接可以使⽤xpath获取到。源码已经放在我的 上了。有兴趣的可以上去瞧瞧。
虽然这次的数据获取并不是很难。⾸先⾃⼰可以做⼀次笔记,也可以提供给需要的⼈学习。作为爬⾍
⼩⽩的我会慢慢研究根据抖⾳号去获取⽤户信息的,毕竟以上这种⽅法是⼀对⼀的获取数据,有点限制。不过刚好切合公司需求吧,只有慢慢学习才有进步,加油!希望陌⽣的你可以⼀起加油。