Perl LWP :: Simple不会获取某些URL

时间:2014-04-07 16:09:05

标签: perl

我正在尝试在Perl中编写一个基本的webscraping程序。由于某种原因,它不能正常工作,我不知道为什么会有一丝线索。

我的代码的第一部分是我获取内容(只是将所有HTML代码从网页保存到变量)不适用于某些网站。

我正在通过打印出来测试它,并且它不会打印出这个特定网站的任何内容。它适用于其他一些网站,但不是全部。

还有另一种方法吗?

#use strict;
use LWP::Simple qw/get/;
use LWP::Simple qw/getstore/;


## Grab a Web page, and throw the content in a Perl variable.
my $content = get("https://jobscout.lhh.com/Portal/Page/ResumeProfile.aspx?Mode=View&ResumeId=53650");
print $content;

2 个答案:

答案 0 :(得分:4)

那里有一个写得很糟糕的网站。请求超时500 Internal Server Error

我不能建议如何绕过它,但该网站几乎肯定也使用JavaScript LWP不支持,所以我怀疑答案是否会对你有用。


<强>更新

如果请求中没有Accept-Language标头,那么网站似乎已经写好了,所以它会变得疯狂。

完整LWP::UserAgent模块是设置它的必要条件,如此

use strict;
use warnings;

use LWP;

my $ua = LWP::UserAgent->new(timeout => 10);
my $url = 'https://jobscout.lhh.com/Portal/Page/ResumeProfile.aspx?Mode=View&ResumeId=53650';

my $resp = $ua->get($url, accept_language => 'en-gb,en', );
print $resp->status_line, "\n\n";
print $resp->decoded_content;

返回状态为200 OK和一些HTML。

答案 1 :(得分:0)

要与使用Javascript的网站互动,我建议您使用以下模块:WWW::Mechanize::Firefox

use strict;
use warnings;

use WWW::Mechanize::Firefox;

my $url = "https://jobscout.lhh.com/Portal/Page/ResumeProfile.aspx?Mode=View&ResumeId=53650"

my $mech = WWW::Mechanize::Firefox->new();
$mech->get($url);

print $mech->status();

my $content = $mech->content();