700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python 自动发微博_python3实现古城钟楼每个时辰自动发微博

python 自动发微博_python3实现古城钟楼每个时辰自动发微博

时间:2022-11-10 02:08:43

相关推荐

python 自动发微博_python3实现古城钟楼每个时辰自动发微博

古城钟楼

这个微博从10月26日起,坚持每天都在微博上按干支计时的每个时辰发送“铛”声,时间分秒不差,这样的微博样式一直坚持了一年多!而且所有微博除了“铛”和多个“铛”字外,并无其他内容,页面非常整齐、干净、纯粹。目前,该微博已经有了超过80万的粉丝!

而这样的另类微博自然戳中了广大网友的小店,网友纷纷排气长队献上各种神回复。网友不禁赞叹古城钟楼为“史上最无聊和最有毅力微博”。

但是稍微有点技术的人就应该知道,这并不是人工手法的。今天我们就来利用python3模仿这个古城钟楼

需要发微博,自然需要先登录微博

首先还是得先去分析微博的登录过程,首先访问微博的手机版登录页面/signin/login,随便输入用户名密码登录

分析登陆过程

我们多打开几个窗口随便输入几次,就会发现除了username跟password会变其他都不会变,所以我们只需要直接将用户名密码与这些写死的参数拼接发送给登录地址就行

登录微博

#登录

def login(code=0):

login_data = configparser.ConfigParser()

login_data.read("user.ini") #将用户名密码放在user.ini配置文件

username = login_data.get("LoginInfo", "email")

password = login_data.get("LoginInfo", "password")

login_url = '/sso/login'

# 构造登录参数

params = {

'username':username,

'password':password,

'savestate':'1',

'r':'',

'ec':'0',

'pagerefer':'',

'entry':'mweibo',

'wentry':'',

'loginfrom':'',

'client_id':'',

'code':'',

'qq':'',

'mainpageflag':'1',

'hff':'',

'hfp':''

}

params = parse.urlencode(params).encode('utf-8')

req = request.Request(login_url,params,method="POST")

res = request.urlopen(req)

result = res.read().decode('utf-8')

login_result = json.loads(result)

if login_result['msg'] == '': #如果没有报错信息,说明登录成功

print('登陆成功')

return True

else:

print(login_result['msg'])

return False

获取当前时辰,拼接当前时辰的微博

def get_content():

time_data = ['子时','丑时','寅时','卯时','辰时','巳时','午时','未时','申时','酉时','戌时','亥时']

now = int(time.strftime('%H',time.localtime(time.time())))

now_tm = now%12

res_str = ''

for x in range(now_tm):

res_str += '铛~'

res_str = '【'+time_data[math.floor(now/2)] + '】' + res_str

return res_str

我们接着分析发微博过程我们首先点击发微博打开的地址是:/compose

发微博页面

然后随便输入微博内容,点击发送,抓包发现,发送微博提交的地址是:/api/statuses/update,提交的内容为content=sda&st=ba1f65,其中sda为自己随意输入的微博内容,然后我们再去分析发送发微博的页面,发现源码中存在一个st参数,于是我们需要先去抓取这个st参数才能拼接发送

发送地址

st参数

获取st参数

def get_st():

url = '/compose'

req =request.Request(url)

res = request.urlopen(req)

html = res.read().decode('utf-8')

return re.search("st: '(.*)'", html).group(1)

最后是直接将微博内容与st参数拼接发送即可

发微博

def weibo(content):

st = get_st()

add_weibo_url = '/api/statuses/update'

# 构造登录参数

params = {

'content':content,

'st':st

}

params = parse.urlencode(params).encode('utf-8')

req =request.Request(add_weibo_url,params,method="POST")

res = request.urlopen(req)

html = res.read().decode('utf-8')

print(html)

然后测试效果

weibo.gif

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。