为什么我使用Perl的WWW :: Mechanize获得乱码内容?

时间:2011-10-19 14:56:52

标签: perl mechanize

Perl的WWW::Mechanize返回完整的垃圾(如ðäD=°“lc *Ñ2\ 7õä1û¼Âc{oî'lDNöÓ8ß5o*F2Õ©-õ£z§2ÜÝ1,³íäþwɯÓQÞÆÁS¿IZDKÁ»,ËmÅS1r4!°s,检索页面后,¥4Jl; \J~í2¼)。

我确信它与我尝试下载的特定Web服务器有关。我需要简单的HTML。

以下是代码:

#!/usr/local/bin/perl -w
use WWW::Mechanize;

$url = 'http://www.example.com/brands/';

$mech = WWW::Mechanize->new();
$mech->get($url);
$page = $mech->content();
print "$page\n";

我想这可能是一个编码问题。

有关如何处理此事的任何线索?

谢谢!

2 个答案:

答案 0 :(得分:5)

服务器可能正在发送压缩内容。尝试:

$page = $mech->response->decoded_content;

答案 1 :(得分:0)

我花了几天时间打猎。 Mechanize发送一个声称它执行压缩的标头,因此服务器使用压缩数据进行响应,而Mechanize不知道它必须解码。

问题表现为错误“状态读取失败:”

如果你通过安装和使用WWW :: Mechanize :: GZip来强制压缩,那么一切都会正常工作。