Python中“urlretrieve”函数的属性是什么?

时间:2015-11-04 21:20:23

标签: python

我想编写一个Python程序来自动填充Web表单。在搜索很多时,我发现了这段代码。

import urllib urllib.urlretrieve("http://www.google.com/", "somefile.html", lambda x,y,z:0, urllib.urlencode({"username": "xxx", "password": "pass"}))

这个函数需要很多参数。你能解释一下每个论点的含义吗?

1 个答案:

答案 0 :(得分:0)

如果我们看一下official Python documentation for urllib.urlretrieve,我们会得到一个很好的解释:

  

如有必要,将URL表示的网络对象复制到本地文件。   如果URL指向本地文件或者有效的缓存副本   对象存在,不复制对象。返回元组(filename, headers),其中filename是对象所在的本地文件名   可以找到,headers是对象的info()方法   返回urlopen()返回(对于远程对象,可能已缓存)。   例外情况与urlopen()相同。

     

第二个参数(如果存在)指定要复制的文件位置   to(如果不存在,该位置将是具有生成名称的临时文件)。   第三个参数(如果存在)是一个将被调用的钩子函数   一旦建立网络连接,并在每次之后   之后阻止阅读。钩子将传递三个参数;一个   到目前为止传输的块数,以字节为单位的块大小,以及   文件的总大小。旧FTP上的第三个参数可能为-1   不响应检索而返回文件大小的服务器   请求。

     

如果url使用http:scheme标识符,则为可选数据   可以给出参数来指定POST请求(通常是请求   类型是GET)。 data参数必须是标准的   application / x-www-form-urlencoded格式;请参阅urlencode()功能   下方。

     

在版本2.5中更改:urlretrieve()将引发ContentTooShortError   当它检测到可用数据量小于时   预期金额(由Content-Length报告的大小   头)。例如,下载时可能会发生这种情况   中断。

     

Content-Length被视为下限:如果有更多数据   要读取,urlretrieve()会读取更多数据,但如果可用的数据较少,   它提出了例外。

     

在这种情况下,您仍然可以检索已下载的数据,并将其存储   在异常实例的content属性中。

     

如果未提供Content-Length标头,则urlretrieve()无法检查   它下载的数据大小,只返回它。在这   你必须假设下载成功。

顺便说一句,他们称之为参数或参数,而不是属性。