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工程师面试题 与Python Web相关
Jan 14 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
python在文本开头插入一行的实例
May 02 Python
python处理两种分隔符的数据集方法
Dec 12 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
python爬虫---requests库的用法详解
Sep 28 Python
python 下划线的不同用法
Oct 24 Python
python re的findall和finditer的区别详解
Nov 15 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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/11/19 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python爬虫添加请求头代码实例
2019/12/28 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
雾霾停课通知
2015/04/24 职场文书
逃课检讨书范文
2015/05/06 职场文书
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
windows系统安装配置nginx环境
2022/06/28 Servers