Итак, вот текущая ситуация:
- У меня более 2000 строк кода R, который создает пару десятков текстовых файлов. Этот код выполняется менее чем за 10 секунд.
- Затем я вручную вставляю каждый из этих текстовых файлов на веб-сайт, жду ~ 1 минуту ответа веб-сайта (это большие текстовые файлы), затем вручную копирую и вставляю ответ в Excel и, наконец, снова сохраните их как текстовые файлы. Это занимает несколько часов и может привести к ошибкам пользователя.
- Затем еще ~ 600 строк кода R объединяет эти десятки текстовых файлов в один анализ. Это займет пару минут.
Я хотел бы автоматизировать шаг 2 - и я думаю, что я близок, я просто не могу заставить его работать. Вот пример кода:
library(xml2)
library(rvest)
textString <- "C2-Boulder1 37.79927 -119.21545 3408.2 std 3.5 2.78 0.98934 0.0001 2012 ; C2-Boulder1 Be-10 quartz 581428 7934 07KNSTD ;"
url <- "http://hess.ess.washington.edu/math/v3/v3_age_in.html"
balcoForm <- html_form(read_html(url))[[1]]
set_values(balcoForm, summary = "no", text_block = textString)
balcoResults <- submit_form(html_session(url), balcoForm, submit = "text_block")
balcoResults
Код запускается, и каждый раз, когда я это делаю, "balcoResults" возвращает "Status: 200". Успех! ИСКЛЮЧАЯ размер файла 0 ...
Я не знаю, в чем проблема, но я предполагаю, что текстовый блок не заполняется до отправки формы. Если я перейду на веб-сайт (http://hess.ess.washington.edu/math/v3/v3_age_in.html) и вручную отправить пустую форму, будет создана пустая веб-страница: чисто-белая, на ней ничего нет.
Проблема с этим потенциальным объяснением (и я исправляю код) в том, что я не знаю, почему текстовый блок не заполняется. Результаты set_values говорят мне, что "text_block" состоит из 120 символов. Это правильная длина для textString. Я не знаю, почему эти 120 символов не были вставлены в веб-форму.
Альтернативная возможность состоит в том, что R не ждет достаточно долго, чтобы получить ответ от веб-сайта, но это кажется менее вероятным, потому что один образец (как здесь) выполняется быстро, а код состояния ответа 200.
Вчера я прошел курс DataCamp "Работа с веб-данными в R." Я изучил GET и POST из пакета httr, но я не знаю, как отделить ответ GET, чтобы изменить форму, а затем отправить его с помощью POST. Я подумал о том, чтобы попробовать пакет RSelenium, но, судя по тому, что я читал, мне нужно было загрузить и установить «Selenium Server». Это меня пугает, но я, вероятно, смог бы это сделать - если бы был уверен, что RSelenium решит мою проблему. Когда я смотрю в CRAN на имена функций в пакете RSelenium, неясно, какие из них мне помогут. Без твердых знаний о том, как RSelenium решит мою проблему, или даже если бы это было так, это кажется плохой окупаемостью требуемых временных затрат. (Но если бы вы, ребята, сказали мне, что это правильный путь и какие функции использовать, я был бы счастлив сделать это.)
Я исследовал SO на предмет исправлений, но ни одна из найденных мною публикаций не помогла. Я посмотрел здесь, здесь и здесь, чтобы перечислить три.
Какие-либо предложения?