urllib.request.urlopen()做了什么?

时间:2016-08-07 16:10:14

标签: python urllib

在python 3中,来自urllib.request模块的urlopen函数检索URL的目标,或者只是打开与URL的连接作为文件句柄还是我完全丢失了它?我想了解它的工作原理。

基本上我想找到从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 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

1 个答案:

答案 0 :(得分:0)

来自docs

  

打开URL网址,可以是字符串或请求对象。

     

...

     

此函数返回一个类似文件的对象,其中包含三个附加方法:

     
      
  • geturl() - 返回检索到的资源的URL,通常用于确定是否遵循重定向
  •   
  • info() - 以mimetools.Message实例的形式返回页面的元信息,例如标题(请参阅HTTP标题的快速参考)
  •   
  • getcode() - 返回响应的HTTP状态代码。
  •   

另请注意,从Python 3.0开始,urllib.request.urlopen()urllib.urlopen()是等效的。

编辑所以,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