01-获取 Twitter User Profile 的三条路径 | 07.杂项

01-如何获取 Twitter User Profile

郑昀 201005 隶属于《07.杂项》小节

主要通过三种方式。当然,算上各种公开的 twitter 第三方Proxy API ,会更多。

由于每一种方式都有请求频率限制,所以建议最终程序混合这三种方法,要么随机选择其一,要么按优先级逐次访问,如果访问不通,立刻切换到下一种。

 

1.YQL 方式

YQL 和 Yahoo! Pipe 都是最优秀的 mashup 工具之一,身为 Geek 至少要熟悉 Yahoo! Pipe 。

1.0.背景

雅虎发布的YQL,背后的机理是每个人都可以将他的数据以一种特殊的方式供其他人使用,谁想要读取这些数据,只需要使用一种类似SQL语法的语言即可。

它是一个具有基于REST接口,可以让开发者从各类资源中查询数据的在线查询处理器。

它是一个严格的查询处理托管服务。这也意味着YQL不受单独的数据资源限制,甚至不限制应用于雅虎的自身产品。YQL可以操作任何第三方数据源,只要对方是一种常见的格式,如RSS, ATOM, JSON, XML,等等。

以上文字参见互动百科

1.1.Twitter API 都可适用于 YQL

上面说了,只要对方是一种常见的数据格式,如JSON、RSS,都可以被 YQL 作为数据源。所以,我们访问 Twitter 受访问频率限制时,可以走这条路。

1.2.YQL 的 Python 封装库

Python yql 库主页地址:http://python-yql.org/

安装简单:easy_install yql 。使用也非常简单:


>>> import yql
>>> y = yql.Public()
>>> query = 'select * from flickr.photos.search where text="panda" limit 3';
>>> result = y.execute(query)
>>> result.rows
 

但要小心,yql 库实际上是组装了一个查询YQL的 HTTP URL ,用自定义或外部传入的 httplib2 实例发起请求,那么它势必受到网络环境的影响,比如 GFW 的干扰。

1.3.请求限制


