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 相关文章推荐
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
django query模块
Apr 20 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
Django密码系统实现过程详解
Jul 19 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
Pycharm中如何关掉python console
Oct 27 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
PHP 文件类型判断代码
2009/03/13 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
python 全局变量的import机制介绍
2017/09/07 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
Python实现FLV视频拼接功能
2020/01/21 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
面料业务员岗位职责
2013/12/26 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
实用的简历自我评价
2014/03/06 职场文书
学习三严三实心得体会
2014/10/13 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
实习工作表现评语
2014/12/31 职场文书
2015年读书月活动总结
2015/03/26 职场文书
2015年工商所工作总结
2015/05/21 职场文书
入党积极分子考察意见
2015/06/02 职场文书
学前班教学反思
2016/02/24 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android