我最近编写了一个脚本,以便通过API调用查找搜索量。
这是我使用的脚本:
install.packages("SEMrushR")
library(SEMrushR)
#Data frame to append data
final_result_useo_rumbo <- data.frame()
mes_keywords_to_check <- readLines("useo_rumbo_es.txt")
mes_keywords_to_check <- as.character(mes_keywords_to_check)
#Loop in order to look for each keyword that is in my list, then return Search volume thanks to the API call and finally store it in a new database.
for (i in 1:length(mes_keywords_to_check)) {
test_keyword <- as.character(mes_keywords_to_check[i])
df_test_2 <- keyword_overview_all(test_keyword, "es","API KEY")
final_result_useo_rumbo <- rbind(final_result_useo_rumbo,df_test_2)
}
脚本运行正常,但是问题是我要检查很多关键字(800 000)。 当我为6万个关键字完成搜索时,花了将近4个小时才完成...
您知道我可以如何加快这一过程吗?有没有更好的方法来编写脚本?
答案 0 :(得分:1)
您可以尝试用for
函数替换apply
循环:
result <- sapply(mes_keywords_to_check, function(x) {
keyword_overview_all(x, "es", "API KEY")
})
然后,如果您要数据框而不是矩阵,则可以data.frame
进行上述操作:
result <- data.frame(result)
或者进行移调:
result <- data.frame(t(result))
您无需在as.character
中的每个条目上调用mes_keywords_to_check
,因为在循环之前(或调用apply
,您已经将整个矢量转换为字符了(在上述情况下,则是rbind
调用) )。另外,您可能还不需要在循环的每次迭代中调用{{1}}。相反,让R为您汇总数据,然后担心在循环/应用完成之后该怎么做。