Skip to content

Commit c6e3571

Browse files
committed
the ICANN site has changed, so this needs to change
1 parent d57f055 commit c6e3571

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

bin/registrars.pl

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
use DateTime;
55
use Encode;
66
use File::Slurp;
7+
use HTML5::DOM;
78
use JSON::XS;
89
use open qw(:utf8);
910
use feature qw(say);
@@ -43,32 +44,27 @@
4344
my $file;
4445

4546
eval {
46-
$file = mirror_file('https://www.icann.org/en/accredited-registrars');
47+
$file = mirror_file('https://www.icann.org/en/contracted-parties/accredited-registrars/list-of-accredited-registrars');
4748
};
4849

4950
die($@) if ($@);
5051

5152
say STDERR 'retrieved registrar list, attempting to parse';
5253

53-
my $doc = XML::LibXML->load_html(
54-
'location' => $file,
55-
'suppress_warnings' => 1,
56-
'recover' => 2,
57-
'huge' => 1,
58-
'encoding' => 'UTF-8',
59-
'no_blanks' => 1,
60-
'no_cdata' => 1,
61-
);
54+
my $parser = HTML5::DOM->new;
55+
56+
my $doc = $parser->parse(join('', read_file($file)));
6257

6358
say STDERR 'searching for embedded JSON...';
59+
6460
my $rars;
6561
eval {
66-
my $data = (grep { 'ng-state' eq $_->getAttribute('id') && 'application/json' eq $_->getAttribute('type') } $doc->getElementsByTagName('script'))[0]->childNodes->item(0)->data;
62+
my $data = [grep { 'ng-state' eq $_->attr('id') && 'application/json' eq $_->attr('type') } @{$doc->getElementsByTagName('script')}]->[0]->textContent;
6763
$data =~ s/\&q;/"/g;
6864

6965
my $object = $json->decode(Encode::encode_utf8($data));
7066

71-
$rars = $object->{'accredited-registrars-{"languageTag":"en","siteLanguageTag":"en","slug":"accredited-registrars"}'}->{'data'}->{'accreditedRegistrarsOperations'}->{'registrars'};
67+
$rars = $object->{'accredited-registrars-{"languageTag":"en","siteLanguageTag":"en","slug":"contracted-parties/accredited-registrars/list-of-accredited-registrars"}'}->{'data'}->{'accreditedRegistrarsOperations'}->{'registrars'};
7268
};
7369

7470
die($@) if ($@);

0 commit comments

Comments
 (0)