利用python挪用新浪微博接口
微博很火啊,那python是不是可以挪用微博的api做一个小应用呢?谜底是:必需可以,哈哈
利用python挪用weibo api # 挪用的url地点 此为获取或人的小我私家书息的api http://open.weibo.com/wiki/2/users/show the_url = 'https://api.weibo.com/2/users/show.json?uid=105729xxxx&access_token=2.xxx__YJBzk8g4Ddfd33f10237XXXXX' http_body = None # 发送请求并读取返回 返回的内容是真个html源代码,可能json数据,可以通过文件输出可能包一层repr()来查察内容 req = urllib2.Request(the_url, data=http_body) #虽然也可以用此来发送请求,并读取返回的内容是真个html源代码,可以通过文件输出可能包一层repr()来查察内容 req = urllib2.Request("http://www.baidu.com", 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 凭据官方的表明[http://docs.python.org/2/glossary.html#term-file-object]是面向文件的系统,可能那种提供.read(),.write()要领的工具,好比上面的StringIO s 为普通的str可能unicode,相应json数据于python数据的对应如下 [http://docs.python.org/2/library/json.html?highlight=object_hook#json-to-py-table] 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