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文件操作整理汇总
Oct 21 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
Python实现FM算法解析
Jun 18 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
wxpython布局的实现方法
Nov 01 Python
python中的RSA加密与解密实例解析
Nov 18 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 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 cache类代码(php数据缓存类)
2010/04/15 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
python采用getopt解析命令行输入参数实例
2014/09/30 Python
Python实现调度算法代码详解
2017/12/01 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
使用K.function()调试keras操作
2020/06/17 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
学校后勤人员职责
2013/12/27 职场文书
处级干部考察材料
2014/12/24 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python