我目前正在尝试使用 WWW::Mechanize 创建一个 Perl webspider。
我要做的是创建一个网络蜘蛛,它将抓取整个网站的 URL(由用户输入)并从网站上的每个页面中提取所有链接。
但是我有一个问题,如何爬取整个站点以获取每个链接,而没有重复 到目前为止我所做的事情(无论如何我都遇到了麻烦):
foreach (@nonduplicates) { #array contain urls like www.tree.com/contact-us, www.tree.com/varieties....
$mech->get($_);
my @list = $mech->find_all_links(url_abs_regex => qr/^\Q$urlToSpider\E/); #find all links on this page that starts with http://www.tree.com
#NOW THIS IS WHAT I WANT IT TO DO AFTER THE ABOVE (IN PSEUDOCODE), BUT CANT GET WORKING
#foreach (@list) {
#if $_ is already in @nonduplicates
#then do nothing because that link has already been found
#} else {
#append the link to the end of @nonduplicates so that if it has not been crawled for links already, it will be
我怎么能做到以上?
我这样做是为了尝试爬取整个站点以获取站点上每个 URL 的完整列表,而不会重复。
如果您认为这不是实现相同结果的最佳/最简单方法,我愿意接受想法。
非常感谢您的帮助,谢谢。