03-获取 TargetUser 的 Followings 列表

郑昀 201005  隶属于《02.技术预研》小节

【注:去年的旧文。上一篇是《02-在 Kuber SocialBadge 基础上再前进一步》和《01-学习 Kuber 的 SocialBadge 好榜样 | 02.技术预研 | Social》,下一篇是《04-WebFinger的利用 | 02.技术预研 | Social》】

从 www.google.com/profiles/jason5ng32 的链接开始吧。

一、通过 TargetUser 的输入连接获取他的其他链接

测试代码:

import socialgraph
q="www.google.com/profiles/jason5ng32"
its_me = u'me'
types = u'types'
instance = socialgraph.Api()

results = instance.lookup(q)

attributes = [k for k in results['nodes'].iteritems()][0][1]['attributes']
nodes_referenced = [k for k in results['nodes'].iteritems()][0][1]['nodes_referenced']

# 此人姓名:
myname = attributes['fn'])
# 此人其他链接:
links_of_me = ['http://'+q,]#把起源链接也加进去
for link in nodes_referenced.iterkeys():
    if(its_me in nodes_referenced[link][types]):
        #print link
        links_of_me.append(link)
all_nodes_of_me = ','.join(links_of_me)

不过,为了确保我们主要精力放在那些常用的社会化媒体上,还要过滤一下这些链接。

二、把 TargetUser 的所有链接提交给 SocialGraph 获取 Followings

在提交前,为了确保我们主要精力放在那些常用的社会化媒体上,还要过滤一下这些链接。只保留 Twitter 、Google Reader Shared Items、Google Profile、Delicious 、豆瓣这几种链接。

获取 followings 的 http 请求类似于:

http://socialgraph.apis.google.com/lookup?q=http%3A%2F%2Fwww.google.com%2Fprofiles%2Fzhengyun%2Chttp%3A%2F%2Fwww.google.com%2Freader%2Fshared%2F15221435823542888940&fme=1&pretty=1&sgn=0&edi=1&edo=1&jme=1&pretty=1

测试代码:

import re

"""
import httplib2
import socks
h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost', 1984))
"""
import socialgraph
#q="www.google.com/profiles/jason5ng32"
#q="twitter.com/fenng"
#q="www.google.com/profiles/electronixtar"
q="www.google.com/profiles/zhengyun"
its_me = u'me'
its_contact = u'contact'
types = u'types'
patternSupportServices = re.compile(u'(douban\.|twitter\.|google\.com\/reader\/shared|delicious\.|google\.com\/profile\/)',re.IGNORECASE)

instance = socialgraph.Api()
#instance = socialgraph.Api(httplib2_inst=h)

results = instance.lookup(q)

from print_r import print_r
attributes = [k for k in results['nodes'].iteritems()][0][1]['attributes']
nodes_referenced = [k for k in results['nodes'].iteritems()][0][1]['nodes_referenced']

# 此人姓名:
myname = attributes['fn']
# 此人其他链接:
support_links_of_me = ['http://'+q,]
for link in nodes_referenced.iterkeys():
    if(its_me in nodes_referenced[link][types]):
        if(len(patternSupportServices.findall(link))>0):
            support_links_of_me.append(link)

# 过滤后的此人的链接,以逗号分隔
support_nodes_of_me = ','.join(support_links_of_me)
print support_nodes_of_me
# 请求 Followings :
results = instance.lookup(support_nodes_of_me,edo=1,edi=0,fme=1,jme=0)
myFollowings = []
for node in results['nodes'].iteritems():
    nodes_referenced = node[1]['nodes_referenced']
    for fo in nodes_referenced.iterkeys():
        if(its_contact in nodes_referenced[fo][types]):
            if(len(patternSupportServices.findall(fo))>0):
                myFollowings.append(fo)

print myFollowings
print_r(instance._last_request['res']['content-location'])

注:

这里有一个问题:

当想获取 Google Reader 里关注的人时,有一个选项可能阻碍获取。

估计必须该人在 google profile 里专门为“在我的个人资料上显示我正在关注的人和正在关注我的人的名单” 打上勾,才能够使得 google social graph 显示该人的关注列表。待确认。
默认“在我的个人资料上显示我正在关注的人和正在关注我的人的名单” 是打开的,当初 google buzz 出世时大家还争论过这个默认选项侵犯隐私。

附录A:

http://pypi.python.org/pypi/socialgraph/

是Python wrapper for Google's Social Graph API。

注意1:它使用了 httplib2 库,需要预先安装。

注意2:它使用了 cjson 库,需要用 easy_install python-cjson 安装。但在 Windows 上安装之前,需要先确保你安装了 MingGW,然后阅读 http://python.cx.hu/python-cjson/#win32 ,就是试图用 MingGW 作为编译器。

如果你安装 cjson 失败,那么就需要修改 socialgraph.py 的源代码了,把

import cjson

替换为:

