我正在编写一个简单的程序,它必须更改波兰拍卖网站上的一些数据。
其中一个步骤涉及加载编辑页面、更改一个值并提交它。
可以在此处查看示例页面:http: //depesz.com/various/new_item.php.html - 这只是此类编辑页面的静态副本。
我的 perl 代码的相关部分:
$agent->form_number( 1 );
$agent->submit();
$agent->form_number( 1 );
my $q = $agent->current_form()->find_input( 'scheme_id' );
$agent->field('scheme_id', '1025');
# $agent->field('description', encode('utf-8', $agent->value("description")));
# $agent->field('location', encode('utf-8', $agent->value("location")));
# $agent->field('transport_shipment_description', encode('utf-8', $agent->value("transport_shipment_description")));
$agent->submit;
print $agent->response->decoded_content . "\n";
第一次提交后,我得到了我显示的页面。然后我将 scheme_id 字段中的值更改为 1025,并提交表单。
之后我得到:
HTTP::Message content must be bytes at /usr/local/share/perl/5.8.8/HTTP/Request/Common.pm line 91
我试图在表单上的文本字段上重新编码值 - 因此 agent->field(... encode) 行,但它没有帮助。
目前我不知道表单上的什么会使 WWW::Mechanize 以这种方式失败,但我显然无法自行修复。
有没有办法调试这种情况?或者也许我应该做些不同的事情?