XAMPP mit perl fahren :: [perl-special]

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

Postby salsa_experience » 12. September 2006 15:30

hallo Deepsurfer

Update xy [Mittw. 11:53 Uhr wegend Fehlermeldung Premature etc]

wegen der Fehlermeldung -premature etc habe ich mal folgende Seite durchstudiert

http://wiki.perl-community.de/bin/view/ ... erError500

habe dann das script umbebaut

folgende Zeile ist neu drinne: use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

Meine frage; habe ich sie an die richtige Stelle gebaut?

#!e:/Server/xampp/perl/bin/perl.exe
use strict;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use warnings;
use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;


nach dem Aufruf des Scripts im xampp kommt folgende meldung im Browser:

Software error:
LWP::RobotUA agent required at E:/Server/xampp/htdocs/miner/parser.cgi line 13


was - ich habe aber den useragent den RobotUA im PAket drinne. Stimmt vielle am Script was nicht.

gruss
sals [ ende des updates vom Mittw. 1153]




Update xy [Die 21:33 Uhr und völllige Entwarnug]

also nochmaliges Testen hat ergeben, dass alles ok ist; die test-scripte haben ausschliesslich gute Ergebnisse ergeben, einschnliesslich des TEST-Scriptes das ich heute noch downgeloadet habe.

Das die umfangreichen Syteminformationen ausgeben hat: via

http://localhost/cgi-bin/sysinfoxampp.cgi

Darüber hinaus haben die Scripte die in folgendem Verzeichnis drinne sind;

hier nämlich; E:\Server\xampp\cgi-bin
cgi.cgi
perltest.cgi
drivers.pl
printersv.pl
durchweg gute Ergebisse ergeben:

1. http://localhost/cgi-bin/cgi.cgi -> OK
2. http://localhost/cgi-bin/perltest.cgi
-> GCI with MiniPerl
CGI with MiniPerl is ready ...

3. http://localhost/cgi-bin/printenv.pl

Code: Select all
AUTHDIGESTENABLEQUERYSTRINGHACK="On"
COMSPEC="I:\windows\system32\cmd.exe"
DOCUMENT_ROOT="E:/Server/xampp/htdocs"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"
HTTP_ACCEPT_ENCODING="gzip, deflate"
HTTP_ACCEPT_LANGUAGE="de"
HTTP_CONNECTION="Keep-Alive"
HTTP_HOST="localhost"
HTTP_USER_AGENT="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
PATH="I:\windows\system32;I:\windows;I:\windows\System32\Wbem;"
PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH"
QUERY_STRING=""
REMOTE_ADDR="127.0.0.1"
REMOTE_PORT="1428"
REQUEST_METHOD="GET"
REQUEST_URI="/cgi-bin/printenv.pl"
SCRIPT_FILENAME="E:/Server/xampp/cgi-bin/printenv.pl"
SCRIPT_NAME="/cgi-bin/printenv.pl"
SERVER_ADDR="127.0.0.1"
SERVER_ADMIN="admin@localhost"
SERVER_NAME="localhost"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE="<address>Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4 Server at localhost Port 80</address>\n"
SERVER_SOFTWARE="Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4"
SYSTEMROOT="I:\windows"
WINDIR="I:\windows"



Deepsurfer ich kann also darangehen und nochmals testen was mit einem Script nicht richtig läuft. Der Xampp jedenfalls ist richtig am Laufen.. soweit ich das hier sehe. Ich werde heute Nacht noch etwas rumbasteln und gucken was ich noch rausfinde.

cherio
sals ;-)
[Ende des Updates vom Die, 21:35 Uhr]







Update xy [Die 15:32 Uhr]:

ich glaube dass du das noch nicht gelsen hast. Da haben sich vielleciht ein paar postings ueberkreuzt. Vielleicht jedenfalls. Hier also ein update, verfasst um 15:32 Uhr:

..... hallo Deepsurfer.,

update 15:32 Uhr: das Neueste - nach dem Durchlesen deines ganzen Tesxtes habe ich nochmal geguckt und festgestellt dass deine Ferndiagnose richtitg ist. Ich habe das sysinfoscript falsch abgelegt - es war nicht in dem CGI-Bin ordner drinne sondern - in dem ordner wo mein Testscritp auch ist. Also - nach der Korrektur - kann ich es auch aufrunfen. http://localhost/cgi-bin/sysinfoxampp.cgi - damit kann ich es aufrufen.
Es gibt eine sehr sehr grosse Info aus.

