python模拟登录百度代码分享(获取百度贴吧等级)


Posted in Python onDecember 27, 2013
# -*- coding: utf8 -*-
'''
Created on 2013-12-19
@author: good-temper
'''
import urllib2
import urllib
import cookielib
import re
import bs4
URL_BAIDU_INDEX = u'http://www.baidu.com/';
#https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true 也可以用这个
URL_BAIDU_TOKEN = 'https://passport.baidu.com/v2/api/?getapi&tpl=pp&apiver=v3&class=login';
URL_BAIDU_LOGIN = 'https://passport.baidu.com/v2/api/?login';
#设置用户名、密码
username = '';
password = '';
#设置cookie,这里cookiejar可自动管理,无需手动指定
cj = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
urllib2.install_opener(opener);
reqReturn = urllib2.urlopen(URL_BAIDU_INDEX);
#获取token,
tokenReturn = urllib2.urlopen(URL_BAIDU_TOKEN);
matchVal = re.search(u'"token" : "(?P<tokenVal>.*?)"',tokenReturn.read());
tokenVal = matchVal.group('tokenVal');
#构造登录请求参数,该请求数据是通过抓包获得,对应https://passport.baidu.com/v2/api/?login请求
postData = {
    'username' : username,
    'password' : password,
    'u' : 'https://passport.baidu.com/',
    'tpl' : 'pp',
    'token' : tokenVal,
    'staticpage' : 'https://passport.baidu.com/static/passpc-account/html/v3Jump.html',
    'isPhone' : 'false',
    'charset' : 'UTF-8',
    'callback' : 'parent.bd__pcbs__ra48vi'
    };
postData = urllib.urlencode(postData);
#发送登录请求
loginRequest = urllib2.Request(URL_BAIDU_LOGIN,postData);
loginRequest.add_header('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
loginRequest.add_header('Accept-Encoding','gzip,deflate,sdch');
loginRequest.add_header('Accept-Language','zh-CN,zh;q=0.8');
loginRequest.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36');
loginRequest.add_header('Content-Type','application/x-www-form-urlencoded');
sendPost = urllib2.urlopen(loginRequest);
#查看贴吧个人主页 ,测试是否登陆成功,由于cookie自动管理,这里处理起来方便很多
#http://tieba.baidu.com/home/main?un=XXXX&fr=index 这个是贴吧个人主页,各项信息都可以在此找到链接
teibaUrl = 'http://tieba.baidu.com/f/like/mylike?v=1387441831248'
content = urllib2.urlopen(teibaUrl).read();
content = content.decode('gbk').encode('utf8');
print content;
#解析数据,用的BeautifulSoup4,感觉没有jsoup用的爽
soup = bs4.BeautifulSoup(content);
list = soup.findAll('tr');
list = list[1:len(list)];
careTeibalist = [];
print '贴吧链接\t吧名\t等级';
for elem in list:
    soup1 = bs4.BeautifulSoup(str(elem));
    print 'http://tieba.baidu.com/'+soup1.find('a')['href']+'\t'+soup1.find('a')['title']+'\t'+soup1.find('a',{'class','like_badge'})['title'];
Python 相关文章推荐
Python文件去除注释的方法
May 25 Python
解密Python中的描述符(descriptor)
Jun 03 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
面向初学者的Python编辑器Mu
Oct 08 Python
python利用tkinter实现屏保
Jul 30 Python
使用pandas读取文件的实现
Jul 31 Python
关于sys.stdout和print的区别详解
Dec 05 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
Python中全局变量和局部变量的理解与区别
Feb 07 Python
python爬虫scrapy框架的梨视频案例解析
Feb 20 Python
python读文件逐行处理的示例代码分享
Dec 27 #Python
python调用cmd复制文件代码分享
Dec 27 #Python
win7安装python生成随机数代码分享
Dec 27 #Python
python正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 #Python
python正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 #Python
python正则表达式判断字符串是否是全部小写示例
Dec 25 #Python
netbeans7安装python插件的方法图解
Dec 24 #Python
You might like
Terran兵种介绍
2020/03/14 星际争霸
改变Apache端口等配置修改方法
2008/06/05 PHP
PHP 面向对象实现代码
2009/11/11 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
Python os模块介绍
2014/11/30 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
python开发入门——set的使用
2020/09/03 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
JPA面试常见问题
2016/11/14 面试题
集团公司总经理岗位职责
2013/12/20 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2014年药店工作总结
2014/11/20 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书