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中移动目录结构的方法
Jan 31 Python
浅析python继承与多重继承
Sep 13 Python
python各类经纬度转换的实例代码
Aug 08 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
python爬虫添加请求头代码实例
Dec 28 Python
Python龙贝格法求积分实例
Feb 29 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
详细分析Python collections工具库
Jul 16 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
使用django自带的user做外键的方法
Nov 30 Python
python爬取新闻门户网站的示例
Apr 25 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
Python解析树及树的遍历
2016/02/03 Python
Python装饰器原理与用法分析
2018/04/30 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python全栈开发语法总结
2020/11/22 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
AOP的定义以及作用
2013/09/08 面试题
劳动之星获奖感言
2014/02/01 职场文书
高一化学教学反思
2014/02/05 职场文书
司机岗位职责
2015/02/04 职场文书
文艺节目主持词
2015/07/06 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
python实战之用emoji表情生成文字
2021/05/08 Python
Python竟然能剪辑视频
2021/05/25 Python
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python