Вопрос по r – Как оптимизировать очистку с помощью getURL () в R

6

Я пытаюсь вычеркнуть все законопроекты с двух страниц на сайте нижней палаты французского парламента. Страницы охватывают 2002-2012 годы и представляют менее 1000 счетов каждая.

Для этого я ломаюgetURL через этот цикл:

b <- "http://www.assemblee-nationale.fr" # base
l <- c("12","13") # legislature id

lapply(l, FUN = function(x) {
  print(data <- paste(b, x, "documents/index-dossier.asp", sep = "/"))

  # scrape
  data <- getURL(data); data <- readLines(tc <- textConnection(data)); close(tc)
  data <- unlist(str_extract_all(data, "dossiers/[[:alnum:]_-]+.asp"))
  data <- paste(b, x, data, sep = "/")
  data <- getURL(data)
  write.table(data,file=n <- paste("raw_an",x,".txt",sep="")); str(n)
})

Есть ли способ оптимизироватьgetURL() функционировать здесь? Я не могу использовать одновременную загрузку, передавasync=TRUE опция, которая дает мне одну и ту же ошибку каждый раз:

Error in function (type, msg, asError = TRUE)  : 
Failed to connect to 0.0.0.12: No route to host

Есть идеи? Спасибо!

Хорошо. Ну, я не могу измениться к тому, какgetURL() работает до сих пор. Fr.
async=TRUE это уже значение по умолчанию, если вы даете несколько URL-адресов - но открытие более 500 одновременных подключений к одному и тому же веб-сайту может быть не очень хорошей идеей ... Vincent Zoonekynd

Ваш Ответ

2   ответа
1

"mclapply is a parallelized version of lapply, it returns a list of the same length as X, each element of which is the result of applying FUN to the corresponding element of X." (http://www.rforge.net/doc/packages/multicore/mclapply.html)

Если это не сработает, вы можете получить более высокую производительность, используяXML пакет. Такие функции, как xmlTreeParse, используют асинхронный вызов.

"Note that xmlTreeParse does allow a hybrid style of processing that allows us to apply handlers to nodes in the tree as they are being converted to R objects. This is a style of event-driven or asynchronous calling." (http://www.inside-r.org/packages/cran/XML/docs/xmlEventParse)

Error: User Rate Limit Exceeded Fr.
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededmclapplyError: User Rate Limit ExceededXMLError: User Rate Limit ExceededgetURLError: User Rate Limit ExceededhtmlParse? Fr.
-4

ать что-то уже разработанное для этой задачи. У меня были хорошие результаты благодаря дополнению браузера Down Them All. Просто скажите ему, с чего начать, как глубоко зайти, какие шаблоны следовать и куда вывести дамп HTML.

Затем используйте R для чтения данных из файлов HTML.

Преимущества огромны - эти надстройки разработаны специально для этой задачи, поэтому они будут выполнять несколько загрузок (контролируемых вами), они будут отправлять правильные заголовки, поэтому ваш следующий вопрос не будет «как установить строку агента пользователя» с RCurl? ', и они могут справиться с повторной попыткой, когда некоторые из загрузок не удаются, что они неизбежно делают.

Конечно, недостаток состоит в том, что вы не можете легко запустить этот процесс автоматически, и в этом случае вам, возможно, будет лучше использовать curl. в командной строке или какой-либо другой утилите зеркального отображения командной строки.

Честно говоря, у вас есть дела поважнее, чем писать код сайта на R ...

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Fr.
Error: User Rate Limit ExceededcurlError: User Rate Limit Exceeded Fr.

Похожие вопросы