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练习程序批量修改文件名
Jan 16 Python
python使用Tesseract库识别验证
Mar 21 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
python3中eval函数用法使用简介
Aug 02 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
Python如何定义有可选参数的元类
Jul 31 Python
Python requests上传文件实现步骤
Sep 15 Python
python try...finally...的实现方法
Nov 25 Python
用python自动生成日历
Apr 24 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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使用qr生成二维码的示例分享
2014/01/20 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
python传递参数方式小结
2015/04/17 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
销售人员中英文自荐信
2013/09/22 职场文书
银行实习鉴定
2013/12/13 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
python基础之文件处理知识总结
2021/05/23 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS