gpt4 book ai didi

python - urllib.request.urlretrieve 不通过 HTTPS 下载文件

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:33 25 4
gpt4 key购买 nike

下面的 URL 是下载文本文件的下载链接。如果我将 URL 粘贴到 Firefox 中,它会下载实际内容,即文本文件。但是,当使用 urlretrieve 时,它会给我一些 html 源代码文件。

>>> import urllib
>>> down_link='URL' #URL is a ***HTTPS*** link to download .txt file
>>> file=urllib.request.urlretrieve(down_link)

这是我得到的输出:

>>>
('C:\\Users\\rakesh.j.kulkarni\\AppData\\Local\\Temp\\tmps7559wgi'
http.client.HTTPMessage object at 0x03A3C610>)

当打开文件时,我得到 html 源文件,当用浏览器打开它时,它是同一网页的登录表单,

所以我必须想出一个替代过程来暂时做同样的事情,直到问题得到解决

subprocess.Popen(["C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", down_link])

然后我去下载并处理文件。

最佳答案

首先,您应该导入 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,它会自动检测系统中的默认浏览器并打开 url。

import webbrowser
url = ...
webbrowser.open(url, autoraise=True) # normal
webbrowser.open_new(url) # new window
webbrowser.open_new_tab(url) # new tab

关于python - urllib.request.urlretrieve 不通过 HTTPS 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com