我正在尝试在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;
答案 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();