2016-08-07 10 views
0

python 3では、urllib.requestモジュールのurlopen関数はURLのターゲットを取得するか、URLへの接続をファイルハンドルとして開くか、完全に失ったのですか?私はそれがどのように機能するのか理解したいと思います。urllib.request.urlopen()は何をしますか?

基本的に私は、URLからファイルをダウンロードするのにかかる時間を見つけたいと思います。私はそれについてどうやって行くのですか?ここで

は私のコードです:

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 docsから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 

答えて

0

URL urlを開きます。これは、文字列またはRequestオブジェクトのいずれかです。 - リダイレクトであった場合、一般的に決定するために使用される、検索されたリソースのURLを返す

  • のgetURL():

    ...

    この関数は3つの追加のメソッドを持つファイルのようなオブジェクトを返します

  • (HTTPヘッダへのクイックリファレンスを参照)はmimetools.Messageインスタンスの形で、そのようなヘッダーとして、ページのメタ情報を返すのgetcode() - - HTTPステータスコードを返す
  • 情報を()に続きます応答の。

はまた、Pythonの3.0のように、urllib.request.urlopen()urllib.urlopen()が等価であることに注意してください。

EDITので、timeにそれ:

# 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

恩赦自分の無知。だから面倒な言葉では、urlopen()はurlへの接続を開き、response.read()は実際のデータのダウンロードを行いますか? –

+0

@ Shankar Correct。最後のコードブロックは '.urlopen()'のurlからファイルをダウンロードするのにかかる時間をテストするために働くはずです。時間は変わるかもしれないことを忘れないでください!たぶんそれを関数にし、 "平均"速度を得るために数回呼ぶかもしれません。 –

+0

これをクリアしていただきありがとうございます。 –

関連する問題