首页 编程教程正文

python3 百度贴吧 自动签到

piaodoo 编程教程 2020-02-22 22:01:34 864 0 python教程

本文来源吾爱破解论坛

     因为百度异地登陆有诸多限制,所以使用了cookie登录,实现一键签到所有关注贴吧,效果如下图

签到截图.jpg (88.2 KB, 下载次数: 0)

下载附件  保存到相册

2019-1-21 12:36 上传


python3 使用到的第三方库 有 requests ,bs4
只需要输入自己的cookie值就可以使用,挂在自己的服务器上,每天自动签到美滋滋,
cookie有效期很久,我自己的已经使用了四十多天了,依然有效
# -*- coding:utf-8 -*-
import requests,datetime,re,os,sys,time
from bs4 import BeautifulSoup

def match_bar_name(soup):
    '''
           获取 ####  当前页    ### 关注贴吧名字 和 链接,返回列表数据,格式[{'name':'abc','link':'www.asdfaf.asdfasdf'},'name':'abc','link':'www.asdfaf.asdfasdf'}],

           这里关注的贴吧名字隐藏在了html中,无法直接访问获取json返回值,用到了bs4处理网页数据
    '''
    list=[]
    for i in soup.find_all('a'):
        if i.has_attr('href') and not i.has_attr('class') and i.has_attr('title'):
            if i.string != 'lua':
                list.append({'name':i.string,'link':'http://tieba.baidu.com/'+i.get('href')})
    return list



# url='http://tieba.baidu.com/f/like/mylike?v=%d'%int(float(time.time())*1000)
def get_bar_link():
    '''
        获取 #####  所有页  ####关注贴吧     名字 和 链接,遍历所有页,直到最后一页

    '''
    url=r'http://tieba.baidu.com/f/like/mylike?pn=%d'
    pg=1
    l = []
    while 1:
        res=s.get(url%pg,headers=headers)
        soup=BeautifulSoup(res.text,'html.parser')
        l.extend(match_bar_name(soup))
        if '下一页' in str(soup):
            pg+=1
        else:
            return l

def check(name,link):
    '''
    name: 贴吧名字
    link:贴吧链接
    利用正则表达式 获取每个关注贴吧 提交数据tbs
    然后签到,并返回签到结果
    '''
    try:
        res=s.get(link)
        tbs=re.compile('\'tbs\': "(.*?)"')
        find_tbs=re.findall(tbs,res.text)
        if not find_tbs:   ###### 没有查找到tbs   跳过这个吧的签到 ##################
            return -1
        data={
            'ie':'utf-8',
            'kw':name,
            'tbs':find_tbs[0],
        }

        url='http://tieba.baidu.com/sign/add'
        res=s.post(url,data=data,headers=headers)          ######## 签到 post
        print(datetime.datetime.now(),'    ',name,'   ',res.json())
        return int(res.json()['no'])   #########返回提交结果

    except:
        return -1




s=requests.session()
cookie='BAIDUID=A3043B35EDF6***********************************47991882'   #########类似于这样的一段代码###########  浏览器提取   ########等会附上提取教程

headers={
    'Cookie':cookie,
    'Upgrade-Insecure-Requests':'1',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
}


for i in get_bar_link():
    '''
    根据签到的返回值  处理结果
    '''
    try:
        res=check(i['name'], i['link'])
        if res==0:
            with open(os.path.join(sys.path[0], '1.log'), 'a+') as f:           ###############这边使用sys.path  是为了在linux 后台启动时识别路径 ################
                f.write(str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + '  ' + i['name'] + '   签到成功\n')
        elif res==1101:
            with open(os.path.join(sys.path[0], '1.log'), 'a+') as f:
                f.write(str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + '  ' + i['name'] + '   亲,你之前已经签过到了\n')
        elif res==1102:
            with open(os.path.join(sys.path[0], '1.log'), 'a+') as f:
                f.write(str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) + '  ' + i['name'] + '   签到太快,重新签到本吧\n')
            time.sleep(10)
            check(i['name'], i['link'])
        else:
            print('未知返回值,重新签到本吧')
            check(i['name'], i['link'])



        time.sleep(2)   ########防止签到太快
    except :
        print('未知报错 重新签到本吧')
        check(i['name'], i['link'])


'''
附上 3种 签到返回json
签到太快    {'no': 1102, 'error': '您签得太快了 ,先看看贴子再来签吧:)', 'data': ''}
已经签过到  {'no': 1101, 'error': '亲,你之前已经签过了', 'data': ''}
成功签到的  {'no': 0, 'error': '', 'data': {'errno': 0, 'errmsg': 'success', 'sign_version': 2, 'is_block': 0, 'finfo': {'forum_info': {'forum_id': 548717, 'forum_name': 'katana'}, 'current_rank_info': {'sign_count': 966}}, 'uinfo': {'user_id': 774850436, 'is_sign_in': 1, 'user_sign_rank': 966, 'sign_time': 1548040220, 'cont_sign_num': 1, 'total_sign_num': 1, 'cout_total_sing_num': 1, 'hun_sign_num': 0, 'total_resign_num': 0, 'is_org_name': 0}}}

'''

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7329.html

搜索