当前位置:   article > 正文

python爬取某人所有微博_客官,想瞅瞅邓紫棋微博粉丝分布吗,进来看看呗

爬指定用户微博
dd243aa222128e9e70066944d10e077d.png

作者:皖渝

源自:快学python

客官,想看看邓紫棋微博粉丝分布嘛,跟俺一起逛一逛吧。

本文主要有三个地方需要逛一逛:python爬虫,数据可视化,数据分析

一、微博爬虫类型介绍

        微博有关的爬虫,由于根据网址的不同,可分为三种类型:

        1.移动端爬取:利用selenium去模拟登录然后再去爬取,比较麻烦,但是可以根据个人需求依据关键词进行指定爬取。

        2.手机端爬取:网址为手机端微博网址,这在我之前的博客中也有提及微博超话内容爬取,在此不再赘述。无需登录,利用Chrome进行抓包即可实现,而且较selenium来说,性能也是更高一点。(不过要注意设置随机睡眠时间)

        3.旧版网址爬取:这是微博最简化版本的网址weibo.cn(感觉回到了诺基亚的年代),界面简单无需抓包,直接利用正则或者xpath等方式提取即可(需要拿到登录后的cookie值)

建议:如果只是爬取指定用户的评论、基本信息这些,后两种方法就够用了;如果涉及到更复杂的需求时再考虑selenium爬取

二、明星粉丝信息爬虫

旧版的网址,粉丝数量只显示了前20页,一页10个,总共才200个。手机端下的粉丝列表总共也只能显示5000个,对于5000个之后的粉丝信息,微博出于隐私保护,是爬取不了。详细的情况可参考新浪微博如何获取用户全部粉丝列表

1.微博用户URL说明:旧版网址用户首页的URL为:http://weibo.cn/u/用户ID手机端用户首页的URL为:https://m.weibo.cn/u/用户ID以邓紫棋为例,她的ID为1705586121,首页如下:27dd19a24f036a7b2d2dc34d348a44f1.png

她的粉丝信息抓包结果如下:3490bbafa5b74a955d4a86e24ba6c55b.png24c02c5820a9aa6f982d4a5cac97d49e.png这里的用户信息只有用户的简介(screen_name)关注数(follow_count)粉丝数(follow_count),对应用户性别和地区是没有显示的。

所以,考虑先用手机端爬取用户ID,再用旧版网址登录,提取信息。(旧版网址个人信息更全一些)

2.爬取邓紫棋粉丝所有的user_id考虑到部分用户可能是机器人,初步筛选条件为粉丝数大于等于20

import requests

爬取的部分用户ID如下:3c6ca7b35d81b5a9332eb007b1436a11.png

3.以旧版微博网址,登录后获取cookie,如下图所示:bbea524deff631a1bd1d266d6c9a811a.png获取后将下述代码中的cookie改为你自己的cookie即可

import numpy 

最终爬取到粉丝数量大于等于20的用户共10647个(多次爬取的结果),清洗后的部分数据如下:fa87e0548568a515f544f781e6fa2b6a.png

三、可视化

(1) 粉丝性别占比

import matplotlib.pyplot 
7ff082002954fb1929a7a2abeebe3604.png

从性别分布来看,女粉较男粉稍多一些

(2)  全国粉丝分布情况注意:使用的是pyecharts最新版本

from pyecharts.charts 
deeee8fc8a1829ad6dc3a099d678c477.png

从地区分布来看,广东粉最多(毕竟紫棋是香港歌手嘛),其次四川、湖北、河南、山东、江苏、浙江等省份粉丝也较多,内陆偏远地区粉丝分布较少如新疆、云南、贵州等

(3)  性别与地区交叉分布情况

import seaborn 
037fa21b8d02d4989432444f9caa97f8.png

男粉多于女粉的地区有:广东、北京、江苏、四川、上海等

女粉多于男粉的地区有:、河北、海外、辽宁、湖南等

(4) 地区与粉丝类型交叉情况对用户粉丝量以0,100,500,1000,10000,100000为分隔点,划分为五种类型的用户:小透明、常驻博主,资深博主,微博红人,微博大V。并与地区进行交叉作图,如下所示

'weibo_user.csv',encoding=
2dfbec26b5abf51cde4ad03fa0633937.png

从上图可以得出以下三条结论:1.全国地区大部分用户的粉丝量都是低于100的
2.广东粉不仅多,而且他们的粉丝人数也很多,具体表现为常驻博主、资深博主、微博红人均列全国第一。

3.一千粉至一万粉的用户除广东外,主要分布在海外、浙江、北京、上海等地区。其中,北京一万粉至十万粉(微博大V)的数量位居全国第一。此外,微博大V还分布在广东、海外、四川、上海、湖南

(5)  用户微博数、关注数、粉丝量基本情况

gender_group=df.pivot_table(aggfunc=np.mean,                            index=df['gender'],                           values=df[['weibo_num','focus_num','fans_num']]).round(0)f,ax=plt.subplots(1,3,figsize=(15,6))sns.barplot(x=gender_group.index,y=gender_group['weibo_num'],            palette=['#f26d5b','#2EC4B6'],alpha=0.8,ax=ax[0])ax[0].set_title('男女粉丝平均微博数')ax[0].set_xlabel('性别')ax[0].set_ylabel('平均微博数')sns.barplot(x=gender_group.index,y=gender_group['focus_num'],            palette=['#f26d5b','#2EC4B6'],alpha=0.8,ax=ax[1])ax[1].set_title('男女粉丝平均关注数')ax[1].set_xlabel('性别')ax[1].set_ylabel('平均关注数')sns.barplot(x=gender_group.index,y=gender_group['fans_num'],            palette=['#f26d5b','#2EC4B6'],alpha=0.8,ax=ax[2])ax[2].set_title('男女粉丝平均粉丝数')ax[2].set_xlabel('性别')ax[2].set_ylabel('平均粉丝数')plt.suptitle('邓紫棋粉丝微博基本信息') #子图添加总标题plt.show()
7c28ebb7b835eab05770ac003107c636.png
在这里插入图片描述

从饼图可知,男女粉丝数量相差不大。但平均微博数、关注数都要大于男粉丝,特别是平均微博数大致为男粉丝的两倍,由此可得出结论:相比男粉丝,女粉丝在微博活跃度会更高(原因可能在于女粉经常转发爱豆的动态、为爱豆打榜之类的)

(6)  微博数、关注量、粉丝量相关性

10,
4552600eb948b0de54b8d5f969dd5f6c.png

相关系数的范围在-1到1之间。越接近1,正相关性越强,越接近-1,负相关性越强。(当然这里的相关性仅指线性相关性) 从上图来看,基本上三者之间的相关性还是很弱的,也就微博数与关注数相关性相对较高一点,但仅有0.26。

结语

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小编的支持。

7d1a93c0a9b8fffe7163399228b11c23.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/56879
推荐阅读
相关标签
  

闽ICP备14008679号