Advertisement
Guest User

zukunfts_stats_threaded.pl

a guest
Mar 4th, 2012
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.42 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2. # Name: zukunfts_stats_threaded.pl
  3. # gepostet hier:
  4. # Funktion: Abstimmungsergebnisse auf http://dialog-ueber-deutschland.de sammeln
  5. # dieses Skript fragt die Statistiken über die Abstimmungsergebnisse auf http://dialog-ueber-deutschland.de ab
  6. # und schreibt diese Daten in ein Logfile mit der .txt-Erweiterung
  7. #
  8. # Hinweise des Autors:
  9. # das Skript alle 5 minuten für jedes der 3 themen einen thread ... welcher wiederrum alle vorschläge mit mehr als 20.000 votes in ein logfile schreibt.
  10. # das sub-directory "logs" muss existieren
  11. use strict;
  12. use warnings;
  13. use threads;
  14. use threads::shared;
  15.  
  16. my @urls=(
  17.  'https://www.dialog-ueber-deutschland.de/DE/20-Vorschlaege/10-Wie-Leben/vorschlag_einstieg_node.html?cms_gts=500186_Dokumente%253Dvotes#Inhalt',
  18.  'https://www.dialog-ueber-deutschland.de/DE/20-Vorschlaege/20-Wovon-Leben/vorschlag_einstieg_node.html?cms_gts=500216_Dokumente%253Dvotes#Inhalt',
  19.  'https://www.dialog-ueber-deutschland.de/DE/20-Vorschlaege/30-Wie-Lernen/vorschlag_einstieg_node.html?cms_gts=500218_Dokumente%253Dvotes#Inhalt',
  20. );
  21.  
  22. while(1){
  23.  print 'running at ' . scalar(localtime(time())) . ' ...' . "\n";
  24.  foreach my $url (@urls){
  25.     print 'url ' . $url . ' ...' . "\n";
  26.   my $thr = threads->create('doshit',($url));
  27.  }
  28.  # wait/check returnvalues
  29.  sleep 30;
  30.  foreach(threads->list(threads::joinable)){
  31.   print '[MAIN] thread#' . $_->tid . '] returned "' . $_->join() . '".' . "\n"; # returncode
  32.  }
  33.  sleep 270;
  34. }
  35.  
  36. sub doshit() {
  37.  my($url)=@_;
  38.  use LWP::UserAgent;
  39.  my $ua = LWP::UserAgent->new;
  40.  $ua->agent("Mozilla/8.0");
  41.  
  42.  my $req = HTTP::Request->new(GET => $url);
  43.  $req->header('Accept' => 'text/html');
  44.  
  45.  my $res = $ua->request($req);
  46.  next if !$res->is_success;
  47.  my $doc=$res->content;
  48.  print length($doc) . "\n";
  49.  my $time=time();
  50.  $doc =~ s/[\n\r]*//gi;
  51.  while($doc=~/<div class="vote-box">(.+?)<li class="comments">/gi){
  52.   my $v=$1;
  53.   if($v=~ /<span class="vorschlag-(\d+)">/){
  54.    my $id=$1;
  55.    if($v=~ /<span class="number">(\d+)<\/span>/){
  56.     my $count=$1;
  57.     if($count>10000){
  58.      open(OUT,'>>./logs/zukunft_' . $id . '.txt') or die $! . "\n";
  59.      print OUT 'TIME:' . $time . '/ID:' . $id . '/COUNT:' . $count . "\t\t" . scalar(localtime($time)) . "\n";
  60.      close(OUT) or warn $! . "\n";
  61.     }
  62.    }
  63.   }  
  64.  }
  65.  return 1;
  66. }
  67.  
  68.  
  69.  
  70.  
  71. #  <div class="vote-box">
  72. #      <span class="vorschlag-3569">#
  73. #
  74. #        <span class="number">35782</span>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement