经常玩贴吧,刚学python ,所以自己弄了一个python版的签到程序。自己的东西总是最好的。

登陆模块参考的http://www.crifan.com/emulate_login_website_using_python/。签到模块自己找百度瞎糊弄的,写的很烂,代码一点都不规范。有什么建议可以提

 # 594595116@qq.com

 import re
import urllib
import urllib2
import cookielib
import json
import sys
import time
from urllib import quote,unquote
from urllib2 import HTTPError
from urllib2 import URLError def t():
print "按(Y/y)继续,其他退出!"
t = raw_input(">>")
if (t=="y" or t=="Y"):
Login()
else :
print "感谢您的使用。"
print "email:594595116@qq.com"
time.sleep(5) #登陆模块
def Login(): ID = raw_input("百度账号(暂不支持手机和邮箱登陆) :")
ID1 = ID.decode("gb18030").encode("utf-8") #--注意编码,可能网站会识别不了而导致登陆失败
PassWord = raw_input("密码 :") try :
cj = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
urllib2.install_opener(opener); #打开百度获得 cookie
baidu_URL = "http://www.baidu.com"
staticpage = "http://www.baidu.com/cache/user/html/jump.html";
baidu_Login_URL = "https://passport.baidu.com/v2/api/?login";
baidu_OPEN = urllib2.urlopen(baidu_URL) #获得所需的数据 token
getapiUrl = "https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true";
getapiResp = urllib2.urlopen(getapiUrl);
getapiRespHtml = getapiResp.read(); foundTokenVal = re.search("bdPass\.api\.params\.login_token='(?P<tokenVal>\w+)';", getapiRespHtml);
tokenVal = foundTokenVal.group("tokenVal"); #生成要发送的数据
if(foundTokenVal):
LoginData = {
'staticpage':staticpage,#'http://www.baidu.com/cache/user/html/v3Jump.html',
'charset':'UTF-8',
'token':tokenVal,
'tpl':'mn',
#'apiver':'v3',
#'tt':'1375838455898',
#'codestring':'',
'isPhone':'false',
#'safeflg':'0',
#'u':'http://www.baidu.com/',
#'quick_user':'0',
'username':ID1,
'password':PassWord,
#'verifycode':'',
'mem_pass':'on',
#'ppui_logintime':'11211',
'callback':'parent.bdPass.api.login._postCallback',
}; #把发送数据转换格式
LoginData = urllib.urlencode(LoginData); #生成请求数据
baidu_Login_Request = urllib2.Request(baidu_Login_URL, LoginData); #添加数据头部
baidu_Login_Request.add_header('Content-Type', "application/x-www-form-urlencoded");
baidu_Login_Request.add_header('User-Agent', "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"); #发送请求,尝试登陆
baidu_Login_Open = urllib2.urlopen(baidu_Login_Request); #验证登陆是否成功
#tt = urllib2.urlopen(baidu_URL).read().encode("gb18030")
#print tt
#ttt = re.search(r'href="/p/([0-9A-Za-z%]*)\?from=super"',tt).grop(1)
#print ttt
yanzheng_url = "http://www.baidu.com/p/" + ID1
yanzheng_open = urllib2.urlopen(yanzheng_url)
yanzheng_open = yanzheng_open.read().encode("gb18030")
yanzheng = re.search(r"'sexTitle' : '([^ ]*)'", yanzheng_open).group(1) if(yanzheng == "我"):
print "%s 成功登陆, ^_^" %ID
print "签到正在进行中。。"
Sign(ID)
else:
print "%s 登陆失败! 请稍后尝试! " %ID
Login()
else:
print "%s 登陆失败! 请稍后尝试! " %ID
Login()
# print "Fail to extract token value from html=",getapiRespHtml; except :
print "登陆出错啦!"
t() #签到模块
def Sign(ID): try :
#签到请求地址
Sign_Request_Url = "http://tieba.baidu.com/sign/add" #用户的贴吧
ID_Tieba_Url = "http://www.baidu.com/p/" + ID + "?from=tieba"
ID_Tieba_Open = urllib2.urlopen(ID_Tieba_Url).read() #i贴吧id
itieba_id = re.search(r'i\\/([0-9]*)\\/others\?from=princess', ID_Tieba_Open).group(1)
index = "http://tieba.baidu.com/i/" + itieba_id + "?fr=index" #匹配贴吧
index_open = urllib2.urlopen(index).read()
Tieba = re.findall(r'kw=([0-9A-Za-z%]*)&fr=itb_favo&fp=favo" target="_blank">([^ ]*)</a>', index_open) if Tieba != []:
for i in range(len(Tieba)):
Tieba_Url = "http://tieba.baidu.com/f?kw=" + Tieba[i][0]
Tieba_Open = urllib2.urlopen(Tieba_Url).read() #获取tbs
Get_Tbs = re.search(r'PageData.tbs = "([0-9a-z]*)";',Tieba_Open).group(1) #贴吧名字编码
Tieba_Name = urllib.unquote(Tieba[i][0]).decode("gb18030").encode("utf-8")
kw = Tieba_Name #签构造到请求数据 和 编码
Sign_Request_Data={'ie':'utf-8','kw':kw,'tbs':Get_Tbs}
Sign_Request_Data = urllib.urlencode(Sign_Request_Data) #发送签到请求
Sign_Request = urllib2.Request(Sign_Request_Url, Sign_Request_Data)
Sign_Request.add_header('User-agent', "Mozilla/5.0 (X11; Linux i686)")
Sign = urllib2.urlopen(Sign_Request) #获取响应数据
Response = Sign.read() #把响应转成字典
Response = json.loads(Response)
#print Response Tieba_Name = urllib.unquote(Tieba[i][0]).decode("gb18030").encode("utf-8")
#print Tieba_Name
#print unquote(Tieba[i][0])
#print Tieba[i][0]
if(Response['error']=="") :
user_sign_rank = int(Response['data']['uinfo']['user_sign_rank']) #第几个签到
cont_sign_num = int(Response['data']['uinfo']['cont_sign_num']) #连续签到
cout_total_sing_num = Response['data']['uinfo']['cout_total_sing_num'] #累计签到
print "%d..%s 签到成功,第%d个签到,连续签到%d天,累计签到%d天" %(i, unquote(Tieba[i][0]), user_sign_rank, cont_sign_num, cout_total_sing_num)
else :
print "%d.%s" %(i,unquote(Tieba[i][0])) # print "%d.%s %s" %(i,unquote(Tieba[i][0]),Response['error']) 不知道为什么这样是不行的,总是乱码。
print "--------------------%s" %Response['error'] # print "%d.%s %s" %(i,Tieba_Name,Response['error']) 这样却可以,所以把他们拆分了
time.sleep(3)
else :
print "你还没有喜欢的贴吧!" print "一共有%d个喜欢的吧" %(i+1)
t()
except :
print "签到出错啦! "
t() if __name__ == "__main__" :
Login()

