Welches ist das Beste in Python: urllib2, PycURL oder mechanize?
Ok also ich brauche zum herunterladen von einigen web-Seiten mit Python und habe eine schnelle Untersuchung meiner Optionen.
Enthalten mit Python:
das urllib - mir scheint, dass ich verwenden soll, urllib2 statt. das urllib hat keine cookie-Unterstützung, HTTP/FTP/lokale Dateien nur (kein SSL)
urllib2 - vollständige HTTP - /FTP-client, unterstützt die meisten benötigten Dinge wie cookies, unterstützt nicht alle HTTP-Verben (nur GET und POST, keine SPUR, etc.)
Voll ausgestattet:
mechanisieren - /speichern-Firefox/IE cookies, die Aktionen, wie Folgen Sie den zweiten link, aktiv gepflegt (0.2.5 veröffentlicht im März 2011)
PycURL - unterstützt alles was LOCKE tut (FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE und LDAP), bad news: nicht aktualisiert seit Sep 9, 2008 (7.19.0)
Neue Möglichkeiten:
urllib3 - unterstützt die Verbindung re-/pooling-und Datei-posting
Veraltet (ein.k.ein. verwenden Sie das urllib/urllib2 statt):
httplib - HTTP/nur HTTPS (kein FTP)
httplib2 - HTTP/nur HTTPS (kein FTP)
Das erste, was mir auffällt ist, dass das urllib/urllib2/PycURL/mechanize sind alle ziemlich ausgereifte Lösungen, die gut funktionieren. mechanisieren und PycURL Schiff mit einer Reihe von Linux-Distributionen (z.B. Fedora 13) und BSDs, so dass die installation ist ein nicht-Thema in der Regel (so gut).
urllib2 sieht gut aus, aber ich Frage mich, warum PycURL und mechanisieren beide scheinen sehr beliebt ist, ist es etwas, das ich vermisst werde (d.h. wenn ich mit urllib2 werde ich malen, mich in eine Ecke an einem gewissen Punkt?). Ich würde wirklich gerne ein feedback über die vor/Nachteile von diesen Dingen, also kann ich machen, die beste Wahl für mich.
Edit: zusätzlicher Hinweis auf verb Unterstützung in urllib2
InformationsquelleAutor der Frage bigredbob | 2010-03-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
urllib2
ist in jeder Python-Installation überall, so ist eine gute Grundlage, auf der zu beginnen.PycURL
ist nützlich für Menschen, die bereits verwendet, um mit libcurl, macht mehr von der low-level-details von HTTP, plus es erhält alle fixes oder Verbesserungen angewandt, um libcurl.mechanize
wird verwendet, um beharrlich Laufwerk eine Verbindung ähnlich wie ein browser.Es ist nicht die Frage, ob eins besser als das andere, es ist eine Frage der Wahl der geeigneten tool für den job.
InformationsquelleAutor der Antwort Ignacio Vazquez-Abrams
Ich denke, dieser Vortrag (auf pycon 2009), hat die Antworten für das, was Sie suchen (Asheesh Laroia hat viel Erfahrung auf der Rolle). Und er weist darauf hin, die guten und die schlechten von den meisten Ihrer Präsentation
Programmierung von Webseiten, die nicht
erwarten Sie (Teil 1 von 3)
Programmierung von Webseiten, die nicht
es erwarten (Teil 2 von 3)
Programmierung von Webseiten, die nicht
erwarten Sie (Teil 3 von 3)
Aus der PYCON 2009 Zeitplan:
Update:
Asheesh Laroia aktualisiert hat seine Präsentation für die pycon 2010
PyCon 2010: Kratzen Web:
Strategien für die Programmierung von Webseiten
dass nicht erwartet, dass es
Update 2:
PyCon US-2012 - Web scraping: Zuverlässig und effizient ziehen die Daten von Seiten, die es nicht erwarten
InformationsquelleAutor der Antwort Diego Castro
Python Anfragen ist auch ein guter Kandidat für die HTTP-Sachen. Es hat eine schönere api IMHO eine Beispiel-http-Anforderung von Ihrem offcial Dokumentation:
InformationsquelleAutor der Antwort Tutul
"Holen Sie sich einige Webseiten", verwenden Sie Anfragen!
Vom http://docs.python-requests.org/en/latest/ :
InformationsquelleAutor der Antwort mit
Mach dir keine sorgen "Letzte Aktualisierung". HTTP hat sich nicht viel verändert in den letzten Jahren 😉
urllib2 ist am besten (wie die eingebauten), dann wechseln Sie zu mechanisieren, wenn Sie müssen cookies von Firefox. mechanize benutzt werden kann als drop-in Ersatz für urllib2 - Sie haben ähnliche Methoden etc. Mit Firefox cookies bedeutet, dass Sie sich Dinge von Webseiten (wie z.B. StackOverflow) mit Ihren persönlichen Zugangsdaten. Nur, verantwortlich mit Ihrer Anzahl von Anfragen (oder du wirst gesperrt).
PycURL ist für Menschen, die alle low-level " - Sachen in libcurl. Ich würde versuchen, den anderen Bibliotheken im ersten.
InformationsquelleAutor der Antwort wisty
Urllib2 unterstützt nur HTTP GET und POST, es gibt vielleicht workarounds, aber Wenn die app hängt sich auf andere HTTP-Verben, werden Sie wahrscheinlich lieber ein anderes Modul.
InformationsquelleAutor der Antwort mikerobi
Jeder python-Bibliothek, die spricht HTTP hat seine eigenen Vorteile.
Verwenden Sie die eine, die die minimale Menge an notwendigen Funktionen für eine bestimmte Aufgabe.
Deiner Liste fehlt mindestens urllib3 - ein Cooler third-party-HTTP-Bibliothek, die wiederverwenden kann, eine HTTP-Verbindung und beschleunigt erheblich den Prozess der Abruf mehrere URLs aus der gleichen Website.
InformationsquelleAutor der Antwort jedi_coder
Werfen Sie einen Blick auf Grab (http://grablib.org). Es ist eine Netzwerk-Bibliothek stellt zwei Haupt-Schnittstellen:
1) Greifen für die Erstellung von Netzwerk-Anfragen und analysieren von abgerufenen Daten
2) Spinne für das erstellen von bulk-Website Schaber
Unter die Haube Packen verwendet pycurl und lxml aber es ist möglich andere Netz transportiert (zum Beispiel Anfragen, die Bibliothek). Anforderungen-transport ist nicht gut getestet wurden noch.
InformationsquelleAutor der Antwort Gregory Petukhov