我正在编写简单的程序,必须更改波兰拍卖网站上的一些数据。
其中一个步骤涉及加载编辑页面,更改一个值并提交。
可以在此处查看示例页面: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
我尝试在表单上的文本字段上重新编码值 - 因此代理 - >>字段(...编码)行,但它没有帮助。
目前我不知道表单上的内容可以使WWW :: Mechanize以这种方式失败,但我显然无法自行修复。
有没有办法调试这种情况?或许我应该采取不同的做法?
答案 0 :(得分:1)
确保您的LWP和WWW-Mechanize模块完全是最新的。如果我没记错的话,LWP在2008年底解决了许多编码问题。
答案 1 :(得分:0)
我有同样的问题。
解决了它:
my $newcontent = encode('utf-8', $file);
在发布内容之前!
感谢, 麦克