我正在尝试使用curl从澳大利亚统计局网页自动请求职业代码。当我使用Curl执行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 :(得分:1)
问题是curl的--data
参数完全按照您提供的方式发送文本,但您不是对保留字符进行网址编码(特别是[
和]
字符),因此,服务器无法正确匹配helpdocid
字段的值。
在旁注中,请勿在发布的数据中包含“submit = Go”字段。只提交具有名称和值的字段。
试试这个:
curl --data "searchcontent=&helpdocid=%5Bdocid%5D&searchtext=121315" http://www.ausstats.abs.gov.au/ausstats/searchclass.nsf/(Searchattmnt)?openagent
答案 1 :(得分:1)
我在执行请求时使用了@Justin Morgan的建议并运行了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
答案 2 :(得分:0)
Mozilla插件livehttpheader
显示用于发布到服务器的urlencoded文本字符串。