Извлечение TLD из URL-адресов и сортировка доменов и поддоменов для каждого файла TLD
У меня есть список миллионов URL. Мне нужно извлечь TLD для каждого URL и создать несколько файлов для каждого TLD. Например, собрать все URL-адреса с.com как tld и вывести их в 1 файл, другой файл для.edu tld и так далее. Далее в каждом файле я должен отсортировать его в алфавитном порядке по доменам, а затем по поддоменам и т. Д.
Может кто-нибудь дать мне старт для реализации этого в Perl?
1 ответ
Решение
- Используйте URI для разбора URL,
- Используйте его
host
способ получить хозяина, - Используйте Domain:: PublicSuffix's
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
}