使用Mechanize实现自动化表单处理
使用Mechanize实现自动化表单处理
mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web访问控制方面做得更全面
mechanize的特点:
1 http,https协议等 2 简单的HTML表单填写 3 浏览器历史记录和重载 4 Referer的HTTP头的正确添加 5 自动遵守robots.txt的 6 自动处理HTTP-EQUIV和刷新
常用函数
.CookieJar():设置cookie .Browser():打开浏览器 .addheaders():User-Agent,用来欺骗服务器的 .open():打开网页,按照官网描述可以打开任意网页,不仅限于http .select_form():选择表单的,选择表单的ID的时候需要注意。 .form[]:填写信息 .submit():提交
1.安装:
pip install mechanize
注:
只能在python 2.x 上
2.简单使用
import mechanize
br = mechanize.Browser()
br.open("http://www.cnblogs.com/baby123/p/8078508.html")
print br.title()
import mechanize
request2 = mechanize.Request("https://news.cnblogs.com/")
response2 = mechanize.urlopen(request2)
print response2.geturl()
print response2.info()
注: response2.info() # headers response2.read() # body
3.使用百度查询

# coding=UTF-8
import mechanize
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open("https://www.baidu.com/")
br.select_form(nr = 0)
br.form['wd'] = 'python mechanize'
br.submit()
brr=br.response().read()
print brr

4.登陆

# coding=UTF-8
import mechanize
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open("https://passport.csdn.net/account/login?service=http://www.csdn.net") br.select_form(nr = 0)
br.form['username'] = 'XXXXXXX'
br.form['password'] = '123456'
br.submit()
brr=br.response().read()
with open("logininfo.txt","w") as f:
f.write(brr)

将登陆后的html页面写入文件 logininfo.txt, 从文件内容看,登录成功
使用Mechanize实现自动化表单处理的更多相关文章
- AForm — 模型驱动的自动化表单解决方案
http://xiehuiqi220.github.io/AForm/doc/book/#
- python自动化开发-[第二十天]-form表单,CBV和FBV,序列化
1.CBV和FBV的用法 2.序列化用法 3.form表单 一.CBV和FBV 1.cbv是 class based view(基于类),fbv是function based view(基于函数) 2 ...
- python自动化之djangoform表单验证
djangoforms表单验证 创建个类,继承于 forms.form obj = FM(request.post) obj.is_valid() 如果验证没有问题会返回true,否则会返回false ...
- python接口自动化17-multipart/form-data表单提交
前言 multipart/form-data这种格式官方文档给的参考案例比较简单,实际情况中遇到会比较复杂,本篇讲解multipart/form-data的表单如何提交,非图片上传 禅道提交bug 1 ...
- SharePoint表单和工作流 - Nintex篇(一)
博客地址 http://blog.csdn.net/foxdave 本篇开始我将带大家去认识一个第三方的表单工作流工具--Nintex. 本篇将对该工具做一些简单的介绍. Nintex公司成立于200 ...
- Symfony2学习笔记之表单
对于一个Web开发者来说,处理HTML表单是一个最为普通又具挑战的任务.Symfony2集成了一个Form组件,让处理表单变的容易起来.在这一节里,我们将从基础开始创建一个复杂的表单,学习表单类库中最 ...
- Django学习笔记(3)——表单,测试和模板语法的学习
一,表单form 为了接收用户的投票选择,我们需要在前段页面显示一个投票界面,让我们重写之前的polls/detail.html文件,代码如下: <h1>{{ question.quest ...
- Django表单介绍
HTML 表单 在HTML中,表单是<form>...</form> 之间元素的集合,它们允许访问者输入文本.选择选项.操作对象和控制等等,然后将信息发送回服务器. 某些表单的 ...
- django 表单使用
Django提供对表单处理的支持,可以简化并自动化大部分的表单处理工作. 1 定义表单类 表单系统的核心部分是Django 的Form类. Django 的数据库模型描述一个对象的逻辑结构.行为以及展 ...
随机推荐
- bzoj3884 上帝的集合
根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α α ”.“α α 被定义为“元”构成的集合.容 ...
- 实践:搭建基于Load Balancer的MySql Cluster
服务器规划: 整套系统全部在rhel5u1 server 64位版本下,由基于xen的虚拟机搭建,其中集群管理节点*2.SQL节点*2.数据节点*4.Web服务节点*2组成,其中数据节点做成2个组,每 ...
- learning makefile var
- JS-使用indexof来统计字符出现次数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mongodb安装建议
1)软件包的选择 确保使用最新的稳定版本.目前我们线上使用的版本是2.4.6.MongoDB软件包下载页面http://www.mongodb.org/downloads. 确保线上环境总是使用64位 ...
- 学习java的第4天 (2019-03-21 11:49)
学习java的第4天 好文要顶 关注我 收藏该文 里里零关注 - 0粉丝 - 0 0 0 posted on 2019-03-21 11:49 编辑 抱歉! ...
- opcode cache与JIT的区别
要说明opcode cache与JIT的区别,得先明白,字节码,又叫中间码与机器码的区别. 操作码(opcode) 一条机器指令.比如我们汇编语言写的一条操作语句. 机器码(machine code) ...
- 剑指Offer 41. 和为S的连续正数序列 (其他)
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- 莫烦tensorflow(9)-Save&Restore
import tensorflow as tfimport numpy as np ##save to file#rember to define the same dtype and shape w ...
- 初学java集合框架笔记
List接口常用方法: 方法名 说 明 boolean add(Object o) 在列表的末尾顺序添加元素, 起始索引位置从0开始 void add(int index,Object o) 在 ...