Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

dataabc/weiboPR

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
11 Commits
 
 
 
 

Repository files navigation

功能

  • 判断微博用户的影响力

输入

  • 用户id:例如新浪微博昵称为“Dear-迪丽热巴”的id为“1669879400”。可以输入一个用户的user_id,也可以输入多个用户的user_id,具体的输入代码示例如下:
user_ids = [1729370543,1669879400]

其中的数字可以替换成我们想要求的用户的id

输出

  • 用户的pr值:用户的pr值最终存储在字典里,字典名字是我们自己取的,假如我们把pr值存储到字典user_pr里,user_pr[1729370543]即为id为1729370543的用户的pr值,pr值越大,代表用户的影响力越大。

微博用户影响力的计算原理

  我们知道,PageRank算法是用来判断网页权重的算法,通过指向页面的网页的权重,来计算页面的权重。我们也可以用类似的方法计算微博用户的影响力。比如,我们可以计算用户每个粉丝的权重,然后计算用户的权重,需要经过多次迭代。我们知道,部分用户的粉丝量非常大,如果用PageRank算法计算,效率会非常低,所以放弃了这种方法。
  那么什么因素与用户的影响力有关呢?第1个自然是粉丝数,粉丝数越大,用户的影响力很可能越大,因为微博中存在大量僵尸粉,所以单单看粉丝量是无法知道用户影响力的;第2个是微博平均被转发数,因为被转发了,说明微博自然是被关注了,而转发又意味着其他用户在帮着扩大影响力,所以是影响微博影响力的重要因素;第3个是微博平均被评论的数量;第4个是微博平均被点赞的数量。第2、3、4其实代表了粉丝与用户的互动情况,数量越多影响力越大。同时,在大多数情况下,一条微博的转发数要远远小于它被评论的数量,一条微博被评论的数量 又小于它被点赞的数量,所以它们对微博影响力的作用依次降低。所以,根据以上情况,我们可以为每个参数根据重要性赋一个权值,大致计算出用户的影响力,数值越大,用户的影响力也就越大。

运行环境

  • 开发语言:python2.7
  • 系统: windows 10(64位)
  • 运行环境:ipython(Anaconda 64位)

使用说明

1、下载脚本

$ git clone https://github.com/dataabc/weibopr.git

运行上述命令,将本项目下载到当前目录,如果下载成功当前目录会出现一个名为"weibopr"的文件夹;
2、用文本编辑器打开weibopr文件夹下的"weiboPR.py"文件;
3、将"weiboPR.py"文件中的“your cookie”替换成爬虫微博的cookie,后面会详细讲解如何获取cookie;
4、将"weiboPR.py"文件中的user_id替换成想要爬取的微博的user_id,后面会详细讲解如何获取user_id;
5、按需求调用脚本。本脚本是一个weibo类,用户可以按照自己的需求调用weibo类。 例如用户可以直接在"weiboPR.py"文件中调用weibo类,具体调用代码示例如下:

user_ids = [1729370543,1669879400] #替换成我们目标用户的id
user_pr = {} #存储用户的pr值,用来判断用户的影响力,pr值越大代表影响力越高
filter = 1 #值为0表示爬取全部的微博信息(原创微博+转发微博),值为1表示只爬取原创微博
for i in user_ids:
	wb = weibo(i,filter) #调用weibo类,创建微博实例wb
	wb.start() #爬取微博信息
	user_pr[i] = wb.pr #获得用户id为i的pr值
	wb.writeTxt() #wb.writeTxt()只是把信息写到文件里,大家可以根据自己的需要重新编写writeTxt()函数
print user_pr

user_id可以改成任意合法的用户id(爬虫的微博id除外);filter默认值为0,表示爬取所有微博信息(转发微博+原创微博),为1表示只爬取用户的所有原创微博;wb是weibo类的一个实例,也可以是其它名字,只要符合python的命名规范即可;通过执行wb.start() 完成了微博的爬取工作。在上述代码之后,user_pr就存储了对应id用户的pr值;
6、运行脚本。我的运行环境是ipython,通过

$ run filepath/weiboPR.py

即可运行脚本,大家可以根据自己的运行环境选择运行方式。 ###如何获取cookie 1、用Chrome打开https://passport.weibo.cn/signin/login
2、按F12键打开Chrome开发者工具;
3、点开“Network”,将“Preserve log”选中,输入微博的用户名、密码,登录,如图所示: 4、点击Chrome开发者工具“Name"列表中的"m.weibo.cn",点击"Headers",其中"Request Headers"下,"Cookie"后的值即为我们要找的cookie值,复制即可,如图所示: ###如何获取user_id 1、打开网址http://weibo.cn,搜索我们要找的人,如”郭碧婷“,进入她的主页;
2、大部分情况下,在用户主页的地址栏里就包含了user_id,如”郭碧婷“的地址栏地址为"http://weibo.cn/u/1729370543?f=search_0",其中的"1729370543"就是她的user_id。如图所示: 但是部分用户设置了个性域名,他们的地址栏地址就变成了"http://weibo.cn/个性域名?f=search_0"的形式,如柳岩主页的地址栏地址为"http://weibo.cn/guangxianliuyan?f=search_0"。如图所示: 事实上,如果仅仅爬取微博,用user_id或个性域名都可以,但是因为本脚本还要爬取用户昵称,而用个性域名表示的网页爬取有一些小问题,需要另外的网页。所以,如果遇到地址栏没有user_id的情况,大家可以点击”资料“,跳转到用户资料页面,如柳岩的资料页面地址为"http://weibo.cn/1644461042/info",其中的"1644461042"即为柳岩微博的user_id。如图所示:

###注意事项 1、user_id不能为爬虫微博的user_id。因为要爬微博信息,必须先登录到某个微博账号,此账号我们姑且称为爬虫微博。爬虫微博访问自己的页面和访问其他用户的页面,得到的网页格式不同,所以无法爬取自己的微博信息;
2、cookie有期限限制,大约两天左右的有效期,超过有效期需重新更新cookie。

About

用python判断微博用户的影响力

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.