我将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()
我发现了如何避免内存泄漏。
我只是用
time.sleep(2)
后
file2.write(itemLista+" "+str(isActivated.text)+" "+str(activationDate.text)+"\n")
现在,firefox在不消耗大量内存的情况下运行
太完美了。
我不知道为什么停止停止会消耗如此多的内存,但是我认为它正在增加内存消耗,因为它没有时间来完成每个driver.get请求。