Я выполняю проект для клиента, и он должен иметь возможность подметать оглавление на определенной странице. Я изменил его существующий код, чтобы запустить цикл, поскольку теперь есть несколько страниц для извлечения контента. Одна из страниц, которую я пытаюсь выполнить от: https://marriage.ag.gov.au/marriagecelebrants/civilAJAX нажмите кнопку, используя Perl WWW: Mechanize
Вы можете увидеть 162 страницы, которые, похоже, работают на AJAX для загрузки следующей партии контента. Существующий код щелкнет на основе имени атрибута ввода:
ctl00 $ MainContent $ gridCelebrants $ ctl00 $ ctl02 $ ctl00 $ ctl04 до сих пор все мой код делает существенно обновить страницу и сметает то же самое содержание 162 раз.
Это текущий фрагмент:
use warnings;
use WWW::Mechanize;
use Data::Dumper;
use HTML::TableExtract;
use Spreadsheet::WriteExcel;
#header();
# create max page array to handle civil and other page.
# number indicates how many times to click through
# first item in array is https://marriage.ag.gov.au/marriagecelebrants/civil
# second item is https://marriage.ag.gov.au/marriagecelebrants/other
my @max_page_array = qw(
162
11
);
# create URL array for the 2 pages to scrape
my @url_array = qw(
https://marriage.ag.gov.au/marriagecelebrants/civil
https://marriage.ag.gov.au/marriagecelebrants/other
);
# get size of array
my $url_array_size = scalar @url_array;
# declare vars
my $n = 0;
my $i = 0;
# time to loop through the url's
while($i < $url_array_size){
open (raw, ">output-dev-$i.txt");
close(raw);
$n = 0;
my $mech = WWW::Mechanize->new(autocheck => 1);
$mech->get($url_array[$i]);
open (raw, ">>output-dev-$i.txt");
while($n < $max_page_array[$i]){
my $c = $mech->content;
my $te = HTML::TableExtract->new(br_translate => 1,keep_html => 0);
$te->parse($c);
foreach my $ts ($te->tables) {
foreach my $row ($ts->rows) {
print raw join(',', @$row);
}
}
#this was existing code
#$mech->click("ctl00\$MainContent\$gridCelebrants\$ctl00\$ctl02\$ctl00\$ctl04");
#tried multiple variations based on documentation and got nowhere
$mech->click_button('ctl00$MainContent$gridCelebrants$ctl00$ctl02$ctl00$ctl04');
$n++;
}
close raw;
$i++;
} # while loop - url array size
Мой вопрос, когда вы щелкаете дальше, как я могу получить мой Perl скрипт, чтобы загрузить следующую страницу и подметать следующий набор данных?