经验总结:1,编码问题需要注重 2,编码要规范

python版 百度签到的更多相关文章

  1. Python 版百度站长平台链接主动推送脚本

    如果自己的网站需要被百度收录,可以在搜索结果中找到,就需要将网站的链接提交给百度.依靠百度的爬虫可能无法检索到网站所有的内容,因此可以主动将链接提交给百度. 在百度的站长平台上介绍了链接提交方法,目前 ...

  2. 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)

    火星坐标.百度坐标.WGS84坐标转换代码(JS.python版) 一.JS版本源码 github:https://github.com/wandergis/coordTransform /** * ...

  3. 像计算机科学家一样思考Python(第2版)|百度网盘免费下载|Python新手入门资料

    像计算机科学家一样思考Python(第2版)|百度网盘免费下载 提取码:01ou 内容简介  · · · · · · 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程.贯穿全书的主 ...

  4. 《Python金融大数据分析》高清PDF版|百度网盘免费下载|Python数据分析

    <Python金融大数据分析>高清PDF版|百度网盘免费下载|Python数据分析 提取码:mfku 内容简介 唯一一本详细讲解使用Python分析处理金融大数据的专业图书:金融应用开发领 ...

  5. 《Python Web开发学习实录》高清PDF版|百度网盘免费下载|Python Web开发学习实录

    <Python Web开发学习实录>高清PDF版|百度网盘免费下载|Python Web开发学习实录 提取码:9w3o 内容简介 Python是目前流行的动态脚本语言之一. 李勇,本书共1 ...

  6. 大喜python版opencv3发布,demo脚本抢鲜版发布

    大喜,python版opencv3发布 zwPython3的升级也可以启动了,一直在等这个,zwPython会直接升级到版本3:zwPython3 zwPython3采用64位python3,支持op ...

  7. 移动端自动化测试appium 从入门到项目实战Python版✍✍✍

    移动端自动化测试appium 从入门到项目实战Python版 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程 ...

  8. 移动端自动化测试Appium 从入门到项目实战Python版

    移动端自动化测试Appium 从入门到项目实战Python版  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...

  9. python利用百度云接口实现车牌识别

    一个小需求---实现车牌识别. 目前有两个想法 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 自己实现车牌识别算法(复杂) ! 一开始准备使 ...

