python3发新浪微博
创建微博应用
登陆http://open.weibo.com/apps
创建微博应用,获取App Key
和App Secret
,填写OAuth2.0授权回调页,如果不知道是什么就写微博默认的https://api.weibo.com/oauth2/default.html
在 应用信息–>高级信息 中,授权回调页和取消授权回调页都填一样的。
这个网上很多。
获取微博的python接口
微博官网提供的python接口是python2.7的,经网友改写成py3,这里贴出代码。
出处:http://www.cnblogs.com/txw1958/archive/2012/08/13/weibo-oauth2-python3.html
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__version__ = '1.04'
__author__ = 'Liao Xuefeng (askxuefeng@gmail.com)'
__publish__ = 'http://www.cnblogs.com/txw1958/'
'''
Python3 client SDK for sina weibo API using OAuth 2.
'''
try:
import json
except ImportError:
import simplejson as json
import time
import urllib.request
import logging
def _obj_hook(pairs):
'''
convert json object to python object.
'''
o = JsonObject()
for k, v in pairs.items():
o[str(k)] = v
return o
class APIError(Exception):
'''
raise APIError if got failed json message.
'''
def __init__(self, error_code, error, request):
self.error_code = error_code
self.error = error
self.request = request
Exception.__init__(self, error)
def __str__(self):
return 'APIError: %s: %s, request: %s' % (self.error_code, self.error, self.request)
class JsonObject(dict):
'''
general json object that can bind any fields but also act as a dict.
'''
def __getattr__(self, attr):
return self[attr]
def __setattr__(self, attr, value):
self[attr] = value
def _encode_params(**kw):
'''
Encode parameters.
'''
args = []
for k, v in kw.items():
qv = v.encode('utf-8') if isinstance(v, str) else str(v)
args.append('%s=%s' % (k, urllib.parse.quote(qv)))
return '&'.join(args)
def _encode_multipart(**kw):
'''
Build a multipart/form-data body with generated random boundary.
'''
boundary = '----------%s' % hex(int(time.time() * 1000))
data = []
for k, v in kw.items():
data.append('--%s' % boundary)
if hasattr(v, 'read'):
filename = getattr(v, 'name', '')
n = filename.rfind('.')
ext = filename[n:].lower() i