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验证码识别的方法
Jul 10 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
python实现祝福弹窗效果
Apr 07 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
如何基于Python创建目录文件夹
Dec 31 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
Mar 06 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
python实现企业微信定时发送文本消息的示例代码
Nov 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
菜鸟修复电子管记
2021/03/02 无线电
打造计数器DIY三步曲(下)
2006/10/09 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
vue监听dom大小改变案例
2020/07/29 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python 实现简单的FTP程序
2019/12/27 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
家教广告词
2014/03/19 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
办公室日常管理制度
2015/08/04 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript