我正在尝试使用 R 根据字符串值导航到特定的维基百科页面。由于我没有我正在查找的关键字列表的确切 Wikipedia URL(例如,“Prog rock”作为搜索词转到以 Progressive_rock 结尾的 URL),我的想法是将关键字传递给 Google“ Feeling Lucky”搜索,然后抓取生成的 Wikipedia 页面的 HTML。
在尝试这个的过程中,我发现我在使用 R 提交任何表单时遇到问题。任何人都可以发布一个可重现的示例,用于使用 R 会话运行 Google 查询并返回首页的 HTML,或基于 Wikipedia 搜索搜索词?
我一直在使用 Hadley 出色的 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 或 Wikipedia 上没有找到有效的具体示例,而且许多示例似乎已经过时,因为 Google 更改了他们的“手气不错”搜索的格式。我还按照类似问题(通过 R 在维基百科上的 Sumbit 查询)中的建议查看了 WikipediR 包,但它似乎没有搜索功能。