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实现实例
Apr 26 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
Python中new方法的详解
Jan 15 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
python 实现多维数组转向量
Nov 30 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
python global和nonlocal用法解析
Feb 03 Python
python 通过exifread读取照片信息
Dec 24 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
js下将字符串当函数执行的方法
2011/07/13 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
python tkinter实现屏保程序
2019/07/30 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
护理个人求职信范文
2014/01/08 职场文书
索桥的故事教学反思
2014/02/06 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
保护环境标语
2014/06/09 职场文书
幼儿园教师节演讲稿
2014/09/03 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python