Perl: E:\Server\xampp\perl\bin\perl.exe
Perl-Version: 5.008007
Betriebssystem: MSWin32
Perl befindet sich in:
Sendmail:
Verzeichnisse, die nach Perl durchsucht wurden E:/Server/xampp/perl/lib
E:/Server/xampp/perl/site/lib


und so weiter und so fort. Insgesamt über einen ganzen Meter Textinfos.

Deepsurfer; ich guck später wieder rein.

es ist jetzt 15:32 Uhr und ich muss jetzt aus dem Haus, Auf alle Faelle ist jetzt mal sicher, dass ich perl gut am Laufen habe - oder was meinst du denn!!?!


Du schreibst;
deepsurfer wrote:Sorry, aber irgendwie zweifel ich jetzt etwas an dir (nicht böse gemeint, soll nur grad meinen Gedanken verdeutlichen)
DENN
wenn ich schon Pfad angaben mache, so wäre es doch allein der Neugierde wegen angesagt zu schauen ob meine Aussage zutrifft.
Folglich, schaue mit deinem Dateibrowser in dieses erwähnte Verzeichnis,
bei dir also e:\Server\xampp\cgi-bin
Dort sollten die erwähnten Scripte liegen, wenn nicht, dann hast du etwas gelöscht !

Meine Aufürung zu diesem LINK
http://localhost/cgi-bin/scriptname.xxx
sollte eigentlich selbsterklärend sein und wenn man nur etwas hinschaut ist dies ein einfache Beispielerklärung, deren Inhalt sich aus dem Text ergibt.

In diesem Sinne.... (hab jetzt ein meeting)...vielleicht bis später


neues Update: 17:55 Uhr: Also Deepsurfer. ich bin momentan [jetzt ist es 17:55 Uhr] noch unterwegs und nicht am heimischen Rechner. Ich schaue am späteren Abend und dann morgen wieder rein. Ich bin auf jeden Fall der Überzeugung dass ich auf dem richtigen Wege bin. Da ist kein Zweifel mehr denn mit dem Sysinfo-Script konnte ich ja schon gut weiterkommen. Warum das andere jetzt noch nicht so läuft wie es soll ist dann noch eine andere Frage.

die kriegen wir aber sicher noch raus.

viele Gruesse und noch einen schoenen Dienstagabend
sals ;-)

ps bis spaeter -oder morgen
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby Wiedmann » 13. September 2006 13:51

salsa_experience wrote:hallo Xampp-Leute,


Also ich bekam immer wieder Fehlermeldungen: bezüglich Perl. Wegen der Fehlermeldung -premature etc habe ich mal folgende Seite durchstudiert

http://wiki.perl-community.de/bin/view/Wissensbasis/FaqCGIServerError500

habe dann das script umbebaut

folgende Zeile ist neu drinne: use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

Meine Frage; habe ich sie an die richtige Stelle gebaut?

#!e:/Server/xampp/perl/bin/perl.exe
use strict;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use warnings;
use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;


Nach dem Aufruf des Scripts im xampp kommt folgende meldung

Software error:
LWP::RobotUA agent required at E:/Server/xampp/htdocs/miner/parser.cgi line 13


Also - obwohl ich die Systeminfos mir mal angesehen habe, die haben mir bestätigt dass das auf dem Server ist. Ich habe alle Module drauf, dachte ich; Aber warum kriege ich die Meldung, dass der UserAgent Robot nicht richtig intalliert ist. Ich verstehe das nicht wirklich.

Also was soll jetz noch sein. Ich habe auf der Dos-Shell nochmals geguckt, was ich noch machen kann!!?

Also; ich werde mir nun noch was anderes uebverlegen muessen. Ich muss jetzt schritt für Schritt vorgehen.


Wer hat einen Tipp.
gruss Sals, ;-)

Nachsatz: Hmm - wenn jemand das Script testen koennte waere es super. Dann wüssten wir wenigstens ob das Script richtit ist - und dann kann ich mir den xampp nochmals vornehmen. hmmm - ich kann ja auch hier auf dem Server nochmals nach den Perl-Installationen hier gucken..
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby deepsurfer » 13. September 2006 14:49

