#javascript #r #phantomjs
#javascript #r #phantomjs
Вопрос:
Я работаю в R
, но у меня есть небольшой Phantom JS
скрипт, который открывает и записывает веб-страницу в файл ( scrape_webpages.js
). Есть много веб-страниц, которые мне нужно загрузить, с именами в стандартном формате (т. Е. http://webpage.net/2018
), где последняя часть (год) меняется. Phantom JS
Скрипт принимает два аргумента, которые необходимо изменить: путь, по которому сохранить веб-страницу, и адрес веб-страницы.
Теперь я знаю, как создать цикл и выполнять итерации в течение нескольких лет, которые мне нужны для генерации адресов и путей в R
. И я могу запустить отдельный js
скрипт изнутри R
с помощью system
функции.
Но (как) я могу включить js
(с различными аргументами) скрипт в R
цикл? Альтернативно, цикл может быть реализован в самом js
скрипте, но я не знаю, как это сделать.
Спасибо за вашу помощь.
(Примечание: Я не могу делать то, что js
скрипт делает непосредственно в R
)
Комментарии:
1. Вы пробовали пакет R
webshot
, который является интерфейсом к PhantomJS API?2. взглянул на
webshot
, но, похоже, это не помогает
Ответ №1:
Хорошо, я решил это. Это немного взлом, но все еще может быть кому-то полезен:
(1) Создайте js
для первого года, за который должны быть загружены данные
(2) Запустите цикл, в котором вы:
(2a) прочитайте js
файл за предыдущий год в виде строки с readChar
(2b) измените то, что должно быть изменено в этом файле в виде строки с помощью gsub
(2c) сохраните отредактированную строку как новый .js
файл с новым именем с writeLines
(3) Запустите новый цикл, выполняющий каждый из этих js
файлов с помощью system
функции (этот последний шаг при желании может быть интегрирован в предыдущий цикл).
И вуаля!