从选项/选择Web表单下载数据

时间:2010-11-12 04:01:55

标签: php http url curl wget

假设有一个网站具有一系列选项/选择下拉菜单。当用户从下拉列表A中进行选择时,其选择的值将发布到服务器并填充下拉列表B.下拉B以相同的方式填充下拉C。当选择下拉C时,数据显示特定于他们在C中的选择。以前的选择在此过程中保留,除非他们改变更高的东西,在这种情况下,所有内容都重置在下面。在HTML中它看起来像这样:

Drop-Down A 
<select class="submitOnChange">
 <option value="a1">A</option>
 <option value="a2" SELECTED>B</option>
 <option value="a3">C</option>
</select>
Drop-Down B
<select class="submitOnChange">
 <option value="b1" SELECTED>B-A</option>
 <option value="b2">B-B</option>
 <option value="b3">B-C</option>
</select>
Drop-Down C
<select class="submitOnChange">
 <option value="c1">B-A-A</option>
 <option value="c2">B-A-B</option>
 <option value="c3" SELECTED>B-A-C</option>
</select>
[Data for B-A-C is shown here because they clicked that]

该脚本专门通过每次选择更改时将所有选定选项的POST发送给自身。

我想从此Web应用程序下载所有数据;也就是说我希望看到与所有可能的下拉C值相关的数据。最好的方法是什么?我看到wget设置为使用链接递归工作,但似乎没有像这样的表单。我会对最简单,最快捷的方式感兴趣。我知道PHP所以我愿意在cURL中编写一个脚本,但是如果有一个更简单的解决方案,比如那里的程序就已经完成了这个(wget?)我会感兴趣。欢迎任何提示或建议。

3 个答案:

答案 0 :(得分:0)

您可以将信息结构化为链接列表,您拥有数据,以及父主键。这样,您可以一次性将所有数据下载为JSON。

我们所做的是设置三个Web方法,第一个提供所有设置A选项,第二个和第三个提供一个和两个参数,所有三个提供JSON到客户端,使用JQuery和ajax调用:

var responseObject = {};
responseObject.parameterA = $('#selectA option:selected').val();
responseObject.parameterB = $('#selectB option:selected').val();
responseObject.parameterC = $('#selectC option:selected').val();
var jsonResult = JSON.stringify(responseObject);

$.ajax({
    type: "POST",
    url: "http://whereever.com",
    data: jsonResult,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (j) { 
        var options = '';
        for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].value + '">' + j[i].text + '</option>';
}

在这种情况下,成功函数会填充下一个选择,但您可以根据需要重新格式化数据。 J包含数据。

答案 1 :(得分:0)

您可以使用CURL来做到这一点。

您可以从命令行使用它:

curl -d "name=Rafael%20Sagula&phone=3320780"                 http://www.where.com/guest.cgi

来源是CURL手册:http://curl.haxx.se/docs/manual.html

答案 2 :(得分:0)

babonk,

我认为您无法使用该html文件将数据发布到您的服务器,因为您错过了选择部分中的“name”属性,它们应如下所示:

Drop-Down A 
<select class="submitOnChange" name="selectA">
 <option value="a1">A</option>
 <option value="a2" SELECTED>B</option>
 <option value="a3">C</option>
</select>
Drop-Down B
<select class="submitOnChange" name="selectB">
 <option value="b1" SELECTED>B-A</option>
 <option value="b2">B-B</option>
 <option value="b3">B-C</option>
</select>
Drop-Down C
<select class="submitOnChange" name="selectA">
 <option value="c1">B-A-A</option>
 <option value="c2">B-A-B</option>
 <option value="c3" SELECTED>B-A-C</option>
</select>

然后您可以使用以下wget命令列表获取内容:

wget -O yourhtml.htm --post-data "selectA=a1&selectB=b1&selectC=c1" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b1&selectC=c2" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b1&selectC=c3" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b2&selectC=c1" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b2&selectC=c2" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b2&selectC=c3" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b3&selectC=c1" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b3&selectC=c2" http://yoururl.com/
wget -O yourhtml.htm --post-data "selectA=a1&selectB=b3&selectC=c3" http://yoururl.com/
......
wget -O yourhtml.htm --post-data "selectA=a3&selectB=b3&selectC=c3" http://yoururl.com/