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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python开发实例分享bt种子爬虫程序和种子解析
May 21 Python
使用Python脚本对Linux服务器进行监控的教程
Apr 02 Python
Python实现简单字典树的方法
Apr 29 Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
jupyter notebook读取/导出文件/图片实例
Apr 16 Python
Python使用jpype模块调用jar包过程解析
Jul 29 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 include,include_once,require,require_once
2008/09/05 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
Python下Fabric的简单部署方法
2015/07/14 Python
详解Django中的权限和组以及消息
2015/07/23 Python
Python中的函数作用域
2018/05/07 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
在校生党员自我评价
2013/09/25 职场文书
幼儿生日活动方案
2014/08/27 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python
Spring中的@Transactional的工作原理
2022/06/05 Java/Android