używając Perla do zeskrobania strony
Jestem zainteresowany napisaniem skryptu perla, który przechodzi do następującego linku i wyodrębnia numer 1975:https://familysearch.org/search/collection/results#count=20&query=%2Bevent_place_level_1%3ACalifornia%20%2Bevent_place_level_2%3A%22San%20Diego%22%20%2Bbirth_year%3A1923-1923~%20%2Bgender%3AM% 20% 2Brace% 3AWhite i id_kolekcji = 2000219
Ta strona internetowa to liczba białych mężczyzn urodzonych w 1923 r., Którzy mieszkają w hrabstwie San Diego w Kalifornii w 1940 r. Próbuję to zrobić w pętli, aby uogólnić na wiele okręgów i lata urodzenia.
W pliku location.txt umieściłem listę powiatów, takich jak Hrabstwo San Diego.
Bieżący kod działa, ale zamiast # 1975 wyświetla nieznany. Liczba 1975 powinna być w $ val.
Byłbym bardzo wdzięczny za każdą pomoc!
#!/usr/bin/perl
use strict;
use LWP::Simple;
open(L, "locations26.txt");
my $url = 'https://familysearch.org/search/collection/results#count=20&query=%2Bevent_place_level_1%3A%22California%22%20%2Bevent_place_level_2%3A%22%LOCATION%%22%20%2Bbirth_year%3A%YEAR%-%YEAR%~%20%2Bgender%3AM%20%2Brace%3AWhite&collection_id=2000219';
open(O, ">out26.txt");
my $oldh = select(O);
$| = 1;
select($oldh);
while (my $location = <L>) {
chomp($location);
$location =~ s/ /+/g;
foreach my $year (1923..1923) {
my $u = $url;
$u =~ s/%LOCATION%/$location/;
$u =~ s/%YEAR%/$year/;
#print "$u\n";
my $content = get($u);
my $val = 'unknown';
if ($content =~ / of .strong.([0-9,]+)..strong. /) {
$val = $1;
}
$val =~ s/,//g;
$location =~ s/\+/ /g;
print "'$location',$year,$val\n";
print O "'$location',$year,$val\n";
}
}
Aktualizacja: API nie jest realnym rozwiązaniem. Kontaktowałem się z twórcą strony. Interfejs API nie dotyczy tej części strony internetowej. Dlatego żadne rozwiązanie dotyczące JSON nie będzie miało zastosowania.