Python 提交表单数的一点简单介绍How to submit a web form
来源:互联网 发布:validform.js ajaxurl 编辑:程序博客网 时间:2024/06/08 18:35
今天我们花些时间来看下三种用python提交一个web表单的方法,因此,我们用搜索引擎duckduckgo.com以"python"为关键词进行搜索,然后将结果保存为一个HTML文件,我们用python自带的urllib模块和两个第三方包:requests 和mechanize.,我们用三个小脚本来进行测试.
用urllib提交一个web表单
我们开始需要用到urllib和urllib2这两个模块,他们都是python自带的标准库,然后import webbrowser,打开搜索结果以便查看.下面是代码:
当你想提交一个web表单时,你需要做的第一件事是找到表单是被谁调用以及你要发布到哪个链接上,当你访问duckduckgo站点查看源代码时,你会发现表单的action指向“/html”.因此我们的url是"http://duckduckgo.com/html".输入区域被命名为"q",因此要传给duckduckgo一个搜索关键词,我们要将它输入到"q"区域,这就是urllib.urlencode要做的事,,它将我们的搜索词编码,然后我们打开这个url,并搜索,搜索结果被写入磁盘,最后,我们用webbrowser模块打开我们保存的结果.下面让我们看下使用requests包的不同之处.
用requests提交一个web表单
requests包提交一个表单就显得比较优雅,简洁.如下:
使用requests时,你仅仅需要用表单的区域名作为key,搜索词作为value,生成一个字典,然后你用requests.post去搜索,最后,你用搜索结果的对象"r",将它的内容写入到磁盘,在这里,我们跳过了用webbrowser模块打开文件的部分,以便代码看起来更简洁.下面我们来看下用mechanize做同样的事.
用mechanize提交一个表单
对于用python浏览internet,mechanize模块有非常多的优良特性,但很不幸,它不支持javascript,不管怎样,让我们看下它是如何使用的.
就如你看到的,mechanize相比前两种方法,它显得有点儿繁琐,我们需要告诉它,忽略掉robots.txt,否则它会出错,当然,如果你想成为一个遵守网络规范的网民,你不应该忽略它.首先,你需要一个浏览对象,然后你打开这个url,选择表单(在这里是"x"),接着用搜索参数建立一个字典,记住,在在不同的方法里,建立字典的方式有小小的不on过.接着你提交这个查询,并读搜索结果,最终你保存这个搜索结果到磁盘.到这里就结束了.
总结
上述三种方法中,requests是最简单易用的,urllib则比较严谨,mechanize是用来做更多的事,它被用来抓屏和站点测试,所以虽然有点儿复杂,但一点儿也不奇怪.你也可以用selenium来提交一个web表单,你可以阅读这个blog的存档以了解它的用法.
来源:http://www.blog.pythonlibrary.org/2012/06/08/python-101-how-to-submit-a-web-form/
用urllib提交一个web表单
我们开始需要用到urllib和urllib2这两个模块,他们都是python自带的标准库,然后import webbrowser,打开搜索结果以便查看.下面是代码:
当你想提交一个web表单时,你需要做的第一件事是找到表单是被谁调用以及你要发布到哪个链接上,当你访问duckduckgo站点查看源代码时,你会发现表单的action指向“/html”.因此我们的url是"http://duckduckgo.com/html".输入区域被命名为"q",因此要传给duckduckgo一个搜索关键词,我们要将它输入到"q"区域,这就是urllib.urlencode要做的事,,它将我们的搜索词编码,然后我们打开这个url,并搜索,搜索结果被写入磁盘,最后,我们用webbrowser模块打开我们保存的结果.下面让我们看下使用requests包的不同之处.
用requests提交一个web表单
requests包提交一个表单就显得比较优雅,简洁.如下:
使用requests时,你仅仅需要用表单的区域名作为key,搜索词作为value,生成一个字典,然后你用requests.post去搜索,最后,你用搜索结果的对象"r",将它的内容写入到磁盘,在这里,我们跳过了用webbrowser模块打开文件的部分,以便代码看起来更简洁.下面我们来看下用mechanize做同样的事.
用mechanize提交一个表单
对于用python浏览internet,mechanize模块有非常多的优良特性,但很不幸,它不支持javascript,不管怎样,让我们看下它是如何使用的.
就如你看到的,mechanize相比前两种方法,它显得有点儿繁琐,我们需要告诉它,忽略掉robots.txt,否则它会出错,当然,如果你想成为一个遵守网络规范的网民,你不应该忽略它.首先,你需要一个浏览对象,然后你打开这个url,选择表单(在这里是"x"),接着用搜索参数建立一个字典,记住,在在不同的方法里,建立字典的方式有小小的不on过.接着你提交这个查询,并读搜索结果,最终你保存这个搜索结果到磁盘.到这里就结束了.
总结
上述三种方法中,requests是最简单易用的,urllib则比较严谨,mechanize是用来做更多的事,它被用来抓屏和站点测试,所以虽然有点儿复杂,但一点儿也不奇怪.你也可以用selenium来提交一个web表单,你可以阅读这个blog的存档以了解它的用法.
来源:http://www.blog.pythonlibrary.org/2012/06/08/python-101-how-to-submit-a-web-form/
0 0
- Python 提交表单数的一点简单介绍How to submit a web form
- Python 提交表单数的一点简单介绍
- How to Submit a Form Using JavaScript
- js提交表单错误:form.submit is not a function
- 阻止form表单submit提交
- How to Submit a Form with Control + Enter
- 简单的form表单提交...
- struts2: Form表单有多个submit的提交问题
- JavaScript 提交表单的方式 (Using JavaScript Submit Form)
- struts2: Form表单有多个submit的提交问题
- JavaScript 提交表单的方式 (Using JavaScript Submit Form)
- struts2处理form表单的多submit提交
- 关于form.submit()不能提交表单的错误原因
- js 提交表单的方式 (Using JavaScript Submit Form)
- form表单的提交方式:submit和button.
- 获取form表单由submit提交的内容
- form表单的提交按钮不要用submit作ID
- extJS提交form表单数据的方式: Ext.Ajax.request,form.submit,getEl().dom.submit()
- jqueryaddBack()函数:加入先前所选元素
- IIS HTTP 错误 404.17 - Not Found 解决方法
- oracle安装手册
- http学习笔记(三)
- 1036. 跟奥巴马一起编程(15)
- Python 提交表单数的一点简单介绍How to submit a web form
- 电子商务专业
- 第12周项目4 - 利用遍历思想求解图问题(2)
- JSP EL详解
- iOS 个别页面强制横屏,其他页面竖屏
- ffmpeg so
- maven学习
- css如何选择同一个class下的第一个div?
- 简单分析教您如何提高淘宝店铺DSR评分?