Seite 1 von 1

mechanize und/oder Beautiful Soup

Verfasst: Samstag 23. August 2008, 11:37
von joker21
Hallo,

ich habe schon ein paar mal mittels Beautiful Soup Webseiten geparst.

Nun möchte ich mich auf der Seite
http://www.magickartenmarkt.de/index.php
einloggen und ein paar Informationen auslesen.

Mit Beautiful Soup kann ich mich soweit ich weiß nicht einloggen. Oder?
Mit mechanize kann ich mich einloggen, aber den nicht das HTML parsen. Richtig?

Zunächst habe ich versucht, mich einzuloggen (mechanize). Ob das Einloggen erforlgreich war, könnte ich z.B. überprüfen, wenn ich schaue, ob im Seitentext der Hinweis "Du hast ein falsches Passwort eingegeben." steht. Aber ich wüsste nicht, wie das mit mechanize geht.

(Ich bin lernwilliger Laie. Also bitte beim Antorten langsam sprechen... :wink: )

Gruß
Jochen

Verfasst: Samstag 23. August 2008, 12:53
von Leonidas
Naja, du kannst dir ja mit Mechanize den Code ausgeben lassen und den mit html5lib, lxml.html oder BeautifulSoup scrapen. Die Module schließen sich ja nicht gegenseitig aus.

Verfasst: Samstag 23. August 2008, 13:45
von joker21
Leonidas hat geschrieben:Naja, du kannst dir ja mit Mechanize den Code ausgeben lassen und den mit html5lib, lxml.html oder BeautifulSoup scrapen. Die Module schließen sich ja nicht gegenseitig aus.
Leider ist mir das noch nicht gelungen. Wenn ich mittels

Code: Alles auswählen

    br = mechanize.Browser()
    br.open('http://www.magickartenmarkt.de/index.php')
eine Seite laden, wie übergebe ich dann den HTML-Code an BS?

Code: Alles auswählen

    soup = BeautifulSoup(br
führt zu einem Fehler.

Verfasst: Samstag 23. August 2008, 13:57
von joker21
Jetzt habe ich es.

Code: Alles auswählen

    br.open('http://www.magickartenmarkt.de/index.php'')
    source=br.response()
    soup = BeautifulSoup(source)
Das funktioniert, ohne dass ich verstehe, was das response macht. Kannst Du mir das erklären?

Verfasst: Samstag 23. August 2008, 14:09
von Leonidas
``br.response()`` gibt dir einfach den HTML-Code, den du dann an BeautifulSoup weiterleistest.

Verfasst: Sonntag 24. August 2008, 09:07
von joker21
Leonidas hat geschrieben:``br.response()`` gibt dir einfach den HTML-Code, den du dann an BeautifulSoup weiterleistest.
So einfach... Danke für die Hilfe.

Jochen