Perl WWW Mechanize submit_form()没有指向form_number请求如何修复?

时间:2013-09-30 00:15:55

标签: html forms perl mechanize

我们将使用此网页解决此问题,因为我将发布Perl片段并报告错误/信息消息。在finance.yahoo.com输入您最喜欢的自动收报机(我使用过GEOR)。点击进入,然后在左侧面板上选择历史价格。最底层的形式是这个问题的关注点。

此页面上似乎有两个表单提交,第二个表单是我要激活并提交名称/值的表单。在执行我的Perl代码时,无论我将form_number => xx设置为什么,它似乎都会停留在第一个代码上。我希望第二个应该返回一个与我通过with_fields args提交的程序值相关的历史价格表,而是尝试提交给股票代码形式,而不是历史价格形式。代码在这里:

$mech -> follow_link (text => "Historical Prices");
print "-D-: Submits: ",$mech->find_all_submits();
$mech->submit_form(
    form_number => 1,
    with_fields => {s => "GEOR",
                    a => "11",
                    b => "20",
                    c => "2013",
                    d => "11",
                    e => "31",
                    f => "2013",
                    g => "d",
                   }
);
my $PageContent = $mech -> content ();
&Dumper($PageContent, "Dump_Historic.txt");
exit;

我已将form_number的值绑定为0,1,2和3,我仍然在命令窗口中收到以下消息:

有两个带有命名字段的表单,第一个用于:“Path”第41行。这一行是上面的submit_form行。

我已经确认网页包含历史价格形式,因为我在执行上面的跟随链接cmd之后转储了内容,它很麻烦,但您可能更容易查看页面源自己而不是我复制内容。您将看到两个无名提交按钮文本字段“GO”,并打算一个“获取价格”。

那么如何才能成功提交包含“获取价格”的表格,表面上是第二种形式?

1 个答案:

答案 0 :(得分:0)

您可以使用仅一个 GET请求获得相同的结果:

$mech->get("http://finance.yahoo.com/q/hp?s=GEOR&a=04&b=22&c=2009&d=08&e=30&f=2013&g=w");