从 URL 中提取 TLD,并对每个 TLD 文件的域和子域进行排序

发布于 2024-12-13 18:24:38 字数 199 浏览 2 评论 0原文

我有一个包含数百万个网址的列表。 我需要提取每个网址的 TLD 并为每个 TLD 创建多个文件。 例如,收集所有以 .com 作为 tld 的 url,并将其转储到 1 个文件中,将 .edu tld 转储到另一个文件中,依此类推。 此外,在每个文件中,我必须按域的字母顺序对其进行排序,然后按子域等进行排序。

任何人都可以给我一个在 perl 中实现此功能的先机吗?

I have a list of million urls.
I need to extract the TLD for each url and create multiple files for each TLD.
For example collect all urls with .com as tld and dump that in 1 file, another file for .edu tld and so on.
Further within each file, I have to sort it alphabetically by domains and then by subdomains etc.

Can anyone give me a head start for implementing this in perl?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

下壹個目標 2024-12-20 18:24:38
  1. 使用 URI 解析 URL,
  2. 使用其 host 方法获取主机,
  3. 使用 Domain::PublicSuffixget_root_domain 解析主机名。
  4. 使用tldsuffix方法获取真实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
}
  1. Use URI to parse the URL,
  2. Use its host method to get the host,
  3. Use Domain::PublicSuffix's get_root_domain to parse the host name.
  4. Use the tld or suffix method to get the real TLD or the pseudo 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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文