用WWW :: Mechanize for application / x-www-form-urlencoded发布消息

时间:2019-09-17 13:11:34

标签: perl

我正在尝试将消息发布到网页上,但是我不知道表单的名称是什么?我正在尝试www :: mechanize,但如果有更好的方法,我会使用另一个模块。我能够拉动经过身份验证的页面并查看当前发布的消息。我将表单转储到页面上,因此输出如下:

$VAR2 = bless( {
                 'default_charset' => 'UTF-8',
                 'enctype' => 'application/x-www-form-urlencoded',
                 'accept_charset' => 'UNKNOWN',
                 'action' => bless( do{\(my $o = 'http://myffleague.football.cbssports.com/setup/commish-tools/messaging/edit-league-message')}, 'URI::http' ),
                 'method' => 'POST',
                 'attr' => {
                             'style' => 'display:inline',
                             'method' => 'post'
                           },
                 'inputs' => [
                               bless( {
                                        'readonly' => 1,
                                        'value_name' => '',
                                        'value' => '1',
                                        'name' => 'dummy::form',
                                        'id' => 'dummy::form',
                                        'type' => 'hidden'
                                      }, 'HTML::Form::TextInput' ),
                               bless( {
                                        'readonly' => 1,
                                        'value_name' => '',
                                        'value' => 'form',
                                        'name' => 'form::form',
                                        'id' => 'form::form',
                                        'type' => 'hidden'
                                      }, 'HTML::Form::TextInput' ),
                               bless( {
                                        'readonly' => 1,
                                        'value_name' => '',
                                        'value' => 'U2FsdGVkX1_UaI-cThHnk4dukS_AYpTgYLwzWpW7wsoYNpHOMGPSzno0W5zhDRSt',
                                        'name' => 'form::_eid_',
                                        'id' => 'form::_eid_',
                                        'type' => 'hidden'
                                      }, 'HTML::Form::TextInput' ),
                               bless( {
                                        'value' => '<b>Weekly High Scorers:
                                                    Week 1  => Team 12
                                                   ',
                                        'name' => 'form::message',
                                        'class' => 'formText',
                                        'id' => 'message',
                                        'type' => 'textarea',
                                        'rows' => '10',
                                        'cols' => '60'
                                      }, 'HTML::Form::TextInput' ),
                               bless( {
                                        'readonly' => 1,
                                        'value_name' => '',
                                        'value' => '/setup',
                                        'name' => 'form::xurl',
                                        'id' => 'xurl',
                                        'type' => 'hidden'
                                      }, 'HTML::Form::TextInput' ),
                               bless( {
                                        'value_name' => '',
                                        'value' => '   OK   ',
                                        'name' => '_submit',
                                        'class' => 'formButtonLg custombutton',
                                        'type' => 'submit'
                                      }, 'HTML::Form::SubmitInput' )
                             ]
               }, 'HTML::Form' );



我要发布的值是本周的高分者。这是我正在尝试的帖子。我没有收到错误消息,但消息没有改变。对于此示例,其包含在“ $ msg”中

$mech->form_name('form::message');
print Dumper($mech->forms());
$mech->field("value", $msg);
$mech->submit();

在用户要求我提供更多信息之后,我要添加此部分。这是我要提取的网址,通过提供我的用户名和密码,我可以返回经过身份验证的页面。那时,我然后使用相同的“机械”对象向联盟发布消息。

my $url = "http://myffleague.football.cbssports.com/setup/commish-tools/messaging/edit-league-message?xurl=/setup";
my $username = "username";
my $password = "password";
my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($url);
$mech->form_id('login_form');
$mech->field("userid", $username);
$mech->field("password", $password);
$mech->click;

my $msg = "Weekly High Scorers:\nWeek 1  => Team 12\nWeek 2  => Team 10";
$mech->field('form::message', $msg);
$mech->submit();
print "\n\nAll Good\n\n" if ($mech->success);

这是从站点请求的html。它不是整个页面,而是我需要发布的部分。我用屏幕截图创建了图像。

enter image description here

1 个答案:

答案 0 :(得分:1)

field()方法的第一个参数是您要设置的字段的名称。表单中的所有字段都没有名称“值”。我认为您想要的名称是“ form :: message”。

$mech->field('form::message', $msg);
$mech->submit();