LWP::RobotUA agent required at E:/Server/xampp/htdocs/miner/parser.cgi line 13


Diese Meldung erhalte ich auch...
Zeile: my $ua = LWP::RobotUA->new;

Beim einkommentieren motzen verständlicherweise die andere $ua Definitionen..also Kommentierung wieder herausgenommen.

google --> LWP::RobotUA->new; = viele Hinweise wie dieses
Modul zu nutzen wäre, und wie ich das jetzt überschaue fehlen weitere Angaben in der "LWP::RobotUA->new;" Anweisung.
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

wege zur Lösung - zwei oder drei!

Postby salsa_experience » 13. September 2006 15:25

hallo Deepsurfer,

danke fuers posten. Hmmm. ich habe auch schon gemerkt dass das auskommentieren von nur einer Zeile des UA schon problematisch ist/wird. Da hängt dann doch zuviel dran.

Insgesamt ist es ja sehr interessant dass du denselben Fehller kriegst.
Was mich hier natürlich brennend interessiert ist die Frage; Hast du denn den USERAGENT robot drinne oder nicht!?

Meiner Meinung nach wäre der Weg eben - das Script teileweise zu testen. Insgesamt finde ich es ja auch sehr sehr merkwuerdig dass der UA nicht erkannt wird.


deepsurfer wrote:
LWP::RobotUA agent required at E:/Server/xampp/htdocs/miner/parser.cgi line 13


Diese Meldung erhalte ich auch...
Zeile: my $ua = LWP::RobotUA->new;

Beim einkommentieren motzen verständlicherweise die andere $ua Definitionen..also Kommentierung wieder herausgenommen.

google --> LWP::RobotUA->new; = viele Hinweise wie dieses
Modul zu nutzen wäre, und wie ich das jetzt überschaue fehlen weitere Angaben in der "LWP::RobotUA->new;" Anweisung.


BTW: kann man mit $ua true rauskriegen ob es richtig und sauber installiert und eingebunden ist. Hmm wie mache ich das dann genau?

Aber mit dem Script von dir - dem SysInfoscript habe ich geschaut, was alles installiert ist. Der UserAgent Robot war oder ist eben auch dabei. Das wundert mich halt.

hmm - on the long run kann man jetzt glaube ich zwei Wege gehen.

1. Das script erstmal vereinfachen - und gucken ob es dann läuft - oder ab welchem Vereinfachungsgrad es noch läuft.
2. gucken wie bzw Warum der benoetigte User Agent reinkommt bzw noch nicht drinne ist - und erkannt wird.
3. gibt es noch weitere Wege? Fällt dir denn noch ein dritter Weg ein?


hmmm - mehr faellt mir momentan nicht ein.

gruss
sals ;-)

Btw; die neueste Version 1.5.4 ist draussen - wenn ich die installiere, dann muss ich da auch erstmal Perl einbauen..Das ist sicher.
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 13. September 2006 15:35

BTW: kann man mit $ua true rauskriegen ob es richtig und sauber installiert und eingebunden ist. Hmm wie mache ich das dann genau?

Diese Frage verstehe ich nicht, denn $ua ist nur eine Variable die mit den Ergebnis einer LWP::RobotUA->new; gefüllt wird.

Im wieteren Verlauf wird im Scipt diese Varable aufgerufen um weiter seine Arbeiten zu erledigen.

Das Script bleibt aber beim "Befüllen" der Variable $ua stehen, weil die Anweisung LWP::RobotUA->new; nicht richtig ist bzw. wenn ich mir die google Pages anschaue nicht vollständig ist.

Denn das LWP::RobotUA->new; erwartet in seiner Anwesung weitere Befehle.

Mit anderen Worten...
Recherchiere was diese "LWP::RobotUA->new;" überhaupt macht und wozu diese dient. Daraus folgt dann normalerweise das Verständnis wie das Script mit dem Ergebnis aus dieser Anweisung (abgelegt in der Variable $ua) weiter arbeitet.


EDIT:
Fülle ich die
my $ua = LWP::RobotUA->new;
mit
my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');

