我在使用熊猫时遇到内存错误,并列出了数据抓取

时间:2020-07-14 12:16:26

标签: python python-3.x pandas pyautogui

此代码从excel或csv文件中获取数据,然后针对特定列中的每一行在一个特定网站上使用获取的信息进行网页抓取。 问题是我无法访问html的任何部分,所以我决定使用pyautogui和一些图像来检测页面何时加载。此外,脚本还会继续在两个变量中收集数据,并且在线程内存不足的情况下,脚本会将数据导出到一个csv文件中。 也许问题是因为收集数据的两个变量正在消耗我的所有RAM,所以我正在使用熊猫将提取的数据导出到.csv文件中,相对于用于Web抓取的数据,新行中收集的每个数据都是即时消息,即时消息实际上是在创建数据框,然后将其导出到.csv中,是否有必要在.csv中插入数据而无需这样做?对不起,英语不好。 描述过程:

    ler_excel = eg.fileopenbox("Select file...")
    df = pd.read_csv(ler_excel, sep = ';', keep_default_na=False)
    list_data = df['data'].tolist()
    operations = []
    yes_or_no = []

这部分加载.csv文件并从数据列中读取数据并将其保存在列表中,我也确实创建了两个列表,以根据抓取的数据发送抓取的数据

收集数据后,代码执行此操作

    operations.append('MANY TEXT SCRAPED')
    if condition in yes_or_no:
      yes_or_no.append('yes')
    else:
      yes_or_no.append('no')

在某些地方,操作和yes_or_no列表变得太大,以至于我的内存无法处理,然后我的代码从那里将列表中的所有内容插入数据框内的列中

    df["OPERATIONS"] = pd.Series(operations)
    df["YES_NO] = pd.Series(yes_or_no)

然后我要做的就是将数据导出到.csv

    df.to_csv(cwd+"/database.csv", sep = ';', index = False)

但是,当df文件变得沉重时,在代码的某个位置,循环的线程耗尽了内存,导致我需要执行一些操作,例如使用pg.locateOnScreen出现wait元素,然后复制并粘贴数据选择用鼠标,是否有从变量中清除数据并且不丢失索引或顺序的方法? 对于每个数据,我都需要将SCRAPED DATA放在同一行中,但是在另一列中,不知道是否有办法做到这一点

0 个答案:

没有答案