0

我正在尝试在单独的页面上填写表格并返回数据,但我的主机不支持 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);
4

1 回答 1

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;
 }
于 2013-08-26T02:29:31.147 回答