我尝试使用下面的代码来获取网站htm源码并且它有效。但是,当我使用以下代码访问网站http://reserve.apple.com/WebObjects/ProductReservation.woa/wa/reserveProduct时,我无法获得结果。但是,我可以通过正确使用浏览器来访问此页面。你能给我一些解决这个问题的提示或技巧吗?谢谢。
#!/usr/bin/perl
use strict;
use warnings;
# create a new browser
use WWW::Mechanize;
my $browser = WWW::Mechanize->new();
# tell it to get the main page
my $sURL = 'http://www.apple.com';
#my $sURL = 'http://reserve.apple.com/WebObjects/ProductReservation.woa/wa/reserveProduct';
$browser->get($sURL);
print $browser->content;
exit(0);
答案 0 :(得分:6)
这是一种奇怪的行为,但您想要检索的网址需要以下标题定义: 接受,接受编码,接受语言,接受Charset,Cookie。
否则服务器根本没有响应。
您只需在“获取”请求之前插入以下代码即可轻松完成此操作:
$browser->add_header(
"Accept" => "",
"Accept-Encoding" => "",
"Accept-Language" => "",
"Accept-Charset" => "",
"Cookie" => ""
);
您可以插入一些实际值,而不是空字段,但这也可以。