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 相关文章推荐
python的else子句使用指南
Feb 27 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
浅谈function(函数)中的动态参数
Apr 30 Python
Python函数式编程
Jul 20 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
python爬取酷狗音乐排行榜
Feb 20 Python
Python中如何导入类示例详解
Apr 17 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
python3 enum模块的应用实例详解
Aug 12 Python
python 链接sqlserver 写接口实例
Mar 11 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
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
php 无限极分类
2008/03/27 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP写日志的实现方法
2014/11/05 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
offsetParent 算法分析
2010/04/05 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
python文件特定行插入和替换实例详解
2017/07/12 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
光声世纪笔试题目
2012/08/25 面试题
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
班级活动总结格式
2014/08/30 职场文书
同事打架检讨书
2015/05/06 职场文书
办公室管理规章制度
2015/08/04 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书