Python 尝试读取大型网站文件数据时出现MemoryError异常

Python 尝试读取大型网站文件数据时出现MemoryError异常,python,memory,beautifulsoup,python-requests,bigdata,Python,Memory,Beautifulsoup,Python Requests,Bigdata,我试图阅读大量的网站数据,但我面临这个记忆错误的例外 import requests requests.urllib3.disable_warnings() search_page = "http://www.yachtworld.co.uk/core/listing/cache/searchResults.jsp?ps=99999" y = requests.get(search_page, timeout=999999, stream=True) result = y.text 当我试图读

我试图阅读大量的网站数据,但我面临这个记忆错误的例外

import requests
requests.urllib3.disable_warnings()
search_page = "http://www.yachtworld.co.uk/core/listing/cache/searchResults.jsp?ps=99999"
y = requests.get(search_page, timeout=999999, stream=True)
result = y.text
当我试图读取作为页面输出的
结果
变量时,我会遇到
内存错误
异常

是否有任何方法可以读取整个数据而不出现此异常


谢谢。

据我所知,这个问题没有任何变化-这意味着不可能,您可以像前面介绍的那样分块加载数据

我提供的链接中被接受的答案说明了一段相当好的代码,用于对响应进行分块:

def download_file(url):
    local_filename = url.split('/')[-1]
    # NOTE the stream=True parameter
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
                #f.flush() commented by recommendation from J.F.Sebastian
    return local_filename

此API是否允许您请求较小位的数据(例如,
ps=99999
是什么东西)?您想将内容写入磁盘还是立即处理?如果马上,你可以一行一行地做吗?有时答案是“购买更多内存”。GET参数表示页面中要显示的行数,但我希望一次获取所有行,而不是在每个页面上获取,这是“购买更多内存”选项。使用
lxml.html.parse(“http://www.yachtworld.co.uk/core/listing/cache/searchResults.jsp?ps=99999”
甚至
lxml.html.iterparse
,您可以使用它来限制内存使用。但是为什么不抓取并过滤较小的数据位呢?虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-你从这里复制粘贴答案:我直接链接到答案命名,它是从接受的答案复制的@Bentaye说如果我提供必要的部分会更好,所以我做了。