我正在使用gtrendsR包来提取谷歌趋势数据。我知道这个包一次最多有5个“关键字”的限制;因此我使用了一个循环来一次提取>5个“关键字”。
现在我想为多个“国家”重复这个练习,并希望结果显示“关键字”和“国家”的每一个组合的所有可能的谷歌趋势输出。
这是我使用的代码:
Country = readLines("country_list.csv")
Keyword = readLines("keyword_list.csv")
results <- list()
for (i in Keyword)
{
for (j in Country) {
time=("today 3-m")
channel='web'
trends = gtrends(keyword=i, gprop =channel,geo=j, time = time)
results [[j]] <- trends$interest_over_time
}
}
Out <- as.data.frame(do.call("rbind", results))
我一直收到错误:
类别错误(comparison_item,get_widget,gprop,hl,cookie_url,:widget$status_code == 200不是真
我在列表中有大约60个“国家”和300个“关键字”。这是不是因为无法从谷歌趋势中提取过多的数据?或者一些基本的错误
顺便说一句,我是R的基本用户;非常感谢您的帮助
发布于 2020-05-14 04:23:58
如果你只是在谷歌上搜索,服务器返回的错误代码widget$status_code == 200
通常可以很好地描述问题。在你的例子中,短时间内有太多的请求。对于keyword
中的每个i
,您都会调用服务器length(Country)
次。短时间内有很多请求&你会被阻塞的。或者在调用之间设置某种类型的超时,或者研究一些老套的擦除器方法,比如轮换头部/cookie等。
发布于 2021-04-23 00:29:29
我通过从以下位置下载gtrendsR解决了这个问题:
install.packages("remotes")
remotes::install_github("PMassicotte/gtrendsR")
(参见https://github.com/PMassicotte/gtrendsR/issues/166)
并使用以下代码
Country = readLines("states.csv")
Keyword = readLines("celebs.csv")
for (i in Keyword)
{
for (j in Country) {
time=("2018-01-01 2018-06-30")
channel='web'
trends = gtrends(keyword=i, gprop =channel,geo=j, time = time, onlyInterest = TRUE,low_search_volume = FALSE)
Sys.sleep(5)
results [[j]][[i]] <- trends$interest_over_time
}
}
https://stackoverflow.com/questions/61788486
复制相似问题