回顾我们之前分析的微博数据格式,发现其中便有我们需要的用户id!
所以我们在提取微博内容的时候可以顺便将用户id提取出来!
2.模拟登录
我们获取到用户id之后,只要请求https://weibo.cn/用户id/info 这个url就可以获取公开信息了,但是查看别人用户主页是需要登录的,那我们就先用代码模拟登录!
我们之前爬取豆瓣的时候,已经教过大家如何模拟登录了,这里就直接放出代码!
登录我们使用的是requests.Session()对象,这个对象会自动保存cookies,下次请求自动带上cookies! 3.爬取用户公开信息
拿到用户id又登录之后,就可以开始爬取用户公开信息啦!
这里公开信息我们只要:用户名、性别、地区、生日这些数据!所以我们需要将这几个数据提取出来!
爬取用户信息不能过于频繁,否则会出现请求失败(响应状态码=418),但是不会封你的ip,其实很多大厂 不太会轻易的封ip,太容易误伤了,也许一封就是一个小区甚至更大! 五、保存csv文件
微博信息拿到了、用户信息也拿到了,那我们就把这些数据保存起来,方便后面做数据分析!
我们之前一直是保存txt格式的,因为之前都是只有一项数据,而这次是多项数据(微博内容、用户名、地区、年龄、性别等),所以选择CSV(Comma Separated Values逗号分隔值)格式的文件!
我们生成一个列表,然后将数据按顺序放入,再写入csv文件!
看看生成的csv文件,注意csv如果用wps或excel打开可能会乱码,因为我们写入文件用utf-8编码,而wps或excel只能打开gbk编码的文件,你可以用一般的文本编辑器即可,pycharm也可以!
六、数据分析
数据保存下来之后我们就可以进行数据分析了,首先我们要知道我们需要分析哪些数据?
我们可以将性别数据做生成饼图,简单直观
将年龄数据作出柱状图,方便对比,看看到底是不是夕阳红老年团
将地区做成中国热力图,看看哪个地区粉丝最活跃
最后将微博内容做成词云图,直观了解大家在说啥
1.读取csv文件列因为我们保存的数据格式为:’用户id’, ‘用户名’, ‘性别’, ‘地区’, ‘生日’, ‘微博id’, ‘微博内容’,的很多行,而现在做数据分析需要获取指定的某一列,比如:性别列,所以我们需要封装一个方法用来读取指定的列!
这里猪哥还使用了Counter类来统计词频,方便后面数据分析,他返回的格式为:{‘女’: 1062, ‘男’: 637}。 2.可视化库pyecharts
在我们分析之前,有一件很重要的事情,那就是选择一个合适可视化库!大家都知道Python可视化库非常多,之前我们一直在用matplotlib库做词云,matplotlib做一些简单的绘图非常方便。但是今天我们需要做一个全国分布图,所以经过猪哥对比筛选,选择了国人开发的pyecharts库。选择这个库的理由是:开源免费、文档详细、图形丰富、代码简介,用着就是一个字:爽!
官网:
源码:https://github.com/pyecharts/pyecharts
安装:pip install pyecharts
po一张他们的官方文档图片
这里有非常详细的例子,直接复制过来就可以运行得到图片!
3.分析性别