2016-08-07 20 views
0

In Python 3 Funktion urlopen von urllib.request-Modul abrufen das Ziel der URL oder nur eine Verbindung zu der URL als Datei-Handle oder habe ich es vollständig verloren? Ich würde gerne verstehen, wie es funktioniert.Was macht urllib.request.urlopen()?

Grundsätzlich möchte ich die Zeit finden, um eine Datei von einer URL herunterladen. Wie gehe ich vor?

Hier ist mein Code:

VERSION 1

import urllib 
import time 

start = time.time() 
with urllib.request.urlopen('http://mirror.hactar.bz/lastsync') as f: 
    lastsync = f.read() #Do i need this line if i dont care about the data 
    end = time.time() 
duration = end - start 

VERSION 2

import urllib 
import time 

with urllib.request.urlopen('http://mirror.hactar.bz/lastsync') as f: 
    start = time.time() 
    lastsync = f.read() #Does this line do the actual data retrieval ? 
    end = time.time() 
duration = end - start 

Antwort

0

Vom docs:

Öffnen Sie die URL-URL, die entweder eine Zeichenfolge oder ein Request-Objekt sein kann.

...

Diese Funktion liefert eine dateiähnliche Objekt mit drei zusätzlichen Methoden:

  • geturl() - Gibt die URL der Ressource abgerufen, verwendet, um allgemein festzustellen, ob eine Umleitung war gefolgt
  • info() - geben Sie die Meta-Informationen der Seite, z. B. Kopfzeilen, in der Form einer mimetools.Message-Instanz (siehe Kurzreferenz zu HTTP-Header)
  • getcode() - geben Sie den HTTP-Statuscode zurück der Antwort.

Beachten Sie auch, dass, wie von Python 3.0, urllib.request.urlopen() und urllib.urlopen() gleichwertig sind.

EDIT Also, um time es:

# urllib.request for < python 3.0 
import urllib 
import time 

start = time.time() 

# urllib.request.urlopen() for < python 3.0 
response = urllib.urlopen('http://example.com/') 
data = response.read() # a `bytes` object 
end = time.time() 

duration = end - start 
+0

Pardon meine Unwissenheit. Also, in Laien-Begriffen öffnet urlopen() eine Verbindung zur URL und response.read() führt den eigentlichen Download der Daten durch? –

+0

@ Shankar Korrigieren. Dieser letzte Codeblock sollte für Sie funktionieren, um zu testen, wie lange es dauert, die Datei von der URL in '.urlopen()' herunterzuladen. Denken Sie daran, dass die Zeit variieren könnte! Vielleicht machen Sie es zu einer Funktion und rufen Sie es einige Male, um die "durchschnittliche" Geschwindigkeit zu erhalten. –

+0

Vielen Dank für das Aufräumen. –