Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中打开URL并获取最多X字节的最佳方法是什么?_Python_Http_Url_Sockets - Fatal编程技术网

在Python中打开URL并获取最多X字节的最佳方法是什么?

在Python中打开URL并获取最多X字节的最佳方法是什么?,python,http,url,sockets,Python,Http,Url,Sockets,我想让一个机器人每小时获取一个URL,但是如果该站点的操作员是恶意的,他可以让他的服务器向我发送一个1GB的文件。有没有一种好方法可以将下载限制在100KB,然后在该限制之后停止 我可以想象从头开始编写自己的连接处理程序,但如果可能的话,我想使用urllib2,只是以某种方式指定限制 谢谢 这可能就是您想要的: import urllib def download(url, bytes = 1024): """Copy the contents of a file from a giv

我想让一个机器人每小时获取一个URL,但是如果该站点的操作员是恶意的,他可以让他的服务器向我发送一个1GB的文件。有没有一种好方法可以将下载限制在100KB,然后在该限制之后停止

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


谢谢

这可能就是您想要的:

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()

read()接受字节参数?太棒了,这正是我想要的,非常感谢!我在文件里找不到它。。。(python文件对象中最重要的方法是由python中几乎所有类似文件的对象实现的。)谢谢,我知道file.read(),但没有意识到url.read()中实现了相同的语义…上次我尝试这种技术时失败了,因为实际上不可能只从HTTP服务器读取指定数量的数据,即隐式读取所有HTTP响应,然后只读取其中的前N个字节。因此,最终您下载了整个1Gb恶意响应。有一种非常简单的方法可以读取X字节
urllib.urlopen(“url”).read(1024)