2014-04-04 67 views
3

我想用urllib2urllib填写HTML表单。Python urllib,urllib2填写表单

import urllib 
import urllib2 

url = 'site.com/registration.php' 
values = {'password' : 'password', 
      'username': 'username' 
      } 

data = urllib.urlencode(values) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
the_page = response.read() 

但在形式的端部是一个button(input type='submit')。如果您不点击按钮,则无法发送数据input(type text)

如何单击带有urlliburllib2的按钮?

+0

提交表单或“单击按钮”实际上意味着发送POST请求...所以只需使用urllib2来完成,o更容易,可以用python-requests来完成。让我知道你是否需要一个例子。 – Curro

回答

1

如果你看看你的表单动作属性,你可以找出你的表单提交的URI。然后,您可以向该uri发出发布请求。 这是可以做到这样的:

import urllib 
import urllib2 

url = 'http://www.someserver.com/cgi-bin/register.cgi' 
values = {'name' : 'Michael Foord', 
      'location' : 'Northampton', 
      'language' : 'Python' } 

data = urllib.urlencode(values) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
the_page = response.read() 

https://docs.python.org/2/howto/urllib2.html

您也可以使用请求库,这使得它容易得多。你可以阅读它here

你可能需要考虑的另一件事是嵌入在窗体中的CSRF(跨站请求伪造)令牌。你将不得不通过一些如何获得它并将它传递给你的帖子。