前言:
如今我们对“新浪微博pythonapi”大概比较珍视,我们都需要学习一些“新浪微博pythonapi”的相关内容。那么小编在网络上收集了一些对于“新浪微博pythonapi””的相关文章,希望兄弟们能喜欢,兄弟们快快来了解一下吧!微博很火啊,那python是不是可以调用微博的api做一个小应用呢?答案是:必须可以,哈哈使用python调用weibo api
# 调用的url地址 此为获取某人的个人信息的api
the_url = ';access_token=2.xxx__YJBzk8g4Ddfd33f10237XXXXX'
http_body = None
# 发送请求并读取返回 返回的内容是真个html源代码,或者json数据,可以通过文件输出或者包一层repr()来查看内容
req = urllib2.Request(the_url, data=http_body)
#当然也可以用此来发送请求,并读取返回的内容是真个html源代码,可以通过文件输出或者包一层repr()来查看内容
req = urllib2.Request("", data=http_body)
resp = urllib2.urlopen(req)
print repr(resp.read())
import json
# 原配json工具
json.loads(resp.read(), object_hook=_obj_hook)
io = StringIO('["streaming API"]')
print io.getvalue()
# 输出为 ["streaming API"] io输出为一个StringIO对象 <cstringio.stringi object="" at="" 0x1006aed80="">
# 注 json工具 提供load和loads2个方法
json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
其中fp 按照官方的解释[]是面向文件的系统,或者那种提供.read(),.write()方法的对象,比如上面的StringIO
s 为普通的str或者unicode,相应json数据于python数据的对应如下
[]
JSON Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None
# 转换json数据
如果json数据如此
{
"ip_limit": 1000,
"limit_time_unit": "HOURS",
"remaining_ip_hits": 1000,
"remaining_user_hits": 146,
"reset_time": "2013-04-19 15:00:00",
"reset_time_in_seconds": 3286,
"user_limit": 150
}
# 关于 object_hook 非必选函数 用于替换原本钓鱼json.loads返回的一个dict,
# json.loads返回的dict如果遇到一个不存在的量 比如"abc" 则会报错,
# 于是用object_hook 返回一个自己定义的dict 让他在遇到"abc"这个不存在的变量时不直接反错
# 而是try catch一下 返回None 更稳定
def _parse_json(s):
' parse str into JsonDict '
def _obj_hook(pairs):
' convert json object to python object '
o = JsonDict()
# print pairs['list_id']
print 'text' in pairs
if 'text' in pairs:
# it can output utf8
print pairs['text']
# ---
for k, v in pairs.iteritems():
o[str(k)] = v
return o
#loads is different from load
return json.loads(s, object_hook=_obj_hook)
class JsonDict(dict):
' general json object that allows attributes to be bound to and also behaves like a dict '
def __getattr__(self, attr):
try:
return self[attr]
except KeyError:
raise AttributeError(r"'JsonDict' object has no attribute '%s'" % attr)
def __setattr__(self, attr, value):
self[attr] = value
# 此 JsonDict 是dict(字典对象)的子类 它重写了 取索引的方法 __getattr__ 和 __setattr__
# 这里获取dict里的数据有个技巧 在获取JsonDict的对象时有2中方法
d1 = JsonDict();
d1['a'] = 'strra'
print d1['a']
print d1.get('a')
# 此 aaaa 并不在dict中
print d1.get('aaaa') # None
print d1['aaaa'] # key error~
# 使用get获取dict里的数据 遇到空的数据的话 可以避免error的产生 自动转成None</cstringio.stringi>
更多技巧请《转发 + 关注》哦!
标签: #新浪微博pythonapi