html - Perl WWW Mechanize submit_form() 未指向请求的 form_number 如何解决?

标签 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 的值绑定(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/

相关文章:

jQuery 表单插件 : uploadProgress not called in IE8/IE9

perl - 全局符号 "$variable"需要在 filename.pl 中显式包名称

javascript - 当我使用 background-image css 属性时在 div 中闪烁图像

html - 在 Go 中制作网络应用程序?

php - 将表单重定向到另一个页面而不是 API

jquery - Symfony 在前端添加表单字段

perl - 如何通过套接字共享 Perl 数据结构?

windows - 如何在 perl 中从当前工作目录后移一级

javascript - 在水平滚动页面的某个点停止

html - 如何制作只有边框线和垂直线的表格html