首先,您应该导入 urllib.request,而不仅仅是 urllib(在 Py3 中)。
您正在将对象分配给一个变量,以便它为您提供对象实例作为输出。
没有错,只是为了给你一个快速修复,尝试这样做:
In [1]: import urllib.request
In [2]: down_link = "http://vignette3.wikia.nocookie.net/shipoffools/images/4/42/Surprised_Luffy.jpg/revision/latest?cb=20120921134043"
In [3]: path_to_save = "../luffy.jpg"
In [4]: urllib.request.urlretrieve(down_link, path_to_save)
Out[4]: ('../luffy.jpg', <http.client.HTTPMessage at 0x47f6af0>)
这会很好,将图像保存在您想要的位置。
如果您不指定 path_to_save,那也没关系,因为无论如何它都会下载并且路径将是 tmp 目录,在您的情况下它将是 C:\\Users\\rakesh.j.kulkarni\\AppData\\Local\\Temp\\ 文件夹。
如果出现https 相关错误或任何其他问题,有一种更简洁的方法,即读取带有urlopen 的文件并将其保存在计算机上的文件中:
In [5]: import urllib.request as req
In [6]: down_link = "https://vignette3.wikia.nocookie.net/shipoffools/images/4/42/
...: Surprised_Luffy.jpg/revision/latest?cb=20120921134043"
In [7]: fname = "../luffy.jpg"
In [8]: with req.urlopen(down_link) as d, open(fname, "wb") as opfile:
...: data = d.read()
...: opfile.write(data)
...:
注意:此方法可能需要一些时间,但适用于普通小文件。
javascript 下载/重定向: 如果是 javascript 或 php 脚本下载,使用
subprocess 在浏览器中打开链接实际上不是动态代码,因为您需要指定浏览器的路径,相反,您可以使用预先存在的模块
webbrowser,它会自动检测系统中的默认浏览器并打开网址。
import webbrowser
url = ...
webbrowser.open(url, autoraise=True) # normal
webbrowser.open_new(url) # new window
webbrowser.open_new_tab(url) # new tab