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清除字符串里非字母字符的方法
Jul 02 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
Python生成数字图片代码分享
Oct 31 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
Python如何使用OS模块调用cmd
Feb 27 Python
Python selenium自动化测试模型图解
Apr 15 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
python如何调用java类
Jul 05 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 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
新52大事件
2020/03/03 欧美动漫
Apache设置虚拟WEB
2006/10/09 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
JavaScript的目的分析
2007/01/05 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
python快速排序代码实例
2013/11/21 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
python lambda的使用详解
2021/02/26 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
暑期社会实践学生的自我评价
2014/01/09 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
大学生交通专业求职信
2014/09/01 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
风雨哈佛路观后感
2015/06/03 职场文书