我们将使用此网页解决此问题,因为我将发布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”,并打算一个“获取价格”。
那么如何才能成功提交包含“获取价格”的表格,表面上是第二种形式?
答案 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");