mit perl auf websiten zugreifen

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von d3f3nd3r, 13.05.2008.

  1. #1 d3f3nd3r, 13.05.2008
    d3f3nd3r

    d3f3nd3r Mitglied

    Dabei seit:
    08.09.2006
    Beiträge:
    26
    Zustimmungen:
    0
    heo

    ich würde gerne ein perl skript schreiben, dass daten einer webseite auswertet (und diese auch automatisch herunterlädt!)

    leider habe ich keine ahnung wie ich das realisieren könnt, hat jemand tipps?

    mfg
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. okar

    okar Jungspund

    Dabei seit:
    13.04.2008
    Beiträge:
    21
    Zustimmungen:
    0
  4. #3 bitmuncher, 13.05.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Mit dem Perl-Modul 'WWW::Mechanize' ist das ziemlich einfach. Findest du bei CPAN recht gut dokumentiert. Kleines Beispiel:

    Code:
    use WWW::Mechanize; # Modul benutzen
    
    # die URL, die wir bearbeiten wollen
    my $url = "http://www.meinserver.tld/";
    
    # Mechanize-Instanz erstellen
    my $mech = WWW::Mechanize->new();
    
    # Seite der URL einlesen
    $mech->get($url);
    
    # Inhalt der Seite in eine Variable packen
    my $content = $mech->content();
    
    # Inhalt in ein Array packen
    my @lines = split(/\n/, $content);
    
    foreach my $line (@lines) {
      # mach irgendwas mit $line
    }
    
    
    Selbst Formulare ausfüllen ist total simpel:

    Code:
    use WWW::Mechanize; # Modul benutzen
    
    # die URL, die wir bearbeiten wollen
    my $url = "http://www.meinserver.tld/";
    
    # Mechanize-Instanz erstellen
    my $mech = WWW::Mechanize->new();
    
    # Seite der URL einlesen
    $mech->get($url);
    
    # Formular ausfuellen und absenden
    $mech->submit_form(form_number => 1, # eine Seite kann ja mehrere form-Tags haben
        fields => {
            namevonfeld1 => 'wertdenwireintragenwollen1',
            namevonfeld2 => 'wertdenwireintragenwollen2'
        });
    my $content = $mech->content; # ergebnis nach dem absenden des formulars holen
    ...
    
     
  5. #4 blue-dev, 15.05.2008
    blue-dev

    blue-dev stranger with blue eyes

    Dabei seit:
    30.06.2007
    Beiträge:
    438
    Zustimmungen:
    0
    Kann ich bitmuncher nur zustimmen, wenn ich auch libwww (LWP) bevorzuge. Beide funktionieren aber kaum anders.
    Cpan Seite: http://search.cpan.org/~gaas/libwww-perl-5.812/lib/LWP.pm
     
  6. #5 d3f3nd3r, 26.05.2008
    d3f3nd3r

    d3f3nd3r Mitglied

    Dabei seit:
    08.09.2006
    Beiträge:
    26
    Zustimmungen:
    0
    ja danke WWW::Mechanize hat toll funktioniert.

    Jetzt nur noch eine Frage, hat jemand Erfahrung, mit Skripten, die sich auf einer HP anmelden? Gibt es da etwas zu beachten?

    mfg
     
  7. #6 uzumakinaruto, 26.05.2008
    uzumakinaruto

    uzumakinaruto Tripel-As

    Dabei seit:
    23.05.2008
    Beiträge:
    246
    Zustimmungen:
    0
    Ort:
    Gifhorn
    @d3f3nd3r wieso nicht wget???
    Code:
    wget http://www.example.de/login.php --post-data 'user=USERNAME&password=PASSWORD'
     
  8. #7 saeckereier, 26.05.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Weils so weit möglich zu vermeiden ist externe Tools aufzurufen? (Performanz, Sicherheit, Shell Escaping, Umwandeln/Parsen der Ausgabe)
     
  9. #8 d3f3nd3r, 26.05.2008
    d3f3nd3r

    d3f3nd3r Mitglied

    Dabei seit:
    08.09.2006
    Beiträge:
    26
    Zustimmungen:
    0
    ja ich würde den vorher vorgestellten mechanismus auch auf webseiten anwenden, bei denen man sich zuerst anmelden muss...
     
  10. #9 bitmuncher, 26.05.2008
    Zuletzt bearbeitet: 26.05.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Ich habe WWW::Mechanize auch schon für Anmeldungen benutzt. Einfach mittels des oben genannten Mechanismus das Login-Formular ausfüllen und dir den neuen Content holen.
     
  11. #10 d3f3nd3r, 27.05.2008
    d3f3nd3r

    d3f3nd3r Mitglied

    Dabei seit:
    08.09.2006
    Beiträge:
    26
    Zustimmungen:
    0
    ja aber das problem ist, ich möchte nicht nur die seite nach dem login sehen, da würde ich so etwas wie sessionmanagement benötigen und da wäre es intressant wie man das mit perl realisiert...

    mfg
     
  12. #11 bitmuncher, 27.05.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Dann schau dir mal WWW::Kontent::Session an. Das dürfte für ein ganz einfaches Session-Handling reichen, denke ich. Alternativ greifst du auf die Funktionalitäten des CGI-Moduls zurück.
     
  13. #12 d3f3nd3r, 28.05.2008
    d3f3nd3r

    d3f3nd3r Mitglied

    Dabei seit:
    08.09.2006
    Beiträge:
    26
    Zustimmungen:
    0
    ja aber das schaut mir ja serverseitig aus.
    normalerweise kenne ich ja die session id nicht, bzw wie kann ich die benötigten parameter bekommen?

    (es geht um einen mediawiki bot)
     
  14. #13 saeckereier, 28.05.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Benutze LWP::UserAgent und gib ihm ein Cookie Jar. Damit hast du Sessions, die per Cookie kommen erledigt. Für alle anderen Arten von Sessions musst du dir wohl anschauen, wie diese auf der Seite realisiert werden. Da es keinen Standard per se gibt, sieht das schlecht aus. Meistverwendet werden angehängte URL Parameter (Bsp.: index.html?s=43597834509234590354 ), Cookies oder unsichtbare Formulare die die Session ID beim POST mitsenden.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 d3f3nd3r, 28.05.2008
    d3f3nd3r

    d3f3nd3r Mitglied

    Dabei seit:
    08.09.2006
    Beiträge:
    26
    Zustimmungen:
    0
    also ich arbeite jetzt gerade mit LWP::UserAgent.
    Nur eine Frage: Wie fülle ich Formulare richtig aus?

    Das fragliche Formular hat zwei intressante Eingabefelder (aber auch noch 2 unwichtige), nämlich wpName und wpPassword. Das Ziel des Formulars (action=..) ist /infopedia/index.php?title=Spezial:Anmelden&action=submitlogin&type=login.

    Ich hab mir gedacht, ich schicke mit POST einfach die zwei Felder rüber aber das hat nicht funktioniert....

    hier mein code :
    jemand eine Idee wie ich einfach das Formular ausfüllen kann (in WWW::Mechanize Art...) ?
     
  17. #15 saeckereier, 28.05.2008
    Zuletzt bearbeitet: 28.05.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    [strike]Einfach in die Doku von LWP::UserAgent gucken??[/strike]

    Sorry, hatte nicht ganz gelesen, genauso wie du's geschrieben hast hätte ich es auch erwartet. Eventuell kannst du ja mal das ganze auf ein Test PHP Skript loslaufen lassen und dir anzeigen lassen, was ankommt?

    EDIT: Poste mal bitte die HTML Quelle des Login Formulars
     
