在Python中打开一个URL并获得X个字节的最佳方式是什么?

问题描述:

我希望有一个机器人每小时获取一个URL,但如果该网站的操作员是恶意的,他可以让他的服务器发送一个1 GB的文件。有没有一种好的方法可以将下载限制为100KB,并在限制之后停止下载?在Python中打开一个URL并获得X个字节的最佳方式是什么?

我可以想象从头开始编写自己的连接处理程序,但是我想尽可能使用urllib2,只是以某种方式指定限制。

谢谢!

+0

这是读X字节'了urllib.urlopen( “URL”)阅读(1024)' – 2013-10-18 23:09:47

这可能是你在找什么:

import urllib 

def download(url, bytes = 1024): 
    """Copy the contents of a file from a given URL 
    to a local file. 
    """ 
    webFile = urllib.urlopen(url) 
    localFile = open(url.split('/')[-1], 'w') 
    localFile.write(webFile.read(bytes)) 
    webFile.close() 
    localFile.close() 
+0

阅读()需要一个非常简单的方法。一个字节参数?这太棒了,这正是我想要的,非常感谢你!我一直无法在文档中找到它... – 2010-06-06 23:59:08

+1

http://docs.python.org/library/stdtypes.html#file.read(python的文件对象的最重要的方法几乎全部实现) – 2010-06-07 00:17:35

+0

谢谢,我知道file.read(),但没有意识到在url.read()中实现了相同的语义... – 2010-06-07 00:49:14