1 | #!/usr/bin/perl -w
|
2 | #use strict;
|
3 | use WWW::Mechanize;
|
4 | use WWW::Mechanize::FormFiller;
|
5 | use URI::URL;
|
6 | #use Date::Calc qw(Today);
|
7 | use Date::Calc qw(Today Day_of_Week Decode_Month
|
8 | Add_Delta_YMD Date_to_Days);
|
9 |
|
10 | # Titel der einzelnen PDF-Teilausgaben
|
11 | # Achtung es sind nicht an jedem Wochentag alle Teile erhältlich, daher wird weiter unten eine
|
12 | # Schnittmenge zwischen diesem Array und den wirklich erhältlichen Zeitungen gebildet.
|
13 | my @Daten = ("Hauptzeitung", "Lokalteil", "Stellenmarkt", "Immobilien", "Lokalteil 2");
|
14 |
|
15 | my $zeitung;
|
16 | my ($year, $month, $day) = Today();
|
17 | my $file2 = sprintf("_%02d_%02d_%d", $day, $month, $year);
|
18 | my $agent = WWW::Mechanize->new( autocheck => 1 );
|
19 | my $formfiller = WWW::Mechanize::FormFiller->new();
|
20 |
|
21 | $agent->agent('User-Agent=Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.7');
|
22 | $agent->env_proxy();
|
23 |
|
24 |
|
25 | $agent->get('https://login.musterzeitung');
|
26 | $agent->form_number(1) if $agent->forms and scalar @{$agent->forms};
|
27 | $agent->form_number(2);
|
28 | $formfiller->add_filler( 'inputLogin' => Fixed => 'mustermann' );
|
29 | $formfiller->add_filler( 'inputPass' => Fixed => 'mussermannPassword' );
|
30 | $formfiller->fill_form($agent->current_form);
|
31 | $agent->submit();
|
32 | $agent->follow_link('n' => 1);
|
33 | $agent->follow_link('n' => 2);
|
34 | # Debug
|
35 | $agent->save_content('out.html');
|
36 | # End/Debug
|
37 | # Suche den Link mit der Beschriftung 'Download der Zeitung'
|
38 | $agent->follow_link('text_regex' => qr((?^:Download der Zeitung)));
|
39 |
|
40 |
|
41 | # Linkstext abspeichern
|
42 | my @Alpha;
|
43 | @Alpha = $agent->links();
|
44 | my $x = WWW::Mechanize::Link->new();
|
45 | my @List;
|
46 | foreach $x (@Alpha)
|
47 | {
|
48 | push(@List,$x->text());
|
49 | }
|
50 |
|
51 | # Schnittmenge beider Listen finden
|
52 | my ($el, $el2);
|
53 | foreach $el (@List) {
|
54 | foreach $el2 (@Daten) {
|
55 | if (defined $el2 && $el =~ /^\Q$el2/ ) {
|
56 | #print "gefunden\n";
|
57 | push(@final,$el2);
|
58 | undef $el2;
|
59 | last;
|
60 | }
|
61 | }
|
62 | }
|
63 |
|
64 | # Download Zeitung
|
65 | foreach $zeitung(@final)
|
66 | {
|
67 | # Debug
|
68 | $agent->save_content('out.html');
|
69 | # End/Debug
|
70 |
|
71 | # Zeitung suchen
|
72 | $agent->find_link('text_regex' => qr((?^:$zeitung)));
|
73 | if ($agent->success()) {
|
74 | # den Link folgen
|
75 | $agent->follow_link('text_regex' => qr((?^:$zeitung)));
|
76 | # und als PDF speichern
|
77 | $agent->save_content($zeitung.$file2.'.pdf', binmode => ':raw');
|
78 |
|
79 | print "$zeitung geladen\n";
|
80 | print $zeitung.$file2. ".pdf geschrieben\n";
|
81 |
|
82 | # wieder zurück
|
83 | $agent->back();
|
84 | } else {
|
85 | print "$zeitung nicht gefunden";
|
86 | }
|
87 | }
|