我写了一个脚本来做一些网页抓取。网页上有javascript,所以在使用PyQT5抓取所需内容之前,我使用BeautifulSoup来呈现页面。
但是,我有很多页面要抓取(超过10,000页),我试图将内容存储在一个dict中,然后将其转换为json文件。我试图周期性地定期编写json文件,因为我认为由于刮伤的数量,dict变得太大了。还收到了出口代码。
在另一个线程中,有人建议更新视频卡驱动程序(不知道为什么会影响我的Python脚本,但我尝试了一下。没有进展。
发布于 2018-10-27 19:34:55
问题(至少在这种情况下)是字典变得太大了。我解决这个问题的方法是每1000次刮擦,在硬盘上通过在文件名中添加一个迭代器将日期转储到json格式,清除dict,增加迭代器,并继续抓取。
... while/for loop iterating over all web pages
data_table = soup.find('table', attrs={'class', 'dataTable'})
... process data into dict d
data[id] = d
if id % 1000 == 0:
with open(r'datafile-{num}.json'.format(num=id//1000)) as file:
json.dump(data, file)
data.clear()
id += 1 # increment the key for dict data and counter for file separation
这并不理想,因为我现在有很多文件,但至少我有我想要的数据。如果其他人在Windows上获得退出代码- -1073740791 (0xc0000409),如果您将大量数据转储到字典中,这很可能是原因所在。
https://stackoverflow.com/questions/53025606
复制相似问题