【发布时间】:2015-02-16 03:29:14
【问题描述】:
我正在尝试使用 R 根据字符串值导航到特定的维基百科页面。由于我没有我正在查找的关键字列表的确切 Wikipedia URL(例如,“Prog rock”作为搜索词转到以 Progressive_rock 结尾的 URL),我的想法是将关键字传递给 Google“ Feeling Lucky”搜索,然后抓取生成的 Wikipedia 页面的 HTML。
在尝试此操作的过程中,我发现我无法使用 R 提交任何表单。任何人都可以发布一个可重现的示例,用于使用 R 会话运行 Google 查询并返回首页的 HTML 或维基百科根据搜索词搜索?
我一直在使用 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 上没有找到有效的具体示例,而且许多示例似乎已经过时了谷歌改变了他们“手气不错”的搜索格式。我还按照类似问题 (Sumbit queries on wikipedia through R) 中的建议查看了 WikipediR 包,但它似乎没有搜索功能。
【问题讨论】:
-
您是否也遇到过“form$fields 中的错误:$ 运算符对原子向量无效”?此消息出现在我的代码中的同一点。无论如何,这条消息确实与您的相似。不过,我也无法解决问题。
标签: r screen-scraping rvest search-engine-api