YQL 在 Usage Information and Limits 中说:

  • Per application limit (identified by your Access Key): 100,000 calls per day.
  • Per IP limits: /v1/public/*: 1,000 calls per hour; /v1/yql/*: 10,000 calls per hour.
  • All rates are subject to change.
  • YQL rate limits are subject to the rate limits of other Yahoo! and 3rd-party Web services.

1.4.YQL 的 Console 网页测试

进入 http://developer.yahoo.com/yql/console/ 页面,

在 Your YQL Statement 输入框中输入如下 SQL 命令:

select * from json where url='http://api.twitter.com/1/users/show/fenng.json'

然后点击“TEST”按钮,稍后,FORMATTED VIEW就会以 XML 方式显示出 Twitter 用户 fenng 的 profile 了。

 

SQL 命令

select * from json where url="http://search.twitter.com/search.json?q=rt&rpp=20&lang=zh" 
可透过 Twitter Search 接口得到最新的 RT 消息。

 

SQL 命令

select * from json where url='https://twitter.com/statuses/user_timeline/fenng.json'

可以得到 fenng 最近发布的若干条 Tweets 。

 

1.5.Python YQL 的调用方式

对于其他数据源的请求,比如 flickr ,在我们的网络环境下,yql 库都不会有什么问题。但对于 Twitter 数据源,貌似就容易被重置链接(但浏览器访问 YQL Console 做查询却没事儿。所以也许是User-Agent的事儿。),于是乎我们就要设置一个代理穿墙。而代理选择 Puff 貌似容易得到 401 HTTP状态,所以选择 Mr.Zhang 了。

代码如下:

import yql 
import httplib2 
import socks 
h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost', 2010)) 
y=yql.Public(httplib2_inst=h) 
results=y.execute("select * from json where url='http://api.twitter.com/1/users/show/fenng.json'")
print results.rows 
print results.uri

(注:socks 库需要安装,主页地址:http://socksipy.sourceforge.net/ ,它没有安装程序,下载源代码包把 socks.py 复制到 Python's lib/site-packages directory 即可。httplib2 则用 easy_install httplib2 安装即可。)

你也可以把 YQL 认为是一个代理,能把任意数据格式转换为指定格式的代理。

2.SocialGraph 方式

Google Social Graph 的 lookup 方法可以获取一个 twitter 用户的关联信息。

我们可以通过组装这样的 URL :

http://socialgraph.apis.google.com/lookup?q=twitter.com%2Fzhengyun&pretty=1

来得到 zhengyun 的 twitter profile ,结果如下所示:


{
 "canonical_mapping": {
  "twitter.com/zhengyun": "http://twitter.com/zhengyun"
 },
 "nodes": {
  "http://twitter.com/zhengyun": {
   "attributes": {
    "fn": "zhengyun",
    "adr": "\u5317\u4eac",
    "photo": "http://a1.twimg.com/profile_images/27832922/zhengyun_ustc_bigger.jpg",
    "exists": "1",
    "rss": "http://twitter.com/statuses/user_timeline/zhengyun.rss",
    "atom": "http://twitter.com/statuses/user_timeline/zhengyun.atom",
    "url": "http://twitter.com/zhengyun",
    "profile": "http://twitter.com/zhengyun"
   }
  }
 }
}

当然,这没有人家 Twitter 自己的API给的数据全,但也算是能得到用户的 Location(就是 adr 字段)和 头像(photo字段)等最基本字段了。

2.1.请求限制

Google 文档写道:『Use of the Social Graph API is subject to a query limit of 50,000 queries per user per day. If you go over this 24-hour limit, the Social Graph API may stop working for you temporarily.If you continue to exceed this limit, your access to the Social Graph API may be blocked』,看来需要知道检测到“stop working for you temporarily”时触发哪种异常,这样才能避免被block。 

3.Twitter 方式

最后可以直接访问 Twitter 的 user/show 方法: 
http://api.twitter.com/1/users/show.xml?id=noradio 
,而不需要请求 statuses/user_timeline 方法。 
举例: 
http://api.twitter.com/1/users/show.json?id=zhengyun

 

3.1.请求限制

如果我们的出口IP在 twitter 的白名单上,那么访问限制是:20,000 requests per hour。否则是每小时150~350次。

 

附录A:

Python YQL 库对查询命令

select * from json where url="http://api.twitter.com/1/users/show/fenng.json"

实际是组装了一个 HTTP 请求:

http://query.yahooapis.com/v1/yql?q=select%20*%20from%20json%20where%0A%20url%3D%22http%3A%2F%2Fapi.twitter.com%2F1%2Fusers%2Fshow%2Ffenng.json%22&diagnostics=true

时间: 2024-07-30 01:53:36

01-获取 Twitter User Profile 的三条路径 | 07.杂项的相关文章

360发布个人信息泄露报告,曝信息泄露三条路径

本报讯(记者郝帅)才买新车就有人来推销保险:刚生完孩子,马上就能接到婴儿产品的推销电话:新房钥匙还没到手,装修公司就来敲门了--电信诈骗成为今年央视"3·15"晚会关注的问题之一. 到底是谁泄露了我们的个人信息?互联网安全公司360发布了一份<个人信息泄漏报告>,研究发现,信息泄漏主要有三条路径:一是人为因素,即掌握了信息的公司.机构员工主动倒卖信息:二是网民在享受互联网便利.快捷功能的同时,不经意间感染了病毒木马等恶意软件,造成个人重要信息泄露:三是攻击者利用网站漏洞,入

贝塔斯曼联手开心网?或可走三条路径

[TechWeb报道]4月11日消息,昨天有传言传媒巨头贝塔斯曼正在与国内社交网站开心网进行密切接触,双方可能将于近期达成协议,在垂直移动社交领域进行资本合作. 那么,双方是否有合作的基础?如果合作会采取什么形式?有业内人士分析指出,贝塔斯曼与开心网的合作或有三种可能: 其一是双方进行资本合作.此前,贝塔斯曼集团总部所属的投资部门已经在中国投资了16家创业企业,重点涉及垂直化媒体.社交类媒体.移动互联网.在线广告技术服务.在线教育和业务流程外包等领域,包括豆瓣.蘑菇街.凤凰网.易车等.贝塔斯曼集

jqgrid 分页查询-jqGrid 从后台能获取xml数据,但是前台grid数据就是显示不出来!页面有三条记录

问题描述 jqGrid 从后台能获取xml数据,但是前台grid数据就是显示不出来!页面有三条记录 5C 后台打印出来的数据:<Response> <transResult> <resultCode>1</resultCode> <resultInfoDesc>交易处理成功</resultInfoDesc> </transResult> <object class=""PageGrid"

07年个人站长闯关,三条道路通罗马

站长 面对版权的压力.SP业务的萎缩和联盟广告的低迷,2007年个人网站还有没有出路?答案显然是肯定的.至少就目前而言,尚有三条比较好的出路供个人站长选择!个人站出路之一,建垂直行业网站    垂直行业网站是针对某一个行业兴建的,并对这一行业发生的资讯.交易等进行深度整合配置的网站.这类网站无需普通娱乐站那样的巨大流量,也可以实现教大的盈利.    鄙人最近对数十个比较熟悉的娱乐站和行业站进行了对比分析,结果发现在同等流量情况下,垂直行业网站的赢利能力是普通娱乐站的5到12倍.两者赢利能力的差异

ERP系统选型时的三条主线

ERP在国内的推广.应用已经有20多年的历史,可是直到今天,许多企业CIO还在为此困惑.迷茫,甚至有些绝望!的确,ERP给一些企业带来了荣耀和辉煌,可是也让不少企业也深陷困境,CIO为此也倍受自责. 在20年的历程中,关于ERP实施成功或失败的讨论已经连篇累牍,但是经验毕竟是有价值的,也正是这些宝贵资源让CIO不断推动企业管理信息化的发展和革新,所以当CIO真正把自己放在一个等待医治的位置上,去领会和类比成功者以及失败者轨迹的时候,失败的故事肯定会少一些! 选型好比战略,实施则是战术,在错误的战

信息流、资金流、物流电商运营三条主线

苏宁云商联合弘毅资本4.2亿美元战略投资PPTV,并取得控股权,成为年内第一大涉及电商企业的并购案(阿里巴巴入股新浪微博涉及金额虽高达5.86亿美元,但仅占18%的股份,并未实现控股),去年9月,苏宁以6600万美元全资收购母婴垂直网站红孩子,今年又高调进军互联网金融,申请苏宁银行,并已经获得基金支付结算牌照,将在近期内推出类"余额宝"的理财产品,其在投资.金融领域的一系列动作说明其意图不止在于产品.渠道的扩张,而是要在信息流.资金流.物流方面弥补自身短板. 信息流.资金流.物流是电商

获取SqlServer存储过程定义的三种方法

存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快.同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量.简单网络负担. 存储过程的优点 A. 存储

CSDN总裁蒋涛:从软件技术高手到百万富翁的三条捷径

会议开场由CSDN总裁蒋涛为来宾做了开场白,他谈到了从软件技术高手到百万富翁的三条捷径. 第一,在细分.分众市场做特色软件产品.中国软件用户群庞大,需求各异,有的技术高手混得很艰难,有的技术并不 精深却过得还挺滋润,其中原因之一就是找到 了自己的特色领域.蒋涛谈到了他在深圳出差时的见闻.由于有了成熟的手机模块平台,有开发者专门做宗教山寨手机,把佛像做成内置图像,用户可通过内置软件 上香.上贡品,手机的成本不足300元,售价却高达2000元,售者选择在寺庙宗教场所周围卖这类手机,销量相当不错,这正

Roseonly引爆流行的三条法则

天天:"爸比,今年圣诞节我们去哪儿?"张亮:"今年圣诞节,老爸要带上你,做@roseonly专爱花店 的"爱心使者",去给大家送鲜花." 这是今年Roseonly联合张亮父子,在圣诞节期间做的一次社会化营销.想必大家对Roseonly这个品牌已经很熟悉,2013年情人节通过李小璐的微博营销,Roseonly一炮走红,成为在天猫营业额第一的鲜花品牌.成立不到一年,已经完成融资三轮,重新定义了"高端鲜花私人定制"的概念,Roseo