我有一个百万网址列表。 我需要为每个网址提取TLD并为每个TLD创建多个文件。 例如,将.com的所有URL收集为tld并将其转储到1个文件中,将另一个文件转储为.edu tld,依此类推。 在每个文件中,我必须按字母顺序按域排序,然后按子域等排序。
任何人都可以帮我在perl中实现这个目标吗?
答案 0 :(得分:6)
host
方法获取主机get_root_domain
来解析主机名。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
}