Python实现模拟登录及表单提交的方法


Posted in Python onJuly 25, 2015

本文实例讲述了Python实现模拟登录及表单提交的方法。分享给大家供大家参考。具体实现方法如下:

# -*- coding: utf-8 -*- 
import re 
import urllib 
import urllib2 
import cookielib 
#获取CSDN博客标题和正文 
url = "http://blog.csdn.net/[username]/archive/2010/07/05/5712850.aspx" 
sock = urllib.urlopen(url) 
html = sock.read() 
sock.close() 
content = re.findall('(?<=blogstory">).*(?=<p class="right artical)', html, re.S) 
content = re.findall('<script.*>.*</script>(.*)', content[0], re.S) 
title = re.findall('(?<=<title>)(.*)-.* - CSDN.*(?=</title>)', html, re.S) 
#根据上文获取内容新建表单值 
blog = {'spBlogTitle': title[0].decode('utf-8').encode('gbk'), #百度博客标题 
    'spBlogText': content[0].decode('utf-8').encode('gbk'),#百度博客内容 
    'ct': "1", 
    'cm': "1"} 
del content 
del title 
#模拟登录 
cj = cookielib.CookieJar() 
#用户名和密码 
post_data = urllib.urlencode({'username': '[username]', 'password': '[password]', 'pwd': '1'}) 
#登录路径 
path = 'https://passport.baidu.com/?login' 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
opener.addheaders = [('User-agent', 'Opera/9.23')] 
urllib2.install_opener(opener) 
req = urllib2.Request(path, post_data) 
conn = urllib2.urlopen(req) 
#获取百度发布博客的认证令牌 
bd = urllib2.urlopen(urllib2.Request('http://hi.baidu.com/[username]/creat/blog')).read() 
bd = re.findall('(?<=bdstoken\" value=\").*(?=ct)', bd, re.S) 
blog['bdstoken'] = bd[0][:32] 
#设置分类名 
blog['spBlogCatName'] = 'php' 
#比较表单发布博客 
req2 = urllib2.Request('http://hi.baidu.com/[username]/commit', urllib.urlencode(blog)) 
#查看表单提交后返回内容 
print urllib2.urlopen(req2).read() 
#请将[username]/[password]替换为您的真实用户名和密码

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python代理抓取并验证使用多线程实现
May 03 Python
TensorFlow实现卷积神经网络
May 24 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
django 自定义过滤器的实现
Feb 26 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
python+rsync精确同步指定格式文件
Aug 29 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
Mar 04 Python
如何将json数据转换为python数据
Sep 04 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 Python
Python基于有道实现英汉字典功能
Jul 25 #Python
Python实现简单的代理服务器
Jul 25 #Python
Python实现截屏的函数
Jul 25 #Python
Python基于PycURL自动处理cookie的方法
Jul 25 #Python
Python基于PycURL实现POST的方法
Jul 25 #Python
Python实现对excel文件列表值进行统计的方法
Jul 25 #Python
Python自动扫雷实现方法
Jul 25 #Python
You might like
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
jquery连缀语法如何实现
2012/11/29 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
JS原型与继承操作示例
2019/05/09 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
js canvas实现星空连线背景特效
2019/11/01 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Python使用py2exe打包程序介绍
2014/11/20 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
详解Scrapy Redis入门实战
2020/11/18 Python
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
大学生职业生涯十年规划书范文
2014/09/17 职场文书
总经理岗位职责
2015/02/04 职场文书
离婚纠纷代理词
2015/05/23 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
人代会简报
2015/07/21 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
MySQL中日期型单行函数代码详解
2021/06/21 MySQL