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实现身份证号码解析
Sep 01 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python 数据结构之旋转链表
Feb 25 Python
python tkinter界面居中显示的方法
Oct 11 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 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
福利彩票幸运号码自动生成器
2006/10/09 PHP
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP 无限级分类
2017/05/04 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
在django模板中实现超链接配置
2019/08/21 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
路政管理专业个人自荐信范文
2013/11/30 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
社区工作者思想汇报
2014/01/13 职场文书
学生会主席事迹材料
2014/01/28 职场文书
环保倡议书400字
2014/05/15 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
医生见习报告范文
2014/11/03 职场文书
圣诞节开幕词
2015/01/29 职场文书
音乐课外活动总结
2015/05/09 职场文书