1

百万のURLのリストがあります。URLごとにTLDを抽出し、TLDごとに複数のファイルを作成する必要があります。たとえば、.comをtldとして含むすべてのURLを収集し、それを1つのファイルにダンプし、別のファイルを.edutldにダンプします。さらに各ファイル内で、ドメイン、次にサブドメインなどでアルファベット順に並べ替える必要があります。

誰かが私にこれをperlで実装するための有利なスタートを与えることができますか?

4

1 に答える 1

6
  1. URIを使用してURLを解析します。
  2. そのhostメソッドを使用してホストを取得し、
  3. Domain :: PublicSuffixを使用get_root_domainして、ホスト名を解析します。
  4. tldまたはメソッドを使用してsuffix、実際のTLDまたは疑似TLDを取得します。

use feature qw( say );

use Domain::PublicSuffix qw( );
use URI                  qw( );

my $dps = Domain::PublicSuffix->new();

for (qw(
   http://www.google.com/
   http://www.google.co.uk/
)) {
   my $url = $_;

   # Treat relative URLs as absolute URLs with missing http://.
   $url = "http://$url" if $url !~ /^\w+:/;

   my $host = URI->new($url)->host();
   $host =~ s/\.\z//;  # D::PS doesn't handle "domain.com.".

   $dps->get_root_domain($host)
      or die $dps->error();

   say $dps->tld();     # com  uk
   say $dps->suffix();  # com  co.uk
}
于 2011-11-07T00:52:47.903 に答える