Отправить в 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", он не найдет ни одной страницы, но покажет некоторые предложения, которые вы можете попробовать проанализировать:

http://en.wikipedia.org/wiki/Special:Search/Progressiv_rock

Другие вопросы по тегам