我正在使用 python 中的 mechanize 库来下载大文件。我正在使用 mechanize 检索表单中的数据。
使用 python 同时下载太多文件的问题是我的系统内存 (RAM) 很快就会用完。
我能想到的一种减少内存使用的方法是下载文件的部分内容并继续将它们保存到硬盘上。但是我从中下载文件的互联网服务器使用 HTTP/1.0。因此,当我在下载请求中添加 Range 标头时, Range: bytes=0-8192 ,服务器从第 8192 个字节开始返回文件。
我添加的标头是否有问题,或者 HTTP/1.0 无法下载部分内容?
有没有其他方法可以减少下载脚本的内存使用?
这是下载文件的python代码:
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
webpage = <url>
br.addheaders = [("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0"), ("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"),("Accept-Language","en-US,en;q=0.5"),("Accept-Encoding","gzip, deflate"),("DNT","1")]
br.open(webpage)
br.select_form(name='receive')
fl_nm = "test.pdf"
br.addheaders = [("Range", "bytes=0-8192")]
response = br.submit() # submits the form, just like if you clicked the submit button
fileObj = open(direc+'/'+fl_nm,"w") # open for write
fileObj.write(response.read())
fileObj.close()