Я пытаюсь использовать R для перехода к определенной странице Википедии на основе строкового значения. Поскольку у меня нет точных URL-адресов в Википедии для списка ключевых слов, которые я ищу (например, «Prog rock», когда поисковый запрос переходит в URL-адрес, заканчивающийся на Progressive_rock), я решил передать ключевые слова в Google » Feeling Lucky ", а затем очистите HTML-код получившейся страницы Википедии.
В процессе этого я обнаружил, что у меня возникли проблемы с отправкой любой формы с помощью R. Может ли кто-нибудь опубликовать воспроизводимый пример выполнения запроса Google с сеансом R и возврата HTML-кода верхней страницы или поиска в Википедии на основе условия поиска?
Я использовал отличный пакет rvest от Хэдли для большей части моего парсинга веб-страниц, но не смог заставить этот аспект работать, даже используя пример, адаптированный из руководства для rvest:
goog<-html_session("https://www.google.com")
search <- html_form(html("https://www.google.com"))[[1]]
search.mod<-set_values(search, q = "My little pony")
submit_form(goog, search.mod, submit='btnI')
Что возвращает:
Error: length(url) == 1 is not TRUE
Я попробовал выполнить поиск в Википедии, и мне повезло:
url<-"http://en.wikipedia.org/wiki/Main_Page"
wiki<-html_session(url)
search.form<-html_form(wiki)[[1]]
form.mod<-set_values(search.form, search="Frank Zappa")
submit_form(wiki,form.mod,submit='go')
Что возвращает ту же ошибку. Я подозреваю, что совершаю какую-то невероятно простую ошибку, но не могу понять, что это такое.
Многие из примеров в Интернете для отправки форм поиска, похоже, используют пакеты httr, RCurl и RSelenium, но я не нашел конкретного примера в Google или Википедии, который работает, и многие из примеров кажутся устаревшими, поскольку Google изменил формат их поиска "Мне повезет". Я также посмотрел на пакет WikipediR, как это было предложено в аналогичном вопросе (Sumbit запросов в Википедии через R), но, похоже, у него нет функции поиска.