题记
最近一直使用扇贝打卡,每次打卡内容都分享到微博,但是每天打卡让我的微博内容变得很混乱,于是我就想删除这些微博,一个一个删除有点麻烦,自己尝试编程完成试试
微博sdk
根据网上的步骤建立微博应用,选择适合的sdk
python语法简单,上手快,方便快捷,我选了python的
python sdk下载地址
使用教程:
设置变量 APP_KEY 和 APP_SECRET
得到 access_token(授权码) 和 expires_in (过期时间)
然后通过函数得到操作
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
client.set_access_token(access_token, expires_in)
然后可以调用任意api
调用规则:
首先查看新浪微博API文档,例如:
API:statuses/user_timeline
请求格式:GET
请求参数:
source:string,采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey?。
access_token:string,采用OAuth授权方式为必填参数
调用方法:将API的“/”变为“.”,根据请求格式是GET或POST,调用get
()或post()并传入关键字参数,但不包括source和access_token参数:
r = client.statuses.user_timeline.get(uid=123456)
for st in r.statuses:
print st.text
自己尝试开发
发送微博测试,发送N条微博
for i in range(0, N):
status = 'python test demo ' + str(i)
time.sleep(1) #得延迟,不然系统无法快速处理完上一条微博
client.statuses.update.post(access_token=access_token,status=status)
删除微博测试,删除N条微博
# 获取要删除的微博的wid, 返回的数据类型为字典类型
a = client.statuses.user_timeline.ids.get(access_token=access_token)
# 通过字典作得到微博的wid(一次自能得到5个)
wid = a['statuses']
for i in range(0, N):
client.statuses.destroy.post(access_token=access_token, id=wid[i])
在五条微博中删除带有“扇贝打卡”的微博
topics = '扇贝打卡'
user_timeline = client.statuses.user_timeline.get(access_token=access_token)
user_statuses_text = [0, 0, 0, 0, 0]
user_timeline_mid = [0, 0, 0, 0, 0]
tmp2 = [0, 0, 0, 0, 0]
for i in range(0, N):
user_statuses_text[i] = user_timeline['statuses'][i]['text']
user_timeline_mid[i] = user_timeline['statuses'][i]['mid']
if user_statuses_text[i].find(topics) != -1:
tmp2[i] = user_statuses_text[i]
print i
client.statuses.destroy.post(access_token=access_token,id=user_timeline_mid[i])
else:
tmp2[i] = 0
print user_statuses_text
print user_timeline_mid #与下面的函数功能一样
#print client.statuses.user_timeline.ids.get(access_token=access_token)['statuses']
就只能做到这儿了,应为查阅了微博官方api,只能获取前5条微博,不能遍历自己的微博。最开始我的想法是通过微博api,遍历自己发布的微博,然后通过函数匹配关键字,如果匹配的话就删除。
现在先做到这儿,去请教请教大神,或者换一个思路使用python爬虫。。。