So läuft das Script erstmal, ich seh aber nicht was er macht.
Testweise habe ich mal das "me@foo.com" durch "me" Verkleinert gibt es die Fehlermeldung das der RobotUA eine normale mailadresse braucht.

Folglich läuft der RobotUA, nur muss festgestellt werden welche Einträge rein sollen und wofür er diese im weiteren Script verlauf braucht.

me@foo.com ====== Beispiel-Platzhalter für eine mailadresse !!!
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 » 13. September 2006 16:41

hallo Deepsurfer,

[was fuer ein langer Thread - aber ich denke dass wir am Ende auch ans Ziel kommen. Dass der Xampp schon mal läuft und dass auch Perl läuft halte ich ja schon mal für einen Meilenstein.]

also: mit $ UA true hab ich gemeint , herauskriegen zu können,bzw. sollen, ob der UserAgentRobot nun wirklich geladen ist. Da ist aber - wenn ich deinen Kommentar lese und darüber nachdenke sicher auch noch ein Denkfehler drinne.

deepsurfer wrote:
BTW: kann man mit $ua true rauskriegen ob es richtig und sauber installiert und eingebunden ist. Hmm wie mache ich das dann genau?


Diese Frage verstehe ich nicht, denn $ua ist nur eine Variable die mit den Ergebnis einer LWP::RobotUA->new; gefüllt wird.


Im wieteren Verlauf wird im Scipt diese Varable aufgerufen um weiter seine Arbeiten zu erledigen.
Das Script bleibt aber beim "Befüllen" der Variable $ua stehen, weil die Anweisung LWP::RobotUA->new; nicht richtig ist bzw. wenn ich mir die google Pages anschaue nicht vollständig ist.

Denn das LWP::RobotUA->new; erwartet in seiner Anwesung weitere Befehle.

Mit anderen Worten...
Recherchiere was diese "LWP::RobotUA->new;" überhaupt macht und wozu diese dient. Daraus folgt dann normalerweise das Verständnis wie das Script mit dem Ergebnis aus dieser Anweisung (abgelegt in der Variable $ua) weiter arbeitet.


EDIT:
Fülle ich die
my $ua = LWP::RobotUA->new;
mit
my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');

So läuft das Script erstmal, ich seh aber nicht was er macht.
Testweise habe ich mal das "me@foo.com" durch "me" Verkleinert gibt es die Fehlermeldung das der RobotUA eine normale mailadresse braucht.
Folglich läuft der RobotUA, nur muss festgestellt werden welche Einträge rein sollen und wofür er diese im weiteren Script verlauf braucht. me@foo.com ====== Beispiel-Platzhalter für eine mailadresse !!!


der RobotUA macht imho folgendes. Er führt die Kontrolle über die Visits beim angefragten Server. Er hält die "Netiquette ein und macht nur soviele Anfragen wie noetig - damit der besuchte SERVER nicht kollabiert. So jedenfalls habe ich das verstanden. Damit - also mit dem Robot korrespondiert das was auf der besuchten Seite fuer USERAGENTEN angegeben wird unter -... meinedomain.de/robots.txt - da kann man im Grunde nachlesen was moeglich ist und was nicht. BTW;: fuer die angegebene und oben eingesetzte Domain ist das z.B. auch relativ klar was da geht. - (vgl. die angegebeneDomain.com/robots.txt ).

hmm ich werde nochmals ueberproeufen was mit dem script nicht stimmen kann. Ich werde das hier auchnochmals intensiv testen

gruss
sals ;-)

habe dir eine pm geschickt - ;-)
der Robot als User agent korrespondiert mit dem was auf dem besuchten Server so möglich ist. Das ist von Fall zu Fall verschieden. Hier ein Beispiel... :

Code: Select all
User-agent: *
Disallow: /cgi-bin/
Disallow: /images/
Disallow: /syndicate/
Disallow: /webalizer/

User-agent: aipbot
Disallow: /

User-agent: becomebot
Disallow: /

User-agent: psbot
Disallow: /

User-agent: googlebot
Crawl-delay: 20

User-agent: msnbot
Crawl-delay: 20

User-agent: teoma
Crawl-delay: 20

User-agent: slurp
Crawl-delay: 20
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 13. September 2006 17:01