# We require a JSON parsing library. These seem to be the most popular.
try:
    import simplejson
    parse_json_func = lambda s: simplejson.loads(s.decode("utf-8"))
except ImportError:
    try:
        import cjson
        parse_json_func = lambda s: cjson.decode(s.decode("utf-8"), True)
    except ImportError:
        import json
        parse_json_func = lambda s: _unicodify(json.read(s))

也就是优先采用 simplejson 解析 json。

然后把两处

cjson.decode(content)

都替换为

parse_json_func(content)

注意3:

为了更好地控制 HTTP 请求,我修改了 socialgraph.py 的代码:传入了 httplib2 的实例。这样可以用代理;lookup 方法增加了一个 jme 的参数。

03-获取 TargetUser 的 Followings 列表相关推荐

  1. 权限表管理之获取用户权限表列表数据

    用户权限控制说明 在产品运营平台中,是需要对用户进行权限控制的.Django实现了用户权限的控制 消费者用户与公司内部运营用户使用一个用户数据库来存储 通过is_staff 来区分是运营用户还是消费者 ...

  2. 规格选项表管理之查询获取规格选项表列表数据

    规格选项表管理 在规格选项表中我们需要对规格选项表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取规格选项表列表数据 接口分析 请求方式: GET ...

  3. 企业shell面试题:获取51CTO博客列表按时间倒序排序

    企业shell面试题:获取51CTO博客列表倒序排序考试题 老男孩教育培训机构需求:需求入下: 请把http://oldboy.blog.51cto.com 地址中的所有博文,按照时间倒序列表如下: ...

  4. android获取应用安装通知消息,如何在Android 11 上获取已安装应用列表

    在Android 11上,我们可以看到很多的更新都是用来保护隐私的,如果你的app 在使用PackageManger的方法来获取安装的应用列表, 那么在Android11上,就需要做一点改变了. 我们 ...

  5. linux生成文件清单,Linux 获取文件名称生成列表 txt - create_filelist

    Linux 获取文件名称生成列表 txt - create_filelist 1. find /home/strong/MOTChallenge/MOT16/MOT16/train/MOT16-04/ ...

  6. linux生成一个list文件,Linux 获取文件名称生成列表 txt - create_filelist

    Linux 获取文件名称生成列表 txt - create_filelist 1. find /home/strong/MOTChallenge/MOT16/MOT16/train/MOT16-04/ ...

  7. python的类里的属性是否可以为列表_Python中如何获取类属性的列表

    前言 最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取 Type.FTE 这个属性的值. 最简单的方案有两个: getattr(Type, 'FTE') Type ...

  8. python获取类的类属性_Python中如何获取类属性的列表

    前言 最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取Type.FTE这个属性的值. 最简单的方案有两个: getattr(Type, 'FTE') Type._ ...

  9. JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤...

    JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...

最新文章

  1. python学习-25 函数递归
  2. 原生态纯JavaScript 100大技巧大收集
  3. spring boot发送普通文本邮件/HTML邮件/附件邮件/图片邮件完整代码
  4. OpenGL 基础光照ColorsBasic Lighting
  5. dubbo图形化界面搭建_使用 JMeter 进行 Dubbo 性能测试
  6. C点滴成海------Dev C++怎么修改成简体中文
  7. android 实现论坛界面,android界面开发之主流UI布局范例
  8. 插入的数据不能时时查询到_漫谈 LevelDB 数据结构(一):跳表(Skip List)
  9. SQL笔试经典50题及答案解析(题目41-50)
  10. 联想LJ2600D硒鼓加粉后清零操作
  11. linux系统怎么拨号上网,Linux系统下ADSL拨号上网方法
  12. IDL读写FITS文件
  13. Attach机制实现完全解读
  14. 不看后悔!阿里内部技术参考图册算法篇!(附网盘链接)
  15. 转:瓦片地图TiledMap
  16. 无桥PFC的优势及解决方案
  17. 张口就来!查看docker镜像地址
  18. base64编码图片数据存储服务器
  19. macOS 运行 iOS 应用体验:你甚至能在电脑上刷微信朋友圈
  20. typescript 中的as

热门文章

  1. Datawhale与Tianchi助力产学研融合-华北电力大学专场
  2. 图神经网络的解释性综述!
  3. 2020 年度最佳的23个机器学习项目!(附源代码)
  4. 第8期Datawhale组队学习计划
  5. 组合特征(二)tfidf(word+article)+lsa
  6. ICCV2021 | SMCA:即插即用的共同注意力模型,可使DETR收敛加速10倍
  7. 吴恩达Deeplearning.ai国庆节上新:生成对抗网络(GAN)专项课程
  8. 图神经网络越深,表现就一定越好吗?
  9. MySQL数据库使用连接更新表中某个字段数据
  10. MATLAB_no.2:关于眼睛的_cutab=[cutab;a b];_cutab(:,2)-cutab(:,1):