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

7841951cfdb6?utm_campaign

古城钟楼

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

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

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

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

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

7841951cfdb6?utm_campaign

分析登陆过程

我们多打开几个窗口随便输入几次,就会发现除了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 = 'https://passport.weibo.cn/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

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

7841951cfdb6?utm_campaign

发微博页面

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

7841951cfdb6?utm_campaign

发送地址

7841951cfdb6?utm_campaign

st参数

获取st参数

def get_st():

url = 'https://m.weibo.cn/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 = 'https://m.weibo.cn/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)

然后测试效果

7841951cfdb6?utm_campaign

weibo.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想了解如何使用 Python 模拟登录新浪微博。这是一个比较复杂的过程,需要使用到一些网络编程技术。以下是大致的步骤: 1. 打开新浪微博登录页面,获取登录页面的 HTML 代码。 2. 解析登录页面的 HTML 代码,获取登录所需的参数,如登录表单的 action、用户名和密码的 input 标签名称等。 3. 构造 POST 请求,将用户名和密码等参数以表单形式提交给登录表单的 action 地址。 4. 送 POST 请求,获取登录后的页面 HTML 代码。 5. 解析登录后的页面 HTML 代码,判断登录是否成功。 以下是一个简单的示例代码,可以帮助您更好地理解该过程: ```python import requests from bs4 import BeautifulSoup # 1. 获取登录页面的 HTML 代码 login_url = 'https://weibo.com/login.php' response = requests.get(login_url) html = response.text # 2. 解析登录页面的 HTML 代码,获取登录所需的参数 soup = BeautifulSoup(html, 'html.parser') login_action = soup.find('form', attrs={'name': 'loginform'})['action'] login_username = soup.find('input', attrs={'name': 'username'})['name'] login_password = soup.find('input', attrs={'name': 'password'})['name'] # 3. 构造 POST 请求,将用户名和密码等参数以表单形式提交给登录表单的 action 地址 data = { 'username': 'your_username', 'password': 'your_password', 'savestate': '1', 'r': '', 'ec': '0', 'pagerefer': '', 'entry': 'mweibo', 'mainpageflag': '1' } post_url = f'https://weibo.com/{login_action}' response = requests.post(post_url, data=data) # 4. 送 POST 请求,获取登录后的页面 HTML 代码 html = response.text # 5. 解析登录后的页面 HTML 代码,判断登录是否成功 soup = BeautifulSoup(html, 'html.parser') if soup.find('a', attrs={'title': '我的首页'}): print('登录成功') else: print('登录失败') ``` 需要注意的是,该示例代码中使用了 requests 库和 BeautifulSoup 库,需要安装后才能运行。此外,登录过程可能会因为验证码等原因而变得更加复杂,需要您自行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值