2011-11-13 76 views
6

我尝试使用下面的代码来获取网站的HTM源,它的工作原理。但是,使用下面的代码访问http://reserve.apple.com/WebObjects/ProductReservation.woa/wa/reserveProduct网站时,我无法得到结果。但是,我可以通过正确使用浏览器访问此页面。你会给我一些提示或技巧来解决这个问题吗?谢谢。访问网站 - WWW :: Mechanize

#!/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); 

回答

6

这是一个奇怪的现象,但在URL要检索的网站需要以下标题是定义: 接受,接受编码,接受语言,接收字符集,饼干。

否则服务器根本没有响应。

您可以方便你的“得到”请求之前,这样做只是将下面的代码:

$browser->add_header(
    "Accept"   => "", 
    "Accept-Encoding" => "", 
    "Accept-Language" => "", 
    "Accept-Charset" => "", 
    "Cookie"   => "" 
); 

而是空字段可以插入一些真正的价值,但这个工程太。

+0

yko - 太棒了!其实,我也是这样想的。但是,你会和我分享为什么你知道吗?谢谢。 –

+0

我也在想。感谢您分享答案。 :-) –

+0

@TommyLiu这只是一种体验。我从chrome请求中复制标题并将它们放入测试机械化请求中。一旦它开始工作,我开始逐个删除标题。糟糕 - 如果我删除任何标题,它停止工作。然后,我通过块删除标题内容块,试图找到重要的数据。当我发现它不需要任何数据时我真的很惊讶。只是标题名称 – yko