好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 nanqian 于 2022-8-25 16:45 编辑
前几天在站内看到有个兄弟分享了自己用python写的贴吧签到,正好这段时间在学python,于是为了验收一下自己的学习成果在看了个思路后自己写了一份
用pyinstaller打包了一下,在同一目录下的cookie.txt里填好cookie就可以用了
下面的代码是把cookie填在文件里的
[Python] 纯文本查看 复制代码 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import requests
import os
import time
import platform
from progress.bar import IncrementalBar
my_cookie = ''
my_header = {'Cookie': my_cookie,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'}
def clear():
# 返回系统平台/OS的名称,如Linux,Windows,Java,Darwin
system = platform.system()
if system == u'Windows':
os.system('cls')
else:
os.system('clear')
total = 0
success_num = 0
repeat = 0
fail_list = []
section = requests.session()
def signup(tb):
global total, success_num, repeat, fail_list
total += 1
time.sleep(0.1)
# print(f' \n ♪{tb}吧')
sign_data = {
'ie': 'utf-8',
'kw': tb,
'tbs': time.time(),
}
sign_url = 'https://tieba.baidu.com/sign/add'
req = section.post(sign_url, data=sign_data, headers=my_header)
if req.json()['error'] == '':
success_num += 1
elif req.json()['error'] == u'亲,你之前已经签过了':
repeat += 1
else: # 把签到失败的存储在列表里
fail_list.append(tb)
def autoSignup():
page = 1 # 从第一页开始
print(u' \n如果您关注的贴吧较多将会分组签到,每组最多20个')
while True:
list_url = f'https://tieba.baidu.com/f/like/mylike?&pn={page}'
res = section.get(list_url, headers=my_header)
tb_list = re.findall(r'<a href=".*?" title=".*?">(.*?)</a>', res.text)
if len(tb_list) == 0:
break
print('-------------------------')
# 创建进度条
mylist = tb_list
bar = IncrementalBar('·', max=len(mylist))
for tb in tb_list:
bar.next()
signup(tb)
time.sleep(0.5)
bar.finish()
page += 1 # 循环结束+1页
fail_num = total - success_num - repeat
print('-------------------------')
print(
f' 您本次尝试签到{total}个吧,其中:\n'
f' {success_num}个签到成功,{repeat}个已经签到过,{fail_num}个签到失败\n'
f' 签到失败的贴吧列表:{fail_list}')
print(u'\n\n 所有贴吧签到完成,感谢您的使用!')
def main():
if __name__ == '__main__':
clear()
for t in range(0, 5):
print(
u'\t\n -- 该文件仅用于学习交流,请合法使用并在下载后的24小时内删除! --\n')
time.sleep(0.3)
time.sleep(1.5)
clear() # 清除提示内容,下面正式开始
if my_cookie == '':
print(u' cookie为空')
input(u' 按回车键关闭程序…')
return
autoSignup()
input(u' 按回车键关闭程序…')
main()
2022.8.25
1.解决只能签到20个的问题
2.使用session来减少握手时间,提高效率
3.删除了get_tbs函数,直接使用time.time()生成tbs参数
4.改用进度条显示进度
感谢33楼@zhai0122的建议
应用版及源码下载链接:https://nanqian.lanzouv.com/b05oo670h 密码:i26x
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|