2

让我们使用这个网页来解决这个问题,因为我将发布 Perl 片段和报告的错误/信息消息。在finance.yahoo.com输入您最喜欢的股票代码(我使用了GEOR)。点击 go,然后在左侧面板上选择历史价格。底部的形式是这个问题感兴趣的形式。

此页面上似乎有两个带有提交的表单,第二个是我要激活并使用名称/值提交的表单。执行我的 Perl 代码时,无论我设置什么,它似乎都停留在第一个代码上form_number => xx。我想要第二个,它应该返回与我通过with_fieldsargs 提交的编程值有关的历史价格表,而是尝试提交给代码表单而不是历史价格表单。代码在这里:

$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,但我仍然在命令窗口中收到以下消息:

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

我已经确认网页包含历史价格表格,因为我在执行上面的以下链接 cmd 后转储了内容,这很混乱,但您自己查看页面来源可能比我在这里复制内容更容易。您将看到两个无名的提交按钮文本字段“GO”和打算的“获取价格”。

那么我如何才能成功提交包含“获取价格”的表单,表面上是第二个表单呢?

4

1 回答 1

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");
于 2013-09-30T02:54:45.483 回答