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正则捕获操作示例
Aug 19 Python
速记Python布尔值
Nov 09 Python
基于Django与ajax之间的json传输方法
May 29 Python
基于python中theano库的线性回归
Aug 31 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
Python检测数据类型的方法总结
May 20 Python
python如何将两个txt文件内容合并
Oct 18 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
Python终端输出彩色字符方法详解
Feb 11 Python
套娃式文件夹如何通过Python批量处理
Aug 23 Python
python单例模式的应用场景实例讲解
Feb 24 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 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
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
Vue动态组件实例解析
2017/08/20 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python解析json文件相关知识学习
2016/03/01 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
python3实现猜数字游戏
2020/12/07 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
Linux如何压缩可执行文件
2014/03/27 面试题
区级文明单位申报材料
2014/05/15 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
普通员工辞职信范文
2015/05/12 职场文书
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android