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中用altzone()方法处理时区的教程
May 22 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
python 网络编程详解及简单实例
Apr 25 Python
python list元素为tuple时的排序方法
Apr 18 Python
python将控制台输出保存至文件的方法
Jan 07 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
基于python3实现倒叙字符串
Feb 18 Python
Python之Sklearn使用入门教程
Feb 19 Python
python创建字典及相关管理操作
Apr 13 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判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
python3实现绘制二维点图
2019/12/04 Python
Python读写压缩文件的方法
2020/07/30 Python
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
机电专业毕业生推荐信
2013/11/10 职场文书
个人担保书范文
2014/05/20 职场文书
白岩松演讲
2014/05/21 职场文书
文体活动总结
2015/02/04 职场文书
人事聘任通知
2015/04/21 职场文书
检讨书怎么写
2015/05/07 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
MySQL的安装与配置详细教程
2021/06/26 MySQL
Python实现位图分割的效果
2021/11/20 Python
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技