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中字典(Dictionary)用法实例详解
May 30 Python
Python如何获取系统iops示例代码
Sep 06 Python
python框架django基础指南
Sep 08 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
python中实现控制小数点位数的方法
Jan 24 Python
VSCode中自动为Python文件添加头部注释
Nov 14 Python
在django中自定义字段Field详解
Dec 03 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
python 正则表达式参数替换实例详解
Jan 17 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
python,Java,JavaScript实现indexOf
Sep 09 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实现简易计算器功能
2020/08/28 PHP
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
javascript几个易错点记录
2014/11/26 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python字符串string的内置方法实例详解
2018/05/14 Python
python中列表的含义及用法
2020/05/26 Python
LINUX下线程,GDI类的解释
2016/12/14 面试题
计算机相关的自我评价
2014/01/15 职场文书
单位绩效考核方案
2014/05/11 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
学校个人对照检查材料
2014/08/26 职场文书
大学生赌博检讨书
2014/09/22 职场文书
入伍通知书
2015/04/23 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
推广普通话的宣传语
2015/07/13 职场文书
排球赛新闻稿
2015/07/17 职场文书
入党申请书怎么写?
2019/06/21 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
深入理解Vue的数据响应式
2021/05/15 Vue.js
MySQL学习之基础命令实操总结
2022/03/19 MySQL