我目前正在一个数据抓取项目中,这需要我在每个循环中加载和保存数据。您可能想知道为什么我会这样做?好吧,在我抓紧没有在每个循环之间加载和保存我的数据之前,如果脚本在上次迭代之前崩溃了(由于超时,奇怪的URL或您可以想象的一切而发生),那么我的所有数据都将丢失。
总而言之,现在应用的方法可以正常工作,但是经过20k次迭代后,我的存储文件增加到了〜90mb的长度,导致脚本变得越来越慢,迫使我创建一个新的数据保存文件。下面的代码显示了我脚本的基本功能。
import numpy as np #List with URLS to scrape (220k URLS) URLS = np.load("/some_directory/URLS.npy").tolist() #Already checked URLS Checked_URLS=np.load("/some_directory/checked_URLS.npy").tolist() #Perform scraping and add new URL to checked list for i in URLS: if i not in Checked_URLS: Checked_already.append(i) np.save("some_directory/checked_URLS.npy", Checked_already) NEW_DATA=Bunch_of_scraping_code #Load numpy list with data collected from previous URLS #Append new scraping data and save list FOUND_DATA=np.load("/some_directory/FOUND_DATA.npy", allow_pickle=True).tolist() FOUND_DATA.append(NEW_DATA) np.save("some_directory/FOUND_DATA.npy", LOT_DATA)
我确定必须有更多的pythonic方式,不需要在每个循环中将整个列表加载到python中吗?还是完全不需要编写文字的另一种方式?我将列表写入.npy,因为据我所知,这是解析大型列表文件的最有效方法。
我试图将我的数据直接保存到大熊猫中,但这使一切变得更加糟糕和缓慢。所有帮助将不胜感激!
我目前正在一个数据抓取项目中,这需要我在每个循环中加载和保存数据。您可能想知道为什么我会这样做?好吧,在我抓取而未加载并保存我的...
我认为一种更有效的方法是包装可能会以try/except
崩溃的代码并记录有问题的url以进行进一步调查,而不是一遍又一遍地重复相同的操作: