如何在使用python抓取过程中有效解析大型列表数据?

问题描述 投票:0回答:1

我目前正在一个数据抓取项目中,这需要我在每个循环中加载和保存数据。您可能想知道为什么我会这样做?好吧,在我抓紧没有在每个循环之间加载和保存我的数据之前,如果脚本在上次迭代之前崩溃了(由于超时,奇怪的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,因为据我所知,这是解析大型列表文件的最有效方法。

我试图将我的数据直接保存到大熊猫中,但这使一切变得更加糟糕和缓慢。所有帮助将不胜感激!

我目前正在一个数据抓取项目中,这需要我在每个循环中加载和保存数据。您可能想知道为什么我会这样做?好吧,在我抓取而未加载并保存我的...

python list numpy parsing screen-scraping
1个回答
0
投票

我认为一种更有效的方法是包装可能会以try/except崩溃的代码并记录有问题的url以进行进一步调查,而不是一遍又一遍地重复相同的操作:

© www.soinside.com 2019 - 2024. All rights reserved.