XAMPP mit perl fahren :: [perl-special]

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

XAMPP mit perl fahren :: [perl-special]

Postby salsa_experience » 08. September 2006 09:31

hallo,

ich will was mit perl machen. Ich brauche dazu noch einige Module

#!/usr/bin/perl
use strict;
use warnings;

use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;

Ziel ist es einen User-Agent.

Wie soll ich anfangen; Ich habe noch kein Linux hier am laufen. Wie soll ich also starten. Vielleicht mit einem LAMPP? Da gibt es die Live-CD von Timo Wagner. Diese ist aber relativ alt. Von 2004 ist die letzte Version.

Wenn ich diese CD nehme ist dann nicht alles dabei was ich brauche. Wenn ich ein Xampp nehme - kann ich dann die erforderlichen Module noch einbinden!?`Geht das denn!? ICh werde mal beide Moeglichkeiten testen.

bei der XAMPP - Lösung: Wie funktioniert es denn wenn ich noch ein Modul (siehe oben) in den XAMPP einbinden will.


danke fuer infos, ideen und tipps.
greetz
sals
Last edited by salsa_experience on 12. September 2006 13:11, edited 1 time in total.
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 08. September 2006 11:56

Das XAMPP-Perl-Addon installieren, danach in ausführenden Perl scripten die allererste Zeile (SHEBANG) angleichen.
#!c:/apachefriends/xampp/perl/bin/perl.exe

Damit sollte das Script laufen, da die benötigten Module im XAMPP-Perl-Addon vorhanden sind.


Wenn du später mit einem Linux arbeitest ist das Perl im normalfall Installiert nur lautet dann der SHEBANG "#!usr/bin/perl"
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

super seite super service - vielen dank für alles

Postby salsa_experience » 08. September 2006 16:57

moinsen deepsurfer, vielen Dank fuers Posten. Das hoert sich ja alles sehr sehr gut an. Ich sauge das XAMPP gleich mal.

deepsurfer wrote:Das XAMPP-Perl-Addon installieren, danach in ausführenden Perl scripten die allererste Zeile (SHEBANG) angleichen.
#!c:/apachefriends/xampp/perl/bin/perl.exe

Damit sollte das Script laufen, da die benötigten Module im XAMPP-Perl-Addon vorhanden sind.


Wenn du später mit einem Linux arbeitest ist das Perl im normalfall Installiert nur lautet dann der SHEBANG "#!usr/bin/perl"


werde heute nacht klar Schiff machen und alles Installieren und einbinden. Vielen Dank fuer die guten Infos hier.


btw: ist dieses hier auf dieser Seite hier http://www.apachefriends.org/de/xampp-beta.html

eine komplette Version oder ist das hier
[21.08.06 16:13] xampp-win32-perl-addon-5.8.8-2.2.3-beta1.exe (55 MB)
nur das Perl-Addon?! Ich sauge jetzt eben mal die Basis-Version und setze diese auf.


eine Zwischenfrage: ist das Laufwerk c:/ verpflichtend oder kann ich das auch auf E legen. C ist bei mir momentan nicht verfügbar. Bei mir sind leieder leider die Partitionstabellen abgesoffen. Da kann ich jetzt erstmal auf C nix machen. das ist das Malheur das mir passiert ist. Deepsurfer was kannst du da raten!? Ich bin gespannt auf einen Tipp.,



vielen Dank für alles.

greetz Salsa


Superboard super Service - klasse - macht weiter so!![/b]
Last edited by salsa_experience on 08. September 2006 17:08, edited 1 time in total.
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 08. September 2006 17:07

eine komplette Version oder ist das hier
[21.08.06 16:13] xampp-win32-perl-addon-5.8.8-2.2.3-beta1.exe (55 MB)
nur das Perl-Addon?! Ich sauge jetzt eben mal die Basis-Version und setze diese auf.


Sorry, wenn das jetzt komisch klingt, aber der Dateiname verät doch schon alles was das ist.

Aktuell ist XAMPP 1.5.3a mit seinem Aktuellen Perl-Addon.

Du holst dir schon die BETA Version des XAMPP worin auch eine neue PERL Version vorhanden ist die im BETA bereich mit zum testen ist.

Folgich, wenn es bei dir nicht klappt lieber die aktuelle XAMPP Version benutzen.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 08. September 2006 17:26

hallo Deepsurfer,

danke fuer die antwort. Habe mir obenstehendes geaugt - und nach E-entpackt. Dann passierte aber nichts mehr. Und eine EXE habe ich auch nciht - jedenfalls nicht auf Anhieb gefunden.
Da ich vor Jahren mal mit Xampp gearbeitet habe wundere ich mich jetzt etwas. Habe ich etwas falsch gemacht und habe was falsch gesaugt oder sonst falsch gemacht.,


vielen Dank für hilfe. BTW wie steht es mit dem Laufwerk E - ist das erlaubt.


vielen dank
greetz
sals :D
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 08. September 2006 18:01

Back to the root....

Du hast das PERL Addon für die BETA Version des XAMPP 1.5.4beta1-6 gesaugt..


Für den aktuellen XAMPP 1.5.3a diesen Download benutzen.
http://www.apachefriends.org/de/xampp-windows.html#629

Zudem darauf achten welche Installationsfile du herunterlädst, denn es ist abhängig von der XAMPP 1.5.3a Datei.

Also, welche XAMPP Verrsion hast du bei dir Installiert ?
a) Installer [MD5] 32 MB Installer-Version
b) ZIP [MD5] 83 MB Gewöhnliches ZIP-Archiv
c) EXE (7-zip) [MD5] 28 MB Selbstextrahierendes ZIP-Archiv

davon abhängig das Perl-Addon herunterladen.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 08. September 2006 18:28

moin deepsurfer,

vorweg und ganz wichtig; kannst du vielleicht nochmals was zum Laufwerk sagen. ich meine ist es ok dass ich das nach E hin installiere oder wird das c unbdingt verlangt

guten Tag. habe das hier gesaugt

[21.08.06 16:13] xampp-win32-perl-addon-5.8.8-2.2.3-beta1.exe (55 MB)
Das hat sich dann auf meinen befehl hin extracted - aber dann ist nich viel mehr passiert. Also - ich muss wohl nochmals was anderes saugen.
Aktuell bin ich nicht zu hause - sondern in der Stadt unterwegs. ich werde das also später heute Abend dann alles in Angriff nehmen und dann anfangen. Ich werde genauso vorgehen wie du mir das raten tust.

deepsurfer wrote:Back to the root....
Du hast das PERL Addon für die BETA Version des XAMPP 1.5.4beta1-6 gesaugt..
Für den aktuellen XAMPP 1.5.3a diesen Download benutzen.
http://www.apachefriends.org/de/xampp-windows.html#629

Zudem darauf achten welche Installationsfile du herunterlädst, denn es ist abhängig von der XAMPP 1.5.3a Datei.

Also, welche XAMPP Verrsion hast du bei dir Installiert ?
a) Installer [MD5] 32 MB Installer-Version
b) ZIP [MD5] 83 MB Gewöhnliches ZIP-Archiv
c) EXE (7-zip) [MD5] 28 MB Selbstextrahierendes ZIP-Archiv
davon abhängig das Perl-Addon herunterladen.


Alles klar - ich denke dass ich da später schon zurecht komme. Im Grossen und Ganzen habe ich ja nichts gegen eine noch etwas unstable Betaversion, aber ich werde heute NAcht dann so vorgeen dass ich das System auf alle Faelle zum Laufen bekomme. Notfalls einfach unter Verwendung eine sehr sehr stabilen Version.

ich werde das heute Abend nochmals alles durchlesen, gucken welches ich downloaden soll und eine lauffähige Version zusammenstellen. Auf alle alle Faelle gucke ich hier nochmals rein und melde miich nochmals

viele Gruesse sals ;-)
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 08. September 2006 18:57

Ich selber benutze die Installerversion des XAMPPs nicht, von daher weiss ich nicht wie sich die Installerroutine bei der eingabe von "e" verträgt.

Sollte aber gehen.

Falls hürden vorliegen, downloade dir die ZIP Version, denn diese kannst auf verschiedene partitionen entpacken ( z.b. e:\xampp f:\xampp z:\xampp )
Nach dem entpacken aber die "setup-xampp.bat" ausführen, damit die integrierten Scripte die neue Pfadanweisung eingetragen bekommen.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 08. September 2006 20:45

Hallo - hier bin ich wieder.

deepsurfer wrote:Ich selber benutze die Installerversion des XAMPPs nicht, von daher weiss ich nicht wie sich die Installerroutine bei der eingabe von "e" verträgt.

Sollte aber gehen.

Falls hürden vorliegen, downloade dir die ZIP Version, denn diese kannst auf verschiedene partitionen entpacken ( z.b. e:\xampp f:\xampp z:\xampp ) Nach dem entpacken aber die "setup-xampp.bat" ausführen, damit die integrierten Scripte die neue Pfadanweisung eingetragen bekommen.



mach ich - bis spaeter

gruss sals

update:. also ich habe folgendes installiert:


http://prdownloads.sourceforge.net/xamp ... e?download


dann habe ich es in die XAMPP eingebaut: Danach habe ich anhand der Anleitung dann folgendes gemacht;

GERMAN: Einfach das Add-on in das gültige XAMPP-Verzeichnis entpacken. Danach bitte die "setup_xampp.bat" für eine Aktualisierung der Konfiguration starten. Mit der erneuten Betätigung der "setup_xampp.bat" kann das Modul mod_perl aktiviert oder deaktiviert werden.


vgl hier; http://www.apachefriends.org/winxampp/r ... n-perl.txt

also ich habe das mit mod_perl aktiviert. Dann habe ich

URL = http://localhost/perl/
URL [perl-asp] = http://localhost/asp/
Konfigurationsdatei = .\xampp\apache\conf\etxtra\perl.conf
PerlHome= .\xampp\perl

zumindest hier habe ich nix - da passiert garnix - \xampp\perl

was kann denn das sein. Hmmm ich habe keine Ahnung. BTW: die ganzen installations und Aktivierungsprozedere hat keine Fehler rausgeworfen. Meine Frage ist jetzt: Wie geht es weiter mit Perl?


hat jemand tipps.

vielen dank

greetz
sals
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 11. September 2006 10:17

Im cgi-bin Verzeichnis liegen TESTscripte.

Aufruf durch http://localhost/cgi-bin/perltest.cgi

Wenn hierbei ein Ausgabe erscheint, dann funktioniert PERL.

Deine eigenen Scripte kannst du entweder in dieses CGI-BIN Verzeichnis legen und mittels http://localhost/cgi-bin/scriptname.cgi(pl) aufrufen.

ODER

Da XAMPP so eingestellt ist das die Perlanweisungen auch innerhalbt des gesammten /htdocs Funktionieren, kannst du auch deine Scripte
in ein unterverzeichnis des /htdocs legen.
http://loclahost/verzeichnisname/scriptname.cgi(pl)


Immer voraussgesetzt das bei allen ausführbaren PERL-Scripten der SHEBANG " #!/xampp/perl/bin/perl.exe " lautet.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

vielen dank - jetzt geht es weiter

Postby salsa_experience » 11. September 2006 12:39

hi Deepsurver,

vielen dank fuers Beantworten. ich war das ganze Wocheneden auf dem Schlauch gestanden. Unglaublich auf dem Schlauch!! Also jetzt gehts weiter. Und wie ;-) Du hast mir sehr sehr geholfen. Ich habe jetzt nämlich mit deiner Hilfe ein Problem geloest und auf den richtigen localhost geguckt - bzw das richtige aufgerufen.


Im cgi-bin Verzeichnis liegen TESTscripte.
Aufruf durch http://localhost/cgi-bin/perltest.cgi
Wenn hierbei ein Ausgabe erscheint, dann funktioniert PERL.


Juhhhhhu das folgende wird angezeigt, wenn ich das so wie du sagst aufrufe:

GCI with MiniPerl
CGI with MiniPerl is ready ...



Deine eigenen Scripte kannst du entweder in dieses CGI-BIN
Verzeichnis legen und mittels http://localhost/cgi-bin/scriptname.cgi(pl) aufrufen.


ich werde das mal probieren.

ODER : Da XAMPP so eingestellt ist das die Perlanweisungen auch innerhalbt
des gesammten /htdocs Funktionieren, kannst du auch deine Scripte
in ein unterverzeichnis des /htdocs legen.
http://loclahost/verzeichnisname/scriptname.cgi(pl)
Immer voraussgesetzt das bei allen ausführbaren PERL-Scripten der SHEBANG " #!/xampp/perl/bin/perl.exe " lautet.



das teste ich mal. also wenn ich das Perl script testen will....



Code: Select all

#!/usr/bin/perl
use strict;
use warnings;

use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;

use Data::Dumper; # for show and troubleshooting

my $url = "http://www.myforum.com/forums/viewforum.php?f=17";
my $ua = LWP::RobotUA->new;
my $lp = HTML::LinkExtor->new(\&wanted_links);

my @links;
get_threads($url);

foreach my $page (@links) { # this loops over each link collected from the index
   my $r = $ua->get($page);
   if ($r->is_success) {
      my $stream = HTML::TokeParser->new(\$r->content) or die "Parse error in $page: $!";
      # just printing what was collected
      print Dumper get_thread($stream);
      # would instead have database insert statement at this point
    } else {
      warn $r->status_line;
    }
}

sub get_thread {
   my $p = shift;
   my ($title, $name, @thread);
   while (my $tag = $p->get_tag('a','span')) {
      if (exists $tag->[1]{'class'}) {
         if ($tag->[0] eq 'span') {
            if ($tag->[1]{'class'} eq 'name') {
               $name = $p->get_trimmed_text('/span');
            } elsif ($tag->[1]{'class'} eq 'postbody') {
               my $post = $p->get_trimmed_text('/span');
               push @thread, {'name'=>$name, 'post'=>$post};
            }
         } else {
            if ($tag->[1]{'class'} eq 'maintitle') {
               $title = $p->get_trimmed_text('/a');
            }
         }
      }
   }
   return {'title'=>$title, 'thread'=>\@thread};
}

sub get_threads {
   my $page = shift;
   my $r = $ua->request(HTTP::Request->new(GET => $url), sub {$lp->parse($_[0])});
   # Expand URLs to absolute ones
   my $base = $r->base;
   return [map { $_ = url($_, $base)->abs; } @links];
}

sub wanted_links {
   my($tag, %attr) = @_;
   return unless exists $attr{'href'};
   return if $attr{'href'} !~ /^viewtopic\.php\?t=/;
   push @links, values %attr;
}



hmm - das werde ich dann mal in dem Verzeichnis abspeichern. Ich werde dem Script einen Namen geben, einfach irgend einen und dann werde ich es abspeichern und dann aufrufen....

Deepsurfer, dazu muss ich die Shell starten oder?!



gruss
sals :D

btw; muss ich die Shell starten - und ich glaube ja : ich muss sie starten - vielleicht hier; http://localhost/cgi-bin/perltest.cgi ??
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 11. September 2006 13:06

Deepsurfer, dazu muss ich die Shell starten oder?!



gruss
sals Very Happy

btw; muss ich die Shell starten - und ich glaube ja : ich muss sie starten - vielleicht hier; http://localhost/cgi-bin/perltest.cgi ??


Zuerst in dem CODE den du gepostet hast die SHEBANG ändern.
Dazu muss das Perl-Addon Installiert sein, da in dem Script drei Module aufgerufen werden.

Ein SHELL brauchst du nicht öffnen, denn das Script wird über en Browser aufgerufen. http://localhost/cgi-bn/scriptname.cgi

Da XAMPP so eingestellt ist das du auch die Script innerhalb deines /htdocs Pfades einsetzen kannst, so kannst du auch ein Pfad im htdocs erstellen und das Script dorthinein legen.

z.b. /htdocs/meintest <<-- darin das script ablegen
Aufruf lautet dann http://localhost/meintest/scriptname.cgi

Diese Funtkion geht nur solange du keine VHOST geschichte bei dir einbaust, aber das ist ein anderes Thema.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

die änderungen

Postby salsa_experience » 11. September 2006 15:04

hallo Deepsurfer,


vielen dank fuers Posten. Super board hier - ich bin echt total begeistert.
Am Wochenende war zwar etwas wenig los aber dafuer gehts heute wieder los - mannomann. In der Zwischenzeit kommt man ja kaum zum Kaffeetrinken... Also los gehts.... ;-)

deepsurfer wrote:
Zuerst in dem CODE den du gepostet hast die SHEBANG ändern.
Dazu muss das Perl-Addon Installiert sein, da in dem Script drei Module aufgerufen werden. Ein SHELL brauchst du nicht öffnen, denn das Script wird über en Browser aufgerufen. http://localhost/cgi-bn/scriptname.cgi
Da XAMPP so eingestellt ist, das du auch die Script innerhalb deines /htdocs Pfades einsetzen kannst, so kannst du auch ein Pfad im htdocs erstellen und das Script dorthinein legen.

z.b. /htdocs/meintest <<-- darin das script ablegen
Aufruf lautet dann http://localhost/meintest/scriptname.cgi

Diese Funtkion geht nur solange du keine VHOST geschichte bei dir einbaust, aber das ist ein anderes Thema.


Alles klar - also Vhost werd ich erstmal nicht einrichten; Davon lasse ich erstmal die Finger. Ich will nur das oben genannte Script ausfuehren. Die Module habe ich ja in der letzten Woche am Freitag eingebaut bzw. installiert, so wie du mich angeleitet hast.
Was du schreibst ist Klasse - ich kann also mein Script abspeichern und dann eben einfach ueber den Browser aufrufen. Das ist ja super! http://localhost/cgi-bn/scriptname.cgi

Ahaaa: ich wiederhole [als Verstehenshilfe sozusagen]
Das geht also deswegen, weil ich das Script auch innerhalb deines /htdocs Pfades einsetzen kann, so dass ich auch ein Pfad im htdocs erstellen und das Script dorthinein legen kann.

Ich gebe also dem Script den Namen contentparser.cgi und lege es in einen Ordner ...., sagen wir meintest

z.b. /htdocs/meintest <<-- darin das script ablegen
Aufruf lautet dann http://localhost/meintest/contentparser.cgi


ich werde das also heute Nacht machen..

bis später
gruss
sals :D


btw; zum Shebang nochmals:

Zuerst in dem CODE den du gepostet hast die SHEBANG ändern.


also ich muss in der alleresten Zeile das Shebang ändern.

#!/usr/bin/perl

use strict;use warnings;
use LWP::Simple
use HTML::TokeParser;
use URI::URL;


Also deepsurfer. Hier kommt es doch darauf an, oder: Da muss ich doch noch was einstellen - oder - ich muss da doch was einstellen - und dann das entsprechend abpseichern, oder!? Ich muss den Shebang oben in der allerersten Zeile genau anpassen wenn ich das richtig verstehe..?!

das hier -> #!/usr/bin/perl <- das muss angepasst werden, je nachdem wo ich das Script hinlege, oder! Es ist mit dem Shebang so dass ich eben den Pfad anpassen muss - den Pfad zum Interpreter.
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 11. September 2006 16:02

das hier -> #!/usr/bin/perl <- das muss angepasst werden, je nachdem wo ich das Script hinlege, oder! Es ist mit dem Shebang so dass ich eben den Pfad anpassen muss - den Pfad zum Interpreter.

Pfad zum Interpreter !


--------

Habe mir grad mal das Script auf einen Win-XAMPP 1.5.3a mit Perl-Addon
eingebaut.
Es scheint so nicht zu laufen, da eine Adresse eingetragen ist die so nicht funktionieren kann. (http://www.myforum.com/forums/viewforum.php?f=17)

Desweiteren motzt der der PERL-Parser über Zeile 15
"my $ua = LWP::RobotUA->new;"
Das Modul ist aber aktive sonst hätte er schon bei Zeile 7 gemeckert, folglich wird hier etwas Definiert was in einem Direkten zusammenhang zu irgendwas steht.
Ich bin aber ehrlich gesagt jetzt zu faul das Script weiter durch zu arbeiten, da es scheinbar aus irgendeiner Anwendung stammt die du Benutzen willst.

Daher die frage: Woher hast du dieses Script ?
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 11. September 2006 17:16

Hallo Deepsurfer,

danke fürs Posten. Das Script sollte laufen - natürlich brauchen wier eine andere Adresse - die wir eintragen muessten als Forum... ich mach das mal per demo unten...bzw in der pm die ich dir zugeschickt habe. Das ganze ist ein Tool das ich mir mühsamst zusammenbaue - und für meine Abschlussarbeit einsetzen muss.

deepsurfer wrote:
das hier -> #!/usr/bin/perl <- das muss angepasst werden, je nachdem wo ich das Script hinlege, oder! Es ist mit dem Shebang so dass ich eben den Pfad anpassen muss - den Pfad zum Interpreter.


Pfad zum Interpreter !

Habe mir grad mal das Script auf einen Win-XAMPP 1.5.3a mit Perl-Addon
eingebaut. Es scheint so nicht zu laufen, da eine Adresse eingetragen ist die so nicht funktionieren kann. http://www.myforum.com/forums/viewforum.php?f=17)

Desweiteren motzt der der PERL-Parser über Zeile 15
"my $ua = LWP::RobotUA->new;"
Das Modul ist aber aktive sonst hätte er schon bei Zeile 7 gemeckert, folglich wird hier etwas Definiert was in einem Direkten zusammenhang zu irgendwas steht. Ich bin aber ehrlich gesagt jetzt zu faul das Script weiter durch zu arbeiten, da es scheinbar aus irgendeiner Anwendung stammt die du Benutzen willst. Daher die frage: Woher hast du dieses Script ?


Wenn wir das hier http://www.myforum.com/forums/viewforum.php?f=17
ändern - und ein phpBB einsetzen dann muesste es laufen.
Das Script heisst richtigerweise wie folgt musste auch laufen - etwas holprig zwar aber immerhin;
Background: Ich brauche fuer meine Diss noch einen Content- Werte und Daten für eine Auswertung; Und hierzu brauche ich valide daten aus einem eng. Diskussionsforum. Dazu habe ich mir eine proggieforum ausgesucht - - englisch - und mit einem PHPBB als DATENBASIS - (skin ist standardskin) Der Ganze Datensupport funktioniert halbwegs - nur muss ich es lokal noch in eine DB bringen _ etwa mit perl::dbi...

Der insert ist zu machen unten der besagten Stelle.... STATT DATA DUMPER sollte deann alles in die db rein.... .. Mehr erklaeren zum Ganzen verfahren kann ich auch...
Apropos: Wenn es dich interessiert, also ich meine eben jetzt : warum ich ueberhaupt Daten auswerte - (linguistisch, etc) und warum ich ca 700 bis 1000 Threads brauche und warum ich sie so besorgen will etc., also via perlscript auslesen und nicht ganz normal über den Browser lesen will kann ich auch erklären... Kein Problem hier.;

Code: Select all
#!/usr/bin/perl
use strict;
use warnings;

use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;

use Data::Dumper; # for show and troubleshooting

my $url = "http://www.hier muss ein phpBB rein /forums/viewforum.php?f=17";
my $ua = LWP::RobotUA->new;
my $lp = HTML::LinkExtor->new(\&wanted_links);

my @links;
get_threads($url);

foreach my $page (@links) { # this loops over each link collected from the index
   my $r = $ua->get($page);
   if ($r->is_success) {
      my $stream = HTML::TokeParser->new(\$r->content) or die "Parse error in $page: $!";
      # just printing what was collected
      print Dumper get_thread($stream);
      # would instead have database insert statement at this point
    } else {
      warn $r->status_line;
    }
}

sub get_thread {
   my $p = shift;
   my ($title, $name, @thread);
   while (my $tag = $p->get_tag('a','span')) {
      if (exists $tag->[1]{'class'}) {
         if ($tag->[0] eq 'span') {
            if ($tag->[1]{'class'} eq 'name') {
               $name = $p->get_trimmed_text('/span');
            } elsif ($tag->[1]{'class'} eq 'postbody') {
               my $post = $p->get_trimmed_text('/span');
               push @thread, {'name'=>$name, 'post'=>$post};
            }
         } else {
            if ($tag->[1]{'class'} eq 'maintitle') {
               $title = $p->get_trimmed_text('/a');
            }
         }
      }
   }
   return {'title'=>$title, 'thread'=>\@thread};
}

sub get_threads {
   my $page = shift;
   my $r = $ua->request(HTTP::Request->new(GET => $url), sub {$lp->parse($_[0])});
   # Expand URLs to absolute ones
   my $base = $r->base;
   return [map { $_ = url($_, $base)->abs; } @links];
}

sub wanted_links {
   my($tag, %attr) = @_;
   return unless exists $attr{'href'};
   return if $attr{'href'} !~ /^viewtopic\.php\?t=/;
   push @links, values %attr;
}


mit dem neuen Eintrag oben - beim Forum haben wir einen Content parser.
Die Ausgabe musste wie folgt dann so sein....


Code: Select all

$VAR1 = {
          'thread' => [
                        {
                          'post' => 'Hello, I\'m pretty new to PHPNuke. I\'ve got my site up and running great! I\'m now starting to make modifications, add modules etc. I\'m using the most recent RavenPHP76. I want to display the 5 most recent forum posts at the top of the forum page. I\'m not sure if this functionality is built in, if so, how to activate. Or if there is a module or block made to do this. I looked at Raven\'s Collapsing Forum block but wasn\'t crazy about the format, and I don\'t want it to be collapsable. Thanks! mopho',
                          'name' => 'mopho'
                        },
                        {
                          'post' => 'hi there',
                          'name' => 'sail'
                        },
                        {
                          'post' => 'thanks for asking this; :not very sure if i got you right; Do you want to have a feed of the last forumthreads? guess the easiest way is to go to raven and ask how he did it. hth sail.',
                          'name' => 'sail'
                        },
                        {
                          'post' => 'Thanks. i found what I was looking for. It wasn\'t so easy to find! It\'s called glance_mod. mopho',
                          'name' => 'mopho'
                        },
                        {
                          'post' => 'hi there thx',
                          'name' => 'sail'
                        },
                        {
                          'post' => 'it sound interesting - i will have also a look i google after it - and try to find out more regards sailor',
                          'name' => 'sail'
                        }
                      ],
          'title' => 'Recent Forum Posts Module'
        };


ich würde das ganze noch einbauen - etwa als subroutine - oben drüber mueste also stehen....


Code: Select all

my $ua = LWP::RobotUA->new;
my $lp = HTML::LinkExtor->new(\&wanted_links);

my @links;

foreach my $forum_id (17, 3) {
    my $url = "http://www. hier muss ein phpBB Rein com/forums/viewforum.php?f=$forum
+_id";
    @links = ();  # yuck!
    my $links = get_threads($url);
    foreach my $page (@$links) {
        ...
    }
}



Deepsurfer ich habe dir eine gute - und gängige demo mal per pm zugepostet. Die sollte dann allerdings wirkich laufen - v. a. mit der angegebenen URL.
Was meinst du dazu.

Mal allgemein gesprochen: Es ist ein Content Paerser - und wenn man den einsetzt koenntem man content auch aus anderen Boards parsen... (vorrausgesetzt der Server lässt den Visit eines robots zu.)

gruss sals
:D

BTW - also es ist auf meiner Seite nur Interesse an engl. Content. Aber testen kann man das Script auch mal an dt. Boards . Z.B. auch an diesem hier....
Und nochmals; Meine Absicht ist natürlich nicht, Cotent zu grabben und den dann irgendwie wieder online zu stellen. Nein - meine Absicht ist es das LESEN und die Superschwachen Retrievalfunktioen des Browsers eben zu umgehen in dem ich mit dem Perl Script maschinell lese und dann lokal in einer DB dann das ganze besser auswerten kann - mit ner guten Statistik und eben mit einem lokal arbeitenden Verfahren.... Würde mich freuen wieder von dir zu hoeren.

greetz sals
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Next

Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 19 guests