随机推荐

  1. [BJOI2014]大融合 LCT维护子树信息

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <strin ...

  2. [译] 我最终是怎么玩转了 Vue 的作用域插槽

    原文链接:https://juejin.im/post/5c8856e6e51d456b30397f31#comment 原文地址:How I finally got my head around S ...

  3. luoguP1462通往奥格瑞玛的道路(二分答案+spfa)

    题意 给出n个点m条边的无向图. 每条边有两个权值a,b; 问在保证从1到n的路径a权值和小于x时,路径上b权值最大值最小为多少. (n≤10000,m≤50000,x≤1000000000) 题解 ...

  4. 苹果下一代iPhone曝光

    3月23日消息,据9TO5Mac报道,苹果下一代iPhone(以下暂命名为iPhone 11)可能会提供像三星Galaxy S10的PowerShare功能,能为Apple Watch和AirPods ...

  5. 紫书 例题 10-16 UVa 12230(数学期望)

    感觉数学期望的和化学里面求元素的相对原子质量的算法是一样的 就是同位素的含量乘上质量然后求和得出 这道题因为等待时机是0到2*l/v均匀分配的,所以平均时间就是l/v 再加上过河的l/v, 最后加上步 ...

  6. 【Educational Codeforces Round 37 E】Connected Components?

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs. 用一个链表来记录哪些点已经确定在某一个联通快里了. 一开始每个点都能用. 然后从第一个点开始进行bfs. 然后对于它的所有 ...

  7. POJ1158 城市交通Traffic lights IOI 1999 (最短路)

    POJ1158 城市交通Traffic lights IOI 1999 (最短路) (1) 问题描述(probolem) 在d城里交通的安排不同寻常,城中有路口和路口之间的道路,再任意两个不同的路口之 ...

  8. c#+ArcGIS Engine-获取矢量图层的空间参考

    转自原文c#+ArcGIS Engine-获取矢量图层的空间参考 介绍一种简单的获取矢量图层空间参考的方法: 首先打开Shp文件获得FeatureClass,代码如下: string pPath=&q ...

  9. iOS framework配置脚本

    # Sets the target folders and the final framework product. FMK_NAME=HovnVoipEngine FMK_VERSION=1.0 # ...

  10. ant安装配置问题:ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.

    项目用到ant 1.去官网下载:http://ant.apache.org/bindownload.cgi 2.解压至安装C盘 3.设置ANT_HOME.PATh.CLASSPATH ANT_HOME ...