一尘不染

使用Selenium GeckoDriver和Firefox时是否可以减少内存RAM消耗

selenium

我将Selenium和Firefox Webdriver与python配合使用,以从网站中抓取数据。

但是在代码中,我需要访问该网站超过10k次,并且这样做要消耗大量RAM。

通常,当脚本访问该站点2500次时,它已经消耗了4GB或更多的RAM,并且停止工作。

是否可以在不关闭浏览器会话的情况下减少内存RAM的消耗?

我问这是因为,当我启动脚本时,需要手动登录该站点(两因素加成,下面未显示代码),如果关闭浏览器会话,则需要再次登录该站点。

for itemLista in lista:
    driver.get("https://mytest.site.com/query/option?opt="+str(itemLista))

    isActivated = driver.find_element_by_xpath('//div/table//tr[2]//td[1]')
    activationDate = driver.find_element_by_xpath('//div/table//tr[2]//td[2]')

    print(str(isActivated.text))
    print(str(activationDate.text))

    indice+=1
    print("numero: "+str(indice))

    file2.write(itemLista+" "+str(isActivated.text)+" "+str(activationDate.text)+"\n")

#close file
file2.close()

阅读 788

收藏
2020-06-26

共1个答案

一尘不染

我发现了如何避免内存泄漏。

我只是用

time.sleep(2)

file2.write(itemLista+" "+str(isActivated.text)+" "+str(activationDate.text)+"\n")

现在,firefox在不消耗大量内存的情况下运行

太完美了。

我不知道为什么停止停止会消耗如此多的内存,但是我认为它正在增加内存消耗,因为它没有时间来完成每个driver.get请求。

2020-06-26