python模拟登录百度代码分享(获取百度贴吧等级)


Posted in Python onDecember 27, 2013
# -*- coding: utf8 -*-
'''
Created on 2013-12-19
@author: good-temper
'''
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 pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
Python切片操作实例分析
Mar 16 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
python中while和for的区别总结
Jun 28 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 Python
python读文件逐行处理的示例代码分享
Dec 27 #Python
python调用cmd复制文件代码分享
Dec 27 #Python
win7安装python生成随机数代码分享
Dec 27 #Python
python正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 #Python
python正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 #Python
python正则表达式判断字符串是否是全部小写示例
Dec 25 #Python
netbeans7安装python插件的方法图解
Dec 24 #Python
You might like
德生H-501的评价与改造
2021/03/02 无线电
php $_ENV为空的原因分析
2009/06/01 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
基于empty函数的输出详解
2013/06/17 PHP
php字符串操作常见问题小结
2016/10/11 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
director.js实现前端路由使用实例
2015/02/03 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Django框架视图函数设计示例
2019/07/29 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
python datetime处理时间小结
2020/04/16 Python
详解Python 最短匹配模式
2020/07/29 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
劳资员岗位职责
2013/11/11 职场文书
大学校庆邀请函
2014/01/11 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
培训计划通知
2015/07/15 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
MySQL 数据库范式化设计理论
2022/04/22 MySQL
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS