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 getopt 参数处理小示例
Jun 09 Python
python中list循环语句用法实例
Nov 10 Python
go语言计算两个时间的时间差方法
Mar 13 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
用Python实现大文本文件切割的方法
Jan 12 Python
python同时替换多个字符串方法示例
Sep 17 Python
Python使用进程Process模块管理资源
Mar 05 Python
如何在sublime编辑器中安装python
May 20 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
python制作微博图片爬取工具
Jan 16 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 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下对字符串的递增运算代码
2010/08/21 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
python利用hook技术破解https的实例代码
2013/03/25 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python 实现单通道转3通道
2019/12/03 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python实现分数序列求和
2020/02/25 Python
Python计算IV值的示例讲解
2020/02/28 Python
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
煤矿班组长的职责
2013/12/25 职场文书
业务内勤岗位职责
2014/04/30 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL