Как запустить (изменяющий) файл JavaScript в цикле в R?

#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 функции (этот последний шаг при желании может быть интегрирован в предыдущий цикл).

И вуаля!