Python模拟百度登录实例详解


Posted in Python onJanuary 20, 2016

最近公司产品和百度贴吧合作搞活动,为了增加人气,打算做个自动签到的小程序。这个是测试登录的代码,写的比较随意,仅实现了登录并读取关注贴吧列表,下边的就比较简单。

百度登录还是有点麻烦的,由于用的ssl,所以要先获取token,然后再登录,这个用finddle2分析下,还是比较好解决的。

# -*- coding: utf8 -*-
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 相关文章推荐
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
Python常用内置模块之xml模块(详解)
May 23 Python
基于scrapy的redis安装和配置方法
Jun 13 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
Python骚操作之动态定义函数
Mar 26 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 #Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 #Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 #Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 #Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 #Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
Jan 20 #Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 #Python
You might like
关于页面优化和伪静态
2009/10/11 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
ie 调试javascript的工具
2009/04/29 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
项目合作协议书
2014/04/16 职场文书
单位承诺书格式
2014/05/21 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
安全责任书
2015/01/29 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
新闻稿件写作范文
2015/07/18 职场文书
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android