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查找第k小元素代码分享
Dec 18 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
Python实现按中文排序的方法示例
Apr 25 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
Django框架实现分页显示内容的方法详解
May 10 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 Python
python查询MySQL将数据写入Excel
Oct 29 Python
python中slice参数过长的处理方法及实例
Dec 15 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
一个php作的文本留言本的例子(三)
2006/10/09 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
php如何连接sql server
2015/10/16 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
jquery 事件执行检测代码
2009/12/09 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
python3简单实现微信爬虫
2015/04/09 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
班级文化标语
2014/06/23 职场文书
家长通知书家长意见
2014/12/30 职场文书
给上级领导的感谢信
2015/01/22 职场文书
关于感谢信的范文
2015/01/23 职场文书
老龙头导游词
2015/02/11 职场文书
经营场所证明范本
2015/06/19 职场文书
天气温馨提示语
2015/07/14 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android