我正在尝试编译https://www.mountainproject.com/中的所有攀登路线信息,他们为此提供了https://www.mountainproject.com/data的API,但是您需要知道特定的路线标识号,即(({https://www.mountainproject.com/data/get-routes?routeIds=IDNUMBER&key=PERSONAL-API-KEY “)
没有ID号列表,但它们似乎都落在105,000,000:118,000,000之内。总共应该有20万左右。
我需要一种方法来遍历所有可能的路线ID号,找出哪些是真实路线,下载数据,并将其添加到数据集(csv)
我编写了一个函数和循环来执行此操作,并且该函数和循环适用于少量可能的ID,但是对于所有13,000,000个可能的ID编号,我计算将需要一个月才能运行。
我无法以向量化的方式进行此操作,但我认为这可能是解决方案。
library(jsonlite)
#create the function to download the data
getRouteData<-function(routeID){
y<-paste0("https://www.mountainproject.com/data/get-routes?routeIds=",routeID,"&key=PERSONAL_API_KEY")
y<-as.data.frame(fromJSON(y))
#delete some unnecessary columns
y[,-(c(9:13,16))]
}
#Make an empty data frame
df <- data.frame(matrix(ncol = 10, nrow = 0))
colnames(df) <- c("routes.id","routes.name","routes.type",
"routes.rating","routes.stars","routes.starVotes",
"routes.pitches","routes.location",
"routes.longitude","routes.latitude" )
#try for just 50 possible IDs
for(i in 105759900:105759950){
try(df<-rbind(getRouteData(i),df))
}
#that works but is slow
df
那很好,但是真的很慢。感谢以其他方式来整理无关数字或加快流程的任何帮助!
答案 0 :(得分:0)
Mountain Project提供了sitemap.xml,其中列出了一组文件(sitemap0.xml.gz,sitemap1.xml.gz,sitemap2.xml.gz等),这些文件包含其网站上的所有有效链接。您可以下载这些文件并遍历有效链接以提取所需的路径ID。每个路由链接的格式为https://www.mountainproject.com/route/######/route-name-here
,其中######
是查找路由ID的位置。