我有兴趣编写一个转到以下链接并提取数字 1975 的 perl 脚本:https ://familysearch.org/search/collection/results#count=20&query=%2Bevent_place_level_1%3ACalifornia%20%2Bevent_place_level_2%3A%22San %20迭戈%22%20%2Bbirth_year%3A1923-1923~%20%2Bgender%3AM%20%2Brace%3AWhite&collection_id=2000219
该网站是 1923 年出生的白人男性的数量,他们于 1940 年居住在加利福尼亚州圣地亚哥县。我试图在循环结构中做到这一点,以概括多个县和出生年份。
在文件 locations.txt 中,我放置了县列表,例如圣地亚哥县。
当前代码运行,但不是#1975,而是显示未知。数字 1975 应该在 $val\n 中。
我将非常感谢任何帮助!
#!/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";
}
}
更新:API 不是一个可行的解决方案。我一直在与网站开发人员联系。API 不适用于网页的该部分。因此,任何与 JSON 有关的解决方案都将不适用。