Thema:

mit perl auf websiten zugreifen

Die Seite wird geladen...

mit perl auf websiten zugreifen - Ähnliche Themen

  1. Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern

    Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern: Das Hyperledger-Projekt der Linux Foundation will eine neue Form der dezentralisierten Kontoführung nach dem Prinzip der »distributed ledger« bei...
  2. Perl 6 offiziell vorgestellt

    Perl 6 offiziell vorgestellt: Wie erwartet, ist die Version C(hristmas) von Perl 6 veröffentlicht worden. Perl 6 stellt nicht, wie der Name suggeriert, einen Nachfolger von...
  3. Perl: 20 Jahre CPAN

    Perl: 20 Jahre CPAN: Vor 20 Jahren wurde das erste Modul in das Comprehensive Perl Archive Network (CPAN) hochgeladen, woran Neil Bowers mit einem Abriss der...
  4. Perl 5.22.0 freigegeben

    Perl 5.22.0 freigegeben: Die neue Version 5.22 von Perl bringt den Anwendern mehr Sicherheit bei Eingabedateien, Unicode 7.0 und zahlreiche weitere Verbesserungen....
  5. [Perl] Perl OO Methodenaufruf in anderem Objekt

    [Perl] Perl OO Methodenaufruf in anderem Objekt: Hallo, Ich bin dabei in Perl ein Pokerspiel zu programmieren, hänge aber momentan an einem Problem, wo ich nicht weiterkomme. Ich habe die...