我们的工作有的时候需要抓取网页,然后提取信息,在linux下使用系统调用wget可以抓取,但是在windows下
没有这个工具,而常用的是LWP,LWP是perl 的一个http工具包,我们可以使用这个包来发送请求,获取响应
下面是一个简单的抓取网页的例子。
# LWPFetcher.pl
#!/usr/bin/perl
use LWP;
use HTTP::Cookies;
my $id = $ARGV[0];
my $browser = LWP::UserAgent->new();
$browser->agent("Mozilla/5.0(compatible;MSIE 6.0;Windows NT 5.1)");
$browser->timeout(180);
push @{$browser->requests_redirectable},'POST';
$browser->cookie_jar(HTTP::Cookies->new(file=>"foo.lwp",autosave=>1));
my $url = URI->new(''.$id);
my $response = $browser->post($url);
die "Cannot get the $url" unless $response->is_success;
print $response->content;
这样调用的时候,可以传入参数id,来抓取某一页,然后print 出来,批量抓取的话,
可以再写一个perl,来调用这个LWPFetcher.pl,并保存文件,下面是抓0-300的示例
#loopLWP.pl
#!/usr/bin/perl
for(my $i = 0; $i < 301; $i++){
system("perl LWPFetcher.pl $i > fetchedHtmls/$i.html");
}
通过
>perl loopLWP.pl
就能抓取id=0-300的网页,并将这些网页保存到fetchedHtmls文件夹下对应的html文件
之后就能进行下一步的处理了。
阅读(2925) | 评论(8) | 转发(0) |