我必须从包含数百万行文本数据的网页中读取前几千条记录。我还需要在自己的机器上复制这些数据。如果这意味着写入文本文件或立即下载整个文件,我会无动于衷,而且我一直试图做后者。
但是,页面太长,以至于每次尝试请求数百万行时都会耗尽内存。
import os, urllib
os.chdir('/Users/myusername/onamac')
url="http://myurlhere.com/"
urllib.request.urlretrieve(url, 'myfilename')
最终我得到了:
Traceback (most recent call last):
File "<ipython-input-38-0ebf43ee369f>", line 6, in <module>
urllib.request.urlretrieve(url, 'mytweets')
File "/anaconda/lib/python3.6/urllib/request.py", line 281, in urlretrieve
tfp.write(block)
OSError: [Errno 28] No space left on device
数据不是由行分隔,这是一个问题;它基本上是一系列字典,我最终希望使用json
加载并读入一个大表。
当文件达到一定大小时,我曾经以某种方式停止urlretreive
请求的其他想法(我并不特别关心我获得了多少记录,也许是我&#39 ; d将它限制在1 GB或其他东西,看看是否有足够的记录)。但是,当我不知道如何停止tell()
时,我不确定如何使用urllib.request.urlretrieve
或其他任何内容。