当前位置:  开发笔记 > 编程语言 > 正文

如何在R中获得Google Trends十大搜索字词?

如何解决《如何在R中获得GoogleTrends十大搜索字词?》经验,为你挑选了1个好方法。

在RI中,您希望从特定类别的Google趋势中获得前10个搜索字词.例如,类别autmotive的前10个搜索字词包含在此网址中:

url <- "https://www.google.com/trends/explore#cat=0-47&geo=US&cmpt=q&tz=Etc%2FGMT-1"

要检索搜索字词,我尝试了以下操作:

library("rvest")
top_searches <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@class="trends-bar-chart-name"]') %>%
  html_table()

但是,此代码会生成一个空列表(请注意,我使用Selectorgadget来计算'xpath').



1> Mirek Długos..:

这就是你需要的:

library("rvest")

url <- 'http://www.google.com/trends/fetchComponent?hl=pl&cat=0-47&geo=US&cmpt=q&tz=Etc/GMT-1&tz=Etc/GMT-1&content=1&cid=TOP_ENTITIES_0_0&export=5&w=300&h=420'

top_searches <- url %>%
  read_html() %>% 
  html_nodes(xpath='//*[@class="trends-bar-chart-name"]') %>% 
  html_text(trim=TRUE)
# [1] "Car - Transportation mode"             "Sales - Industry"                     
# [3] "Chevrolet - Automobile Company"        "Ford - Automobile Make"               
# [5] "Tire - Industry"                       "Craigslist Inc. - Advertising company"
# [7] "Truck - Truck"                         "Engine - Literature Subject"          
# [9] "Kelley Blue Book - Company"            "Toyota - Automobile Make" 

如果您对自己的方法不起作用以及如何设法解决该问题感兴趣,请继续阅读.


问题

问题是你正在寻找的不是xml_document对象.您想要的数据是动态加载的,rvest无法应对 - 它只能获取网站源代码并检索那里的任何内容,而无需任何客户端处理.作为陈述的作者rvest,在这种情况下,您必须"反向工程通信协议并直接从服务器请求原始数据"或"使用像RSelenium这样的软件包来自动化Web浏览器".

幸运的是,第一个解决方案被证明相对容易.

逆向工程Google趋势

在您链接到的Google网站上,就在您感兴趣的图表下方,有一个小图标:.点击它会为您提供HTML代码段,可用于在您自己的网站上嵌入该图表.

此代码段基本上执行JavaScript代码,该代码创建