[英]AJAX click on button using Perl WWW:Mechanize
我正在为一个客户执行一个项目,他需要能够扫描特定页面上的目录。 我已经修改了他的现有代码以运行循环,因为现在有多个页面可以从中提取内容。 我要从中扫过的页面之一: https : //marriage.ag.gov.au/marriagecelebrants/civil
您可以看到有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脚本来加载下一页并清除下一组数据?
我的问题是,当您单击下一步时,如何获取我的perl脚本来加载下一页并清除下一组数据?
根据FAQ , WWW :: Mechanize不支持JavaScript。 它提供了替代方法的列表,另请参见WWW :: Mechanize :: PhantomJS 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.