我正在尝试在单独的页面上填写表单并返回数据,但我的主机不支持www :: mechanize模块。我看到HTML :: FORM会完成同样的事情,但我收到了错误
Can't call method "value" on an undefined value at G:\Programming\test.pl line 12.
以下是我一直在测试的代码
use strict;
use LWP::Simple;
use LWP::UserAgent;
use HTML::Form;
use HTML::Strip;
my $base_uri = "UTF-8";
my $url = 'xxxxxxx';
my $form = HTML::Form->parse($url, $base_uri);
$form->value(Zip => '74014');
my $ua = LWP::UserAgent->new;
my $response = $ua->request($form->click);
答案 0 :(得分:2)
parse
的第一个参数是HTML文档本身,但不是URL。
必需的参数是要解析的HTML文档($ html_document) 和用于检索文档的URI($ base_uri)。基URI是 需要解析相对动作URI。提供的HTML文档 应该是Unicode字符串(或US-ASCII)。
所以你需要先get
这个文件(用LWP :: UserAgent)和解析响应:
my $response = $ua->get($url);
if ($response->is_success) {
my $form = HTML::Form->parse($response->decoded_content, $base_uri);
...
}
else {
die $response->status_line;
}