Coder Social home page Coder Social logo

weibopr's Introduction

功能

  • 判断微博用户的影响力

输入

  • 用户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。

weibopr's People

Contributors

chenleilei avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.