Jupp robots.txt ist bekannt...

Das Script füllt zumindest schonmal den LWP::RobotUA mit einem HASHwert und auch der HTML::LinkExtor wird mit einem HASHwert gefüllt.

Das Script bleibt bei mir in der Luft Hängen wenn er dazu übergeht die Threads aus zu lesen, dort erhalte ich kein Antwort wenn ich die einzelnen Variablen printen lasse.


Zu deiner PM:
Da bist du ja jetzt an der richtigen Stelle für Infos.
Prizipiell läuft das Script mit XAMPP ! muss nur noch geklärt werden wie derjenige die Abgriffe gemacht hat.


SCIPT LÄUFT !!! habe nun eine Ausgabe...
PM kommt gleich...

EDIT browser ist abgestürzt und hatte noch noch nicht das Ergebnis kopiert.
Mal schaun ob mein Konstrukt nochmal was ausgibt.
Auf jedefall jede menge Sachen von dem Forum.
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 » 13. September 2006 17:22

hallo Deepsurfer,

danke - du bist ja wieder mal ganz schoen schnell ;-)

deepsurfer wrote:Jupp robots.txt ist bekannt...
Das Script füllt zumindest schonmal den LWP::RobotUA mit einem HASHwert und auch der HTML::LinkExtor wird mit einem HASHwert gefüllt.


wie es scheint bist du weiter gekommen! Ich habe hier nochmals geguckt wie ich weiterkomme mit dem Script.


Das Script bleibt bei mir in der Luft Hängen wenn er dazu übergeht die Threads aus zu lesen, dort erhalte ich kein Antwort wenn ich die einzelnen Variablen printen lasse.


hmm: bei der Ausgabe weiss ich noch nicht ob man das mit dem Datadumper so lassen kann - oder muss. Man koennte ja auch das hier machen.

print "Content-Type: text/html\n\n":


Zu deiner PM: Da bist du ja jetzt an der richtigen Stelle für Infos. Prizipiell läuft das Script mit XAMPP ! muss nur noch geklärt werden wie derjenige die Abgriffe gemacht hat.


hmm - dass es mit xampp läuft ist ja schon mal sehr gut!

SCIPT LÄUFT !!! habe nun eine Ausgabe...
PM iss kommt gleich...


das heisst dass du es jetzt zum vollen Laufen gebracht hast? Genial... Woran hing es denn noch!?

greetz
sals :D
ps - bin jetzt für 2,5 h offline und awk da ich noch etwas erledigen muss - gucke aber später wieder hier rein. Gruss schonmal :D
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 13. September 2006 17:30

Das Scipt läuft soweit, wie gesagt muss hinter der LWP::RobotUA->new;
noch weitere Anweisungen rein.

Ich habe dir ein PM geschickt mit meinem Ergebnis Fenster:

Ist natürlich nicht sortiert oder in einer Forum gestaltet.
Du siehst aber immer wieder den Ausdruck:

"DeepSurfer variablen xxx PRINT:" und dahinter das ergebnis.

FOlglich funktioniert das Script, ABER es sollte eine Zeitbegrenzung rein, denn das Script arbeitet immer weiter und weiter und weiter, da aber in dem Forum kein weiterer Text erscheint ist eine solche Verbindung sehr resorucenfressend. Zumal nun die Logfiles beim Forum inhaber überlaufen werden...

So..werde morgen ein Funktion einbauen sodass das Script alles was er da hat in ein Datenfile hineinschreibt.

Hinweis: das script bei mir hat nun nochmal so viel an Daten ausgegeben, also ist es immer noch dran und scannt scannt scannt..

bis morgen
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 » 14. September 2006 00:25

hi Deepsurfer,

