Отправить в Google или Википедию Форма поиска, используя R
Я пытаюсь использовать R для перехода к определенной странице Википедии на основе строкового значения. Поскольку у меня нет точных URL-адресов в Википедии для списка ключевых слов, которые я ищу (например, "Prog rock", когда поисковый запрос переходит к URL-адресу, заканчивающемуся в Progressive_rock), я думал о том, чтобы передать ключевые слова в Google ". "Чувствую себя счастливчиком", а затем поищите 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), но, похоже, у него нет функции поиска.
1 ответ
Чтобы выполнить поиск в Википедии или Google, вам не нужно html_form
так как они оба предоставляют способ передать запрос в URL. Например, если вы ищете "яблоко" в Википедии, просто введите
http://en.wikipedia.org/wiki/Special:Search/apple
Это перенаправит на страницу яблока, поскольку есть страница с этим именем.
http://en.wikipedia.org/wiki/Special:Search/Prog_rock
также найдет нужную страницу, так как имеется автоматическое перенаправление.
Если вы ищете "Progressiv Rock", он не найдет ни одной страницы, но покажет некоторые предложения, которые вы можете попробовать проанализировать: