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 27 Python
Python中3种内建数据结构:列表、元组和字典
Nov 30 Python
python实现合并两个数组的方法
May 16 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
Python使用pyh生成HTML文档的方法示例
Mar 10 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
详解Python 解压缩文件
Apr 09 Python
Django 大文件下载实现过程解析
Aug 01 Python
python 公共方法汇总解析
Sep 16 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
python Scrapy框架原理解析
Jan 04 Python
ASP.NET Core中的配置详解
Feb 05 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 curl基本操作详解
2013/07/23 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
jquery获取input的value问题说明
2010/08/19 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
js函数调用的方式
2014/05/06 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
django站点管理详解
2017/12/12 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
室内设计专业毕业生求职信
2014/05/02 职场文书
学习经验演讲稿
2014/05/10 职场文书
中药学专业求职信
2014/05/31 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书