現在、 WWW::Mechanize を使用して Perl webspider を作成しようとしています。
私がやろうとしているのは、(ユーザーが入力した) URL のサイト全体をクロールし、サイトのすべてのページからすべてのリンクを抽出する webspider を作成することです。
私がこれまでに持っているもの:
use strict;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
my $urlToSpider = $ARGV[0];
$mech->get($urlToSpider);
print "\nThe url that will be spidered is $urlToSpider\n";
print "\nThe links found on the url's starting page\n";
my @foundLinks = $mech->find_all_links();
foreach my $linkList(@foundLinks) {
unless ($linkList->[0] =~ /^http?:\/\//i || $linkList->[0] =~ /^https?:\/\//i) {
$linkList->[0] = "$urlToSpider" . $linkList->[0];
}
print "$linkList->[0]";
print "\n";
}
機能:
1.現在、開始ページのすべてのリンクを抽出して一覧表示します
2.見つかったリンクが /contact-us または /help 形式の場合、先頭に「http://www.thestartingurl.com」が追加され、「http://www.thestartingurl.com/contact」になります。 -我ら'。
問題:
現時点では、私が望まない外部サイトへのリンクも検出します。たとえば、'http://www.tree.com' をスパイダーしたい場合、http://www.tree などのリンクを検出します。 com/find-us . ただし、 http://www.hotwire.comなどの他のサイトへのリンクも検出されます。
これらの外部 URL の検索を停止するにはどうすればよいですか?
ページ上のすべての URL を見つけた後、この内部専用リンクの新しいリストを @internalLinks という新しい配列に保存したいのですが、うまくいかないようです。
事前に感謝します。