Ich führe ein Projekt für einen Kunden und er muss in der Lage, das Inhaltsverzeichnis auf einer bestimmten Seite zu fegen. Ich habe seinen vorhandenen Code geändert, um eine Schleife auszuführen, da jetzt mehrere Seiten vorhanden sind, aus denen Inhalt extrahiert werden kann. Eine der Seiten, die ich versuche zu fegen: https://marriage.ag.gov.au/marriagecelebrants/civilAJAX klicken Sie auf die Schaltfläche mit Perl WWW: Mechanize
Sie können sehen, es gibt 162 Seiten, die auf AJAX läuft, um die nächste Menge Inhalt zu laden. Der vorhandene Code würde auf Eingabenamensattribut klicken basiert:
ctl00 $ $ maincontent gridCelebrants $ ctl00 $ ctl02 $ ctl00 $ ctl04 bisher alle meine Code tut, ist im Wesentlichen die Seite aktualisieren und fegt den gleichen Inhalt 162 mal.
Dies ist ein aktueller Auszug:
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
Meine Frage ist, wenn Sie die nächste klicken, wie kann ich meinen Perl-Skript bekommen, um die nächste Seite zu laden und im nächsten Satz von Daten fegen?