Ich habe diese Funktion erstellt, die ich in einer Schleife über eine Liste von ~ 1 Millionen URLs ausführen, um einige Webscraping zu tun, aber nach einer Weile ist mein Speicher voll und R schließt.R Speicherverwaltung während webscrapping
library(tm.plugin.webmining)
getContents <- function(url) {
out <- tryCatch(
{extractContentDOM(url, asText = F,threshold=0.5)},
error=function(cond) {
message(paste("URL does not seem to exist:",
message("Here's the original error message:")
message(cond)
return(NA)},
warning=function(cond) {
message(paste("URL caused a warning:", url))
message("Here's the original warning message:")
message(cond)
return(NA)},
finally={
message(paste("Processed URL:", url))})
return(out)}
#save text
a=getContents(http://www.nytimes.com/)
Wenn ich dies tue, bekomme ich immer ein Problem in Bezug auf Speicherverwaltung. Grundsätzlich durchlaufe ich die Liste der URLs, extrahiere den Text, analysiere ihn.
Jedes Mal, wenn ich die Funktion starte, erhöht sich der verwendete Speicher um einige MB. Wenn Sie dann versuchen, den Speicher-System zur Freigabe mit
rm(list = ls())
gc()
den Task-Manager ist nicht zeigt nicht, dass der Speicher wurde an das System zurück gegeben; Nach einer Weile wird das System heruntergefahren, weil kein Speicher mehr verfügbar ist. Ich habe auch versucht, R neu zu starten, aber es scheint keine Möglichkeit zu geben, R in einer Schleife neu zu starten, so dass die Schleife danach weiterläuft. Ich habe schon viel über dieses Thema gelesen, aber ich habe noch keine richtige Antwort auf dieses Problem gefunden.
danke im voraus!
selbst wenn ich dafür gehe, ist das Speicherproblem immer noch nicht gelöst; Es wird nicht alle URLs durchlaufen – NMM