用于抓取pdfs的Perl Mechanize模块

时间:2011-05-11 14:59:56

标签: perl web-crawler www-mechanize

我有一个网站,上传了许多pdf。我想要做的是下载网站上的所有PDF。为此,我首先需要为网站提供用户名和密码。搜索了一段时间后,我发现WWW :: Mechanize包可以完成这项工作。现在问题在于我想在网站上进行递归搜索,这意味着如果链接不包含PDF,那么我不应该简单地丢弃链接,而应该导航链接并检查新页面是否包含链接PDF文件。通过这种方式,我应该详尽地搜索整个网站,以下载所有上传的PDF。有关如何做到这一点的任何建议吗?

3 个答案:

答案 0 :(得分:2)

我也会选择wget,它可以在各种平台上运行。

如果您想在Perl中执行此操作,请检查CPAN以获取网络抓取工具。

您可能希望将收集的PDF URL与实际下载它们分开。爬行已经是冗长的处理,并且能够将下载任务交给单独的工作进程可能是有利的。

答案 1 :(得分:2)

您使用WWW::Mechanize模块是正确的。此模块有一个方法 - find_all_links(),您可以在其中指出正则表达式以匹配您要抓取或遵循的页面类型。

例如:

my $obj = WWW::Mechanize->new;
.......
.......
my @pdf_links = $obj->find_all_links( url_regex => qr/^.+?\.pdf/ );

这为您提供了指向pdf文件的所有链接,现在迭代这些链接并对每个链接发出一个get调用。

答案 2 :(得分:1)

我建议尝试使用wget。类似的东西:

wget -r --no-parent -A.pdf --user=LOGIN --pasword=PASSWORD http://www.server.com/dir/