2014-02-05 9 views
0

Я хотел бы задать вопрос по вопросу, с которым я в настоящее время застрял. При попытке очистить HTML-страницу (используя RCURL) я столкнулся с этой ошибкой: «Ошибка в curlMultiPerform (multiHandle): встроенная нуль в строке». Я много читал об этом типе ошибок и советов о том, как с этим бороться (в том числе и от Дункана Хэма Ланга, создателя пакета RCurl). Но даже после применения его рекомендаций (следующим образом) я получаю ту же ошибку:Как исправить эту ошибку RCurl?

htmlPage <- rawToChar(getURLContent(url, followlocation = TRUE, binary = TRUE)) 
doc <- htmlParse(htmlPage, asText=TRUE) 

Я что-то упустил? Любая помощь будет высоко ценится!


Edit:

Однако, есть вторая ошибка я не упомянул в исходном посте. Это происходит здесь:

data <- lapply(i <- 1:length(links), 
       function(url) try(read.table(bzfile(links[i]), 
              sep=",", row.names=NULL))) 

Ошибка: Error in bzfile(links[i]) : invalid 'description' argument.

«ссылки» список ПОЛНЫЙ URL-файлы, строится следующим образом:

links <- lapply(filenames, function(x) paste(url, x, sep="/")) 

Используя links[i], я пытаюсь обратиться к текущему элементу списка ссылок в текущей итерации ` lapply().


Второй Edit:

В настоящее время я борюсь со следующим кодом. Я нашел еще несколько случаев, когда люди советуют точно такой же подход, который держит меня любопытно, почему он не работает в моей ситуации ...

getData <- function(x) try(read.table(bzfile(x), sep = ",", row.names = NULL)) 
data <- lapply(seq_along(links), function(i) getData(links[[i]])) 
+0

что такое 'url'? – mnel

+0

@mnel: 'url' - это URL-адрес HTTP-страницы веб-страницы для информации о репозитории проектов с открытым исходным кодом, такой как этот: http://flossdata.syr.edu/data/fc/2013/2013-Dec. –

+0

Какой пакет использует 'htmlParse'? Кроме того, вы могли бы включить скрипт, когда он печатает, так, например, ясно, где именно происходит ошибка (на первой или второй строке)? Благодарю. –

ответ

0

Я был в состоянии выяснить себе причины проблем, описанных выше. Мне потребовалось много времени и усилий, но это того стоило - теперь я понимаю R lists и lapply() лучше.

По существу, я сделал три основных изменения:

1) добавлен textConnection() и readLines() для обработки CSV-файлов, таких как:

conn <- gzcon(bzfile(file, open = "r")) 
tConn <- textConnection(readLines(conn)) 

Однако, я обнаружил некоторые проблемы с этим подходом - см моих другой SO вопрос: Extremely slow R code and hanging.

2) используются правильные подписки обозначения для обозначения соответствующих элементов списка внутри из function(i) переданных lapply():

url <- links[[1]][i] 

3), используемого правильная подписка обозначения для обозначения всего списка для lapply():

data <- lapply(seq_along(links[[1]]), getData) 

Спасибо всем, кто участвовал и помог ответить на этот вопрос!

0

Саша,

попробовать этот

library(XML) 
url <- "http://flossdata.syr.edu/data/fc/2013/2013-Dec/" 
doc <- htmlParse(url) 
ndx <- getNodeSet(doc,"//table") 

Он работает как шарм.

Удачи.

С.

+0

S.! Проверьте свой адрес электронной почты. –

Смежные вопросы