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

时间:2016-10-02 13:49:25

标签: python python-3.x urllib

以下网址是下载文字文件的下载链接。 如果我在Firefox中粘贴URL,它会下载实际内容,即文本文件。但是,当使用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])

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

1 个答案:

答案 0 :(得分:3)

首先,您应该导入<DataGridTextColumn Width="*" Binding="{Binding Username}" CanUserReorder="False" CanUserSort="False" x:Name="DataGridTextColumn"> <DataGridTextColumn.HeaderTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Background="Red" MouseLeftButtonDown="EventSetter_OnHandler" Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType=DataGridTextColumn},Path=ActualWidth, UpdateSourceTrigger=PropertyChanged}"> <Label>Username</Label> </StackPanel> </DataTemplate> </DataGridTextColumn.HeaderTemplate> </DataGridTextColumn> ,而不仅仅是urllib(在Py3中)。
您将对象分配给变量,因此它将对象实例作为输出。 这没有什么不对,只是为了给你一个快速修复,尝试做:

let userID = FIRAuth.auth()!.currentUser!.uid

这样可以正常工作,将图像保存到您想要的位置。 如果你没有指定path_to_save,那也没关系,因为它会继续下载,路径将是urllib.request目录,在你的情况下它将是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>) 文件夹。

如果遇到tmp相关错误或任何其他问题,可以通过使用C:\\Users\\rakesh.j.kulkarni\\AppData\\Local\\Temp\\读取文件并将其保存在计算机上的文件中,以更简洁的方式执行此操作:

https

注意:此方法可能需要一些时间,但对于普通的小文件效果很好。


javascript下载/重定向:如果是javascript或php脚本下载,使用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) ...: ,它会自动检测系统中的默认浏览器并打开网址。

subprocess