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自定义异常实例详解
Jul 11 Python
python文本数据相似度的度量
Mar 12 Python
DataFrame中的object转换成float的方法
Apr 10 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
django-allauth入门学习和使用详解
Jul 03 Python
python实现大学人员管理系统
Oct 25 Python
django框架cookie和session用法实例详解
Dec 10 Python
python opencv如何实现图片绘制
Jan 19 Python
Python实现自动装机功能案例分析
Oct 22 Python
用python读取xlsx文件
Dec 17 Python
numpy实现RNN原理实现
Mar 02 Python
Python爬虫之爬取最新更新的小说网站
May 06 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生成缩略图的类代码
2008/10/02 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
PHP实现倒计时功能
2020/11/16 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python版中国省市经纬度
2020/02/11 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
2014年保卫工作总结
2014/12/05 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
大连星海广场导游词
2015/02/10 职场文书
员工年度工作总结2015
2015/05/18 职场文书
高中班主任寄语
2019/06/21 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang