mechanize(2.7) und webbrowser (3.3)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
manfred79
User
Beiträge: 3
Registriert: Samstag 1. Februar 2014, 23:29

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 :-(
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

"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".
manfred79
User
Beiträge: 3
Registriert: Samstag 1. Februar 2014, 23:29

Danke für den Tipp!

das probiere ich gleich mal aus :-)
manfred79
User
Beiträge: 3
Registriert: Samstag 1. Februar 2014, 23:29

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?
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

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.
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.
Antworten