2015-11-04 16 views
-5

我想编写一个Python程序来自动填充网页表单。在搜索很多时,我发现这个代码。Python中'urlretrieve'函数的属性是什么?

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

此功能需要花费很多的争论。你能解释一下每个论点的含义吗?

+0

阅读文档https://docs.python.org/2/library/urllib.html –

回答

0

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

复制,通过URL表示到本地文件的网络对象,如果必要的。 如果URL指向本地文件,或存在对象的有效缓存副本,则不会复制该对象。返回的元组(filename, headers)其中filename是在其下对象 可以发现本地文件名,和headers是任何由urlopen()返回的对象 的info()方法返回(远程对象,可能缓存)。 例外情况与urlopen()相同。

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

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

更改版本2.5:urlretrieve()将提高ContentTooShortError 当它检测到可用的数据的量小于所述 预期量(它是由内容长度报头 报告的大小)。例如,这可能发生在下载中断时 。

内容长度被视为一个下界:如果有更多的数据 阅读,urlretrieve()读取更多的数据,但如果较少的数据是可用的, 它引发异常。

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

如果没有提供Content-Length标头,urlretrieve()不能检查其下载的数据的大小,并且只是返回它。在这个 的情况下,你只需要假定下载成功。

顺便说一下,它们被称为参数或参数,而不是属性。

相关问题