当表单元素中没有属性时发出帖子请求?

时间:2015-02-13 21:53:04

标签: python html forms web-scraping python-requests

我正在浏览邮政编码并从此网站http://www.airnow.gov/index.cfm?action=school_flag_program.sfp_createwidget

中检索信息

这是表单和输入元素:

<form name="groovyform">
<input type="text" name="Title" id="Title" size="20" maxlength="20" />
<input type="text" name="Zipcode" id="Zipcode" size="10" maxlength="10" />

我的问题是,如果表单元素中没有属性(例如actionmethod),如何发布帖子请求?

我的代码(我使用request.get参数尝试了params,使用request.post参数尝试了data

url = 'http://www.airnow.gov/index.cfm?action=school_flag_program.sfp_createwidget'
data_to_send = {'zipcode ':'37217',
                'Title': 'ph'}
response = requests.get(url, params=data_to_send)
contents = response.text
print contents

只返回url的HTML,但我想要发布data时获得的页面的HTML。换句话说,我认为request.get不提交我的数据,而且我认为它与actionmethod属性有关。

启发我!

谢谢!

3 个答案:

答案 0 :(得分:2)

该表格不打算在任何地方提交。它只是为了Copy按钮的利益而存在:

<input type="button" value="Copy" onclick="copy(document.groovyform.simba.value)" />

document.groovyform Javascript函数中还有一些对buildCall的引用,当您点击Build your widget时会运行该函数。

这是一种旧式的Javascript编程。现在,大多数人会为这些元素分配ID,并使用document.getElementById()来访问它们,因此不需要将它们包装在表单中。但在开发该方法之前,访问DOM元素的方式取决于表单自动添加为document的属性,输入元素是包含表单的属性。

答案 1 :(得分:1)

阅读理解,我可以学习它。

答案 2 :(得分:0)

好吧,就像巴马尔所说的那样,我发布的<form>不应该被提交。我应该填写的表格(页面顶部)包含以下内容:

<form name="frmZipSearch" method="get" style="width:178px; float:left;">
 Zip Code:
<input name="zipcode" type="text" size="5"  maxlength="5" height="20">

现在我的代码正常运作。

url = 'http://www.airnow.gov/index.cfm?action=airnow.local_city&zipcode=37217&submit=Go'
data_to_send = {'zipcode':'37217'}
response = requests.get(url, data=data_to_send)
contents = response.text
print contents

谢谢Barmar,指导我走正确的道路。