2011-02-02 85 views
1

我正在尝试使用curl从澳大利亚统计局网页中自动请求职业代码。当我使用Curl执行POST请求时,出现“搜索索引不存在”错误。我认为问题在于我没有输入两个输入,所以它失败了。我希望有这方面的援助:使用隐藏输入值卷曲POST表单请求

卷曲要求:

curl --data "searchcontent=&helpdocid=[docid]&searchtext=121315&submit=Go" http://www.ausstats.abs.gov.au/ausstats/searchclass.nsf/(Searchattmnt)?openagent 

从ABS网站相关的代码是这样的:

<!-- Start Search Content --> 
<div id="titlemain"> Search Results</div><div id="middle"></div> 
<form name="attmnt" method="post" action="http://www.ausstats.abs.gov.au/ausstats/searchclass.NSF/(Searchattmnt)?openagent"> 
<input type="hidden" name="searchcontent" value=""> 
<input type="hidden" name="helpdocid" value="[docid]"> 
<div id="content"> 
<h3>New Search :</h3> 
<input type="text" name="searchtext" size =60 MAXLENGTH="255" value=""> 
<INPUT VALUE="Go" TYPE="submit"> 
</form> 
</div> 
<!-- End Search Content --> 

让我知道如果别的会有所帮助。如果我无法得到这个工作,我正在注视着一些严重的数据录入。

编辑:只纠正卷曲请求中的错字,以避免混淆。

+0

您是否尝试使用Wireshark等工具从网页捕获POST?这可能比试图破译HTML更准确。 – 2011-02-02 06:06:56

+0

可能是这里的拼写错误,但&sumbit应该&提交(如果它甚至需要)。而且,这些隐藏的元素值可能实际上是基于用户操作使用javascript设置的。 – 2011-02-02 06:13:03

回答

1

我用@Justin摩根的建议,虽然我执行的请求跑Wireshark的。这给了我需要的价值。这到底是我用工作的卷曲要求:

curl \ 
-d "searchcontent=1220.0Data%2BCubes-SuperTable25.06.091" \ 
-d "helpdocid=17441354B1295875CA2571E6000AE9A0" \ 
-d "searchtext=121318" \ 
http://www.ausstats.abs.gov.au/ausstats/searchclass.NSF/(Searchattmnt)?openagent 
1

的问题是,卷曲的--data参数将完全按照你提供给它的内容,但你是不是网址编码保留字符(具体而言,[]字符),那么服务器将不能够投其所好正确的helpdocid字段的值。

在旁注中,请勿在发布的数据中包含“submit = Go”字段。只有具有名称和值的字段才会被提交。

试试这个:

curl --data "searchcontent=&helpdocid=%5Bdocid%5D&searchtext=121315" http://www.ausstats.abs.gov.au/ausstats/searchclass.nsf/(Searchattmnt)?openagent 
0

Mozilla的插件livehttpheader显示了用于发布到服务器urlencoded的文本字符串。