скрипт для скачивания публичных данных - PullRequest
1 голос
/ 08 апреля 2019

Я использую приведенный ниже скрипт на Perl для загрузки «Diário Oficial da União» (бразильский публичный документ, который ежедневно собирает и публикует официальные акты федерального правительства). Работает нормально, но я пытаюсь добавить следующие функции:

  1. загрузка периода времени, например, с 01.01.2010 по 31.12.2010
  2. направить файлы в определенную папку

Не могу загрузить за период (например, с 01.01.2016 по 31.12.2016). Я могу загрузить файлы только сегодня или в определенный день. Любое предложение?

$|=1;
use DateTime;
# my $dt=DateTime->now; 
my $dt=DateTime->new(
   year       => 1995,
   month      => 01,
   day        => 02,
);
$ymd=$dt->ymd; 
$dmy=$dt->dmy("/"); 

print "Data: $dmy\n";

use LWP::Simple;
use LWP::Simple::Cookies ( autosave => 1,
    file => "lwp_cookies.dat" ); 

my $jornal;
my @jornais=('1','2','3','515','529','530','531','521','525', '2000');
foreach $jornal (@jornais) {
    print "Jornal: $jornal\n";
    $doc = get("http://pesquisa.in.gov.br/imprensa/jsp/visualiza/index.jsp?jornal=$jornal&pagina=1&data=$dmy");
    if ( $doc=~/&totalArquivos=(\d*)"/ ){
        $paginas=$1;
        print "Paginas: $paginas\n";
        foreach $i ( 1..$paginas) { 
            my $arq="IN-Jornal $jornal - $ymd - pag_$i.pdf";
            print "$arq (existe)\n" if -e $arq; 
            getstore("http://pesquisa.in.gov.br/imprensa/servlet/INPDFViewer?jornal=$jornal&pagina=$i&data=$dmy&captchafield=firstAccess",$arq ) && print "$arq (ok)\n" if !-e $arq;
            if ( $i == 1) {
                    use CAM::PDF; 
                    $bigpdf = CAM::PDF->new("$arq");
            } else {
                    my $anotherpdf = CAM::PDF->new("$arq");   
                    $bigpdf->appendPDF($anotherpdf);  
            }
            sleep 1;
        }
        $bigpdf->cleanoutput("IN-Jornal $jornal - $ymd.pdf"); 
     } else { print "IN-Jornal $jornal não disponível!\n" }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...