我有个问题,我想找人帮忙。我需要创建一个可以加载到csv文件中的R代码。csv文件包含一个名为" link“的列,对于每个i(Row),有一个链接,代码需要从这个链接下载链接的内容,并将其放在一个单独的csv文件中。到目前为止,我已经设法找到并修改了下面显示的代码段。(感谢克里斯托弗·甘鲁德和他的合著者)
library(foreign)
library(RCurl)
addresses <- read.csv(">>PATH TO CSV FILE<<")
for (i in addresses) full.text <- getURL(i)
text <- data.frame(full.text)
outpath <-">>PATH TO SPECIFIED FOLDER<<"
x <- 1:nrow(text)
for(i in x) {
write(as.character(text[i,1]), file = paste(outpath,"/",i,".txt",sep=""))
}实际上,代码工作得很好,但问题是我用请求重载了服务器,所以在从100-150个链接下载了正确的内容之后,文件就是空的。我知道这是个问题,因为我已经用越来越少的链接对它进行了多次测试。事实上,如果我只是下载100个链接在当时,这是没有问题的。在100岁以上,它开始成为一个问题。不出所料,我需要在这段代码中实现几样东西,这样它才能成为完成这一特定任务的好爬虫。
我把我的问题分成两部分,因为解决问题一人应该暂时解决这个问题。
哇这个问题突然变得很长了。我意识到这是一个很大的问题,我要求很多。这是我的硕士论文,这并不是真正的R编程,但我需要下载的内容,从许多网站,我已经被允许访问。接下来,我要对论文的内容进行分析,这也是我论文的重点所在。欢迎任何建议/意见。
library(foreign)
library(RCurl)
addresses <- read.csv("~/Dropbox/Speciale/Mining/Input/Extract post - Dear Lego n(250).csv")
for (i in addresses) {
+ if(i == 50) {
+ print("Why wont this work?")
+ Sys.sleep(10)
+ print(i)
+ }
+ else {
+ print(i)
+ }
+ } 然后在加载的链接上列出一个完整的列表。不,“为什么不做这个工作”在I == 50后面
警告讯息
In if (i == 100) {:
the condition has length > 1 and only the first element will be used
full.text <- getURL(i)
text <- data.frame(full.text)
outpath <-"~/Dropbox/Speciale/Mining/Output"
x <- 1:nrow(text)
for(i in x) {
write(as.character(text[i,1]), file = paste(outpath,"/",i,".txt",sep=""))} 能帮我更多吗?
发布于 2012-09-01 22:45:01
最后解决办法:
> library(RCurl)
> library(foreach)
> library(foreign)
> z <- nrow(links)
> outpath <-"SPECIFIC PATH"
> foreach(i=1:z) %do% {
+ text <- getURL(links[i,])
+ write(as.character(text), file = paste(outpath,"/",i,".txt",sep=""))}发布于 2012-08-20 21:18:17
为了跟进我的评论,这里有一个基本概念,可以在循环的一半时间内加入一个Sys.sleep。
for (i in 1:10) {
if(i == 5) {
print("halfwayhome")
Sys.sleep(5)
print(i)
}
else {
print(i)
}
}在以下方面的成果:
[1] 1
[1] 2
[1] 3
[1] 4
[1] "halfwayhome"
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10因此,我没有任何RCurl或解析HTML页面的经验,因此我很方便地避免了您的任务的这一部分。但是,我成功地生成了一个地址列表,用readLines()下载了它们,然后将它们写回来。我在每个电话后面都打了一个Sys.sleep()电话,一切似乎都很顺利。
links <- c("http://news.lugnet.com/dear-lego/?n=1",
"http://news.lugnet.com/dear-lego/?n=2",
"http://news.lugnet.com/dear-lego/?n=3",
"http://news.lugnet.com/dear-lego/?n=4",
"http://news.lugnet.com/dear-lego/?n=5",
"http://news.lugnet.com/dear-lego/?n=6",
"http://news.lugnet.com/dear-lego/?n=7",
"http://news.lugnet.com/dear-lego/?n=8",
"http://news.lugnet.com/dear-lego/?n=9",
"http://news.lugnet.com/dear-lego/?n=10"
)
for (j in 1:length(links)){
dat <- readLines(links[j])
write.table(dat, paste0("outfile",j,"txt"))
Sys.sleep(5)
cat("Finished file", j)
}如果您需要解析那些HTML页面或从中获得更多有用的东西,我会问一个新的/不同的问题,在这方面我可能不会有多大的帮助。
希望这有帮助,-Chase
https://stackoverflow.com/questions/12021620
复制相似问题