Seite 1 von 1

mechanize(2.7) und webbrowser (3.3)

Verfasst: Sonntag 2. Februar 2014, 00:12
von manfred79
Hallo,

ich habe mal eine Frage bezüglich ein paar Zeilen Code.

Code: Alles auswählen

import mechanize
br = mechanize.Browser()
br.open("http://www.google.at/")
for link in br.links():
       print(link)
       br.follow_link(link)
       br.back()
eigentlich zum aufwärmen ganz einfach. Ich habe mich mal mit dem Mechanize auseinandergesetzt. Es soll alle Links auf einer Website geöffnet und dann wieder geschlossen werden.

Nach dem ich mir jetzt Pyhton 3.3 installiert habe schaffe ich es nicht mehr - trotz einer einzigen Schleife ^^

Wie würde dieser Code ohne Mechanize Modul aussehen? Ich bekomme nur Fehler :-(

Re: mechanize(2.7) und webbrowser (3.3)

Verfasst: Sonntag 2. Februar 2014, 00:49
von Dami123
"mechanize" funktioniert nur mit Python 2.7 und wird auch in Zukunft nicht für 3.x zur Verfügung stehen.
Wenn du Python 3 und 2 auf deinem Rechner hast, kannst du den obigen Code auch ausführen. Öffne dazu die 2.7 IDLE und erstelle eine neue Datei. Diese läuft nun mit Python 2.7.

Für Python 3.3 würde ich "requests" empfehlen und zum parsen der links "BeautifulSoup".

Re: mechanize(2.7) und webbrowser (3.3)

Verfasst: Sonntag 2. Februar 2014, 13:04
von manfred79
Danke für den Tipp!

das probiere ich gleich mal aus :-)

Re: mechanize(2.7) und webbrowser (3.3)

Verfasst: Donnerstag 6. Februar 2014, 23:02
von manfred79
Hey!

also irgendwie krieg ich das gar nicht mit BeautifulSoup hin, scheint das ich hier noch ein wenig zu viel Anfänger bin...

da ich auf meinem rechner nur mehr 3.3 hab kann ich nur schauen ob ich es irgendwie anders hin bring.
hat jemand noch einen tipp?

Re: mechanize(2.7) und webbrowser (3.3)

Verfasst: Freitag 7. Februar 2014, 02:02
von Dami123
Hast du dir die Dokumentation von BS angeschaut?
http://www.crummy.com/software/BeautifulSoup/bs4/doc/

Code: Alles auswählen

import requests
from bs4 import BeautifulSoup

r = requests.get("http://www.google.de/")
soup = BeautifulSoup(r.text)

# aus der dokumentation
for link in soup.find_all('a'):
    print(link.get('href'))

# deinem Beispielcode zufolge
for link in soup.find_all('a'):
    print(link.get('href'))
    requests.get(link.get('href'))
Der wesentliche Unterschied zu "mechanize"-Browser ist in diesem Fall, dass du keine Cookies in Verwendung hast.
Je nachdem, was du vorhast empfiehlt sich Python 2.7 mit "mechanize" mehr als diese Variante, da es einfach viel deckt, was du sonst nachprogrammieren müsstest.

Re: mechanize(2.7) und webbrowser (3.3)

Verfasst: Freitag 7. Februar 2014, 09:08
von BlackJack
@Dami123: Wenn nur Cookies das Problem sind, dann sollte man sich `requests.Session` anschauen, damit gehen dann auch Cookies ohne grossen Mehraufwand über Abfragen hinweg.