微博很火啊,那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
做猪小侠源码的代理,提供一站式服务
如果你不懂得搭建网站或者服务器,小程序,源码之类的怎么办? 第一通过本站学习各种互联网的技术 第二就是联系客服,我帮帮你搭建(当然要收取部分的费用) 第三成为我们的代理,我们提供整套的服务。