我有一个网站,其中上传了许多 pdf。我想要做的是下载网站上所有的 PDF。为此,我首先需要向网站提供用户名和密码。在搜索了一段时间后,我发现了可以完成这项工作的 WWW::Mechanize 包。现在问题出现在这里,我想在网站中进行递归搜索,这意味着如果链接不包含 PDF,那么我不应该简单地丢弃链接,而是应该浏览链接并检查新页面是否包含包含的链接PDF。这样,我应该彻底搜索整个网站以下载所有上传的 PDF。关于如何做到这一点的任何建议?
问问题
681 次
3 回答
2
您对使用WWW::Mechanize
模块是正确的。这个模块有一个方法——find_all_links()
你可以指出正则表达式来匹配你想要抓取或关注的页面类型。
例如:
my $obj = WWW::Mechanize->new;
.......
.......
my @pdf_links = $obj->find_all_links( url_regex => qr/^.+?\.pdf/ );
这为您提供了指向 pdf 文件的所有链接,现在遍历这些链接并对每个链接发出 get 调用。
于 2011-11-12T18:31:39.533 回答
2
我也会选择wget
在各种平台上运行的 .
如果您想在 Perl 中执行此操作,请检查 CPAN 以获取网络爬虫。
您可能希望将收集 PDF URL 与实际下载它们分离。爬行已经是一个漫长的过程,能够将下载任务交给单独的工作进程可能是有利的。
于 2011-05-11T16:08:55.570 回答
1
我建议尝试使用wget。就像是:
wget -r --no-parent -A.pdf --user=LOGIN --pasword=PASSWORD http://www.server.com/dir/
于 2011-05-11T15:21:06.813 回答