Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467506
  • 博文数量: 118
  • 博客积分: 4015
  • 博客等级: 上校
  • 技术积分: 1233
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-24 22:11
文章分类

全部博文(118)

文章存档

2013年(5)

2011年(61)

2010年(52)

分类: Python/Ruby

2011-04-12 15:26:15

我们的工作有的时候需要抓取网页,然后提取信息,在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) |
给主人留下些什么吧!~~

neobilly2011-05-08 17:26:46

多谢

lijianweiabcde2011-05-08 16:22:56

neobilly: 真的吗,以前真的不知道啊,给个链接好不好.....
wget: http://gnuwin32.sourceforge.net/packages/wget.htm

neobilly2011-05-08 09:35:54

lijianweiabcde: windows  下面 wget , curl好像都可以哦.....
真的吗,以前真的不知道啊,给个链接好不好

lijianweiabcde2011-05-07 23:31:41

windows  下面 wget , curl好像都可以哦

neobilly2011-04-26 15:58:58

2gua: 抓取网页是Perl应用中很广泛的操作,作者的本篇只算是概述,让初学者了解一下。期待深入。.....
我也刚接触perl ,只是记录下自己学习的过程,并没有深入研究,以后
有机会一定会好好研究一下的,多谢您的建议