Verwenden der Parallelisierung zum Scrappen von Webseiten mit R

Ich versuche, eine große Menge von Webseiten zu durchsuchen, um sie später zu analysieren. Da die Anzahl der URLs sehr groß ist, hatte ich mich für die entschiedenparallel Paket zusammen mitXML.

Insbesondere verwende ich diehtmlParse() Funktion vonXML, was gut funktioniert, wenn verwendet mitsapplygeneriert jedoch leere Objekte der Klasse HTMLInternalDocument, wenn sie mit verwendet werdenparSapply.

url1<- "http://forums.philosophyforums.com/threads/senses-of-truth-63636.html"
url2<- "http://forums.philosophyforums.com/threads/the-limits-of-my-language-impossibly-mean-the-limits-of-my-world-62183.html"
url3<- "http://forums.philosophyforums.com/threads/how-language-models-reality-63487.html"

myFunction<- function(x){
cl<- makeCluster(getOption("cl.cores",detectCores()))
ok<- parSapply(cl=cl,X=x,FUN=htmlParse)
return(ok)
}

urls<- c(url1,url2,url3)

#Works
output1<- sapply(urls,function(x)htmlParse(x))
str(output1[[1]])
> Classes 'HTMLInternalDocument', 'HTMLInternalDocument', 'XMLInternalDocument', 'XMLAbstractDocument', 'oldClass' <externalptr>
output1[[1]]


#Doesn't work
myFunction<- function(x){
cl<- makeCluster(getOption("cl.cores",detectCores()))
ok<- parSapply(cl=cl,X=x,FUN=htmlParse)
stopCluster(cl)
return(ok)
}

output2<- myFunction(urls)
str(output2[[1]])
> Classes 'HTMLInternalDocument', 'HTMLInternalDocument', 'XMLInternalDocument', 'XMLAbstractDocument', 'oldClass' <externalptr>
output2[[1]]
#empty

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage