文章目录
任务
受一个很有想法的同学的启发,通过挖掘一个微博的转发,查看对其的转发量最有影响的因素与节点。
当然这个是需要很大规模的数据支持才能够显著说明问题,在解决这个问题的过程中,逐渐演变为对某个博主的数据分析。
过程
角度:某博主对转发微博影响
在上一个文章的成功基础上,基本能够获取微博的任何内容。
数据结构
做为第一个测试的项目,首先对少量有价值的信息进行分析,这里选取:
博文数据 | 博主数据 | ||||||||
---|---|---|---|---|---|---|---|---|---|
转发 | 转发量 | 评论量 | 点赞量 | 发文时间 | 内容概要 | 粉丝量 | 个人信息(默认已知,不记录) | ||
原文 | id | 昵称 | 个人信息(可选)* | ||||||
*个人信息: 有性别、所在地概要信息及性别、所在地、星座、大学、公司等完整信息
数据采集
根据文章与书籍得知,微博移动端页面采用异步加载技术。
使用浏览器的检查(inspect,F12)功能,切换为移动端,再刷新页面(F5),获取到需要的内容链接Url。
由此,可获取界面上的数据及微博的具体信息。
信息为json格式,通过构造字典囊括关键字段。
为获取一个微博博主的所有微博信息,需要构造囊括这些信息的URL。通过观察可知,格式统一为:
https://m.weibo.cn/api/container/getIndex?containerid=230413博主的id号_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page=页码数
因此构造出一系列的URL
###某微博账户的全部微博内容
def contentURL(id,pages):
i=0
urls=[]
for page in pages:
if page is not 0:
urls+=['https://m.weibo.cn/api/container/getIndex?containerid=230413'+str(id)+'_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03&page='+str(page)]
return urls
为灵活调整需要获取的数据信息,特将储存与建立数据列表规范化,通过在开始构建词典,将需要的数据设置为True:
#获取博文信息范围、排列
blogRangeDict={
'visible': False,#{type: 0, list_id: 0}
#发文时间
'created_at': True,#"20分钟前"
'id': False,#"4466073829119710"
'idstr': False,#"4466073829119710"
'mid': False,#"4466073829119710"
'can_edit': False,#false
'show_additional_indication': False,#0
#博文内容
'text': True,#"【情况通报】2019年12月31日,武汉市卫健部门发布关于肺炎疫情的情况通报。
'textLength': False,#452
'source': False,#"360安全浏览器"
'favorited': False,#false
'pic_types': False,#""
'is_paid': False,#false
'mblog_vip_type': False,#0
'user'