[btw: also das ist ja ein sehr sehr nachhaltiger Thread. - ich bin sehr froh dass die mods ihn nicht in die Perl-Abteilungen geschoben haben. Denn imho hat das neben der Perlspezifik hier ja auch mit ner prktischen Anwendung zu tun. Und sowas mal durchzuspielen ist vielleicht auch fuer andere interessant. Daneben gibt es sicher auch viele die XAMPP gezielt auch mir den diversen Paketen fahren wollen (btw. vieleicht auch mal mit Python oder so..-

Für mich ist das hier auch im Blick auf Perl total interessant. ]

deepsurfer wrote:Das Scipt läuft soweit, wie gesagt muss hinter der LWP::RobotUA->new; noch weitere Anweisungen rein.


hhmm: interessant. Das script war an dieser Stelle noch nicht korrekt oder vollständig!?

Ich habe dir ein PM geschickt mit meinem Ergebnis Fenster:


ich habe das angesehen - sieht sehr gut aus. Ich gucke mir das später noch genauer an.

Ist natürlich nicht sortiert oder in einer Forum gestaltet. Du siehst aber immer wieder den Ausdruck: "DeepSurfer variablen xxx PRINT:" und dahinter das ergebnis.
FOlglich funktioniert das Script, ABER es sollte eine Zeitbegrenzung rein, denn das Script arbeitet immer weiter und weiter und weiter, da aber in dem Forum kein weiterer Text erscheint ist eine solche Verbindung sehr resorucenfressend. Zumal nun die Logfiles beim Forum inhaber überlaufen werden...


hmm - und das tut es sogar ohne die Schachtelung.


my @urls = ("http://www.example.com/first.html",
"http://www.example.com/second.html");

foreach my $url (@urls) {
# main code
}


mit der Schachtelung, die imho noch nicht drinne ist in dem Beispiel das du hast, läuft das Script über die
Forenthreads drüber und hört nicht mehr auf. Ich habe das hier diskutiert: http://forums.devshed.com/perl-programm ... 550-2.html


So..werde morgen ein Funktion einbauen sodass das Script alles was er da hat in ein Datenfile hineinschreibt.
Hinweis: das script bei mir hat nun nochmal so viel an Daten ausgegeben, also ist es immer noch dran und scannt scannt scannt..
bis morgen


Das hoert sich sehr gut an. Ich gucke mir jetzt mal an, an welchen Stellen du mit dem UserAgent was gemacht hast
und versuche nachzuvollziehen wie die Geschichte mit den Turbulenzen heute war,... Du hast heute Abend ja rausgekriegt warum ist dass heute Morgen noch nicht gelaufen ist....



bis spaeter [ ist schon 1:24 Uhr am Donnerstag]

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

Postby deepsurfer » 14. September 2006 13:43

Das hoert sich sehr gut an. Ich gucke mir jetzt mal an, an welchen Stellen du mit dem UserAgent was gemacht hast
und versuche nachzuvollziehen wie die Geschichte mit den Turbulenzen heute war,... Du hast heute Abend ja rausgekriegt warum ist dass heute Morgen noch nicht gelaufen ist....


Ich hab lediglich PRINT anweisungen eingebaut...

Ausgehend von deinem Script in meiner PM:

Code: Select all
#!"\xampp\perl\bin\perl.exe" -w
use CGI::Carp qw(fatalsToBrowser);
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://xxxxxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxxxx";
my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');
my $lp = HTML::LinkExtor->new(\&wanted_links);

print "Content-type: text/html\n\n";
print "DeepSurfer variablen ua PRINT: $ua \n";
print "DeepSurfer variablen lp PRINT: $lp \n";


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);

print "Content-type: text/html\n\n";
print "DeepSurfer variablen stream PRINT: $stream \n";

Sonst nix... 3 Minuten Laufen lassen und schon füllt sich der Browser mit Ergebnisen.
Prizipiel einfach die PRINT anweisung der variable ändern in eine WRITE dateiname und schon hast du reinen Text den man wiederum auswerten kann.
Da du aber die Ergebnisse in eine DB schreiben willst, kannst du auch die WRITE Anweisung direkt mit einem DBconnect anweisen.
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 » 14. September 2006 13:58

hallo Deepsurfer,

Vorweg; Vielen Dank fuer Deine sehr sehr nachhaltige Hilfe in dieser Angelegenheit. Du bist ein Super-Trouble-Shooter ;-)

Ich hab lediglich PRINT anweisungen eingebaut...
Ausgehend von deinem Script in meiner PM:


wenn ich das aber angucke, dann hieß das mal [zumindest in der Ur-Version], vgl. die Devshed-Seite...[hast du den Link noch]

Code: Select all
my $ua = LWP::RobotUA->new;


Nur um dich - und eben auch Perl hier besser zu verstehen. Du hast hier doch noch etwas gemacht, oder

Code: Select all
my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');


Imho hast du dazu oben ja auch Erklärungen gegeben. Wenn ich mich richtig erinnere. Ich werde heute Abend mal deinen code hier bei mir laufen lassen. Diesen code den du hier gepostet bzw. reingestellt hast.


Code: Select all
#!"\xampp\perl\bin\perl.exe" -w
use CGI::Carp qw(fatalsToBrowser);
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://xxxxxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxxxx";
my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');
my $lp = HTML::LinkExtor->new(\&wanted_links);

print "Content-type: text/html\n\n";
print "DeepSurfer variablen ua PRINT: $ua \n";
print "DeepSurfer variablen lp PRINT: $lp \n";


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);

print "Content-type: text/html\n\n";
print "DeepSurfer variablen stream PRINT: $stream \n";



Sonst nix... 3 Minuten Laufen lassen und schon füllt sich der Browser mit Ergebnisen. Prizipiel einfach die PRINT anweisung der variable ändern in eine WRITE dateiname und schon hast du reinen Text den man wiederum auswerten kann. Da du aber die Ergebnisse in eine DB schreiben willst, kannst du auch die WRITE Anweisung direkt mit einem DBconnect anweisen.

[/quote]

Das ist interessant. Also ich werde deine Lösung hier nochmals studieren, auch dazu alle oben von dir gegebenen Erläuterungen lesen und dann auch hier testen. Es muss bei mir dann ja so auch laufen.
BTW; Wie gestern oder vorgern bemerkt waren die UserAgent ( robot) Turbulenzen bei dir ja auch aufgetreten. Wenn ich den Code hier einsetzte, dann haben wir im Grunde identische Vorraussetzungen bzw. XAMPPS

Also nochmals: Danke fuers posten - und vor Allem fuer Deine sehr sehr nachhaltige Hilfe hier. Du hast mir jetzt nicht nur mit XAMPP geholfen, sondern auch mit Perl und mit einem Werkzeug dass ich ganz praktisch brauchen kann.

vielen dank nochmals an dieser Stelle!
sals ;-)
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 14. September 2006 14:05

Code:
my $ua = LWP::RobotUA->new;


Nur um dich - und eben auch Perl hier besser zu verstehen. Du hast hier doch noch etwas gemacht, oder

Code:

my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');



Ja..ich habe die Zeile erweitert.....
Wenn du dich erinnerst habe vorher hier in diesem Thread mehrmals hingewiesen das der "LWP::RobotUA->new" mehr Anweisungen braucht als dein URscript vorgelegt hatte.
Daher kam ja auch die Fehlermeldung das der RobotUA eine UserAgent "required" (scroll was hoch, da steht es ;) )
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 » 14. September 2006 14:10

hallo

deepsurfer wrote:
Code:
my $ua = LWP::RobotUA->new;

Nur um dich - und eben auch Perl hier besser zu verstehen. Du hast hier doch noch etwas gemacht, oder

Code:

my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');



Ja..ich habe die Zeile erweitert.....
Wenn du dich erinnerst habe vorher hier in diesem Thread mehrmals hingewiesen das der "LWP::RobotUA->new" mehr Anweisungen braucht als dein URscript vorgelegt hatte.
Daher kam ja auch die Fehlermeldung das der RobotUA eine UserAgent "required" (scroll was hoch, da steht es ;) )


leuchtet ein - habe das begriffen - /(dazu mus ich mir vielleicht einfach auch nochmals die Manpages von RobotUA ansehen. - das mit dem required leuchtet jedenfalls auch schon mal ein.

Noch eine Frage: Bist du ohne den Teil hier ausgekommen. D.h. brauchen wir das hier nicht.

Code: Select all
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;
}


[siehe zum Code auch die oben oder auf devshed geposteten Code-Snippets]
hmmm, ich muss das mal an den Ergebnissen - also den Threads angucken, wie es sich verhält und was dieser code im Speziellen denn so macht.

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

Postby deepsurfer » 14. September 2006 14:19

Nein , der rest ist auch im script geblieben, nur schreib ich doch nicht den kompletten Code hier im Thread wenn ich nur 3 stellen geändert habe.
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

PreviousNext

Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 33 guests