让我们使用这个网页来解决这个问题,因为我将发布 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 的值绑定(bind)为 0、1、2 和 3,但我仍然在命令窗口中收到以下消息:
有 2 个带有命名字段的表单,第一个用于:“Path”第 41 行。这一行是上面的 submit_form 行。
我已经确认网页包含历史价格表格,因为我在执行上面的 follow link cmd 后转储了内容,这很困惑,但你自己查看页面源可能比我在这里复制内容更容易。您会看到两个无名提交按钮文本字段“GO”和预期的“获取价格”。
那么我如何才能成功提交包含“获取价格”(表面上是第二个表单)的表单?
最佳答案
您可以通过仅一个 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");
关于html - Perl WWW Mechanize submit_form() 未指向请求的 form_number 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084789/