代码之家  ›  专栏  ›  技术社区  ›  Felipe Alvarenga

下一个\u页面\u令牌在第二次尝试时不起作用(google\u places函数)

  •  1
  • Felipe Alvarenga  · 技术社区  · 6 年前

    我正在寻找星巴克的所有商店在一个给定的位置通过 googleway google_places 作用

    library(googleway)
    res <- google_places(search_string = 'starbucks in Sao Paulo SP',
                           key = my_key)
    # get second page of results
    token <- res$next_page_token
    res_next1   <- google_places(search_string = 'starbucks in Sao Paulo SP',
                             page_token    = token,
                             key = my_key)
    

    这很好,但是,当我试图获得接下来的20个结果(第3页的结果)时,我得到了以下错误

    token2<- res_next1$next_page_token
    res_next2 <- google_places(search_string = 'starbucks in Sao Paulo SP',
                         page_token    = token2,
                         key = my_key)
    Error: lexical error: invalid char in json text.
                                       https://maps.googleapis.com/map
                     (right here) ------^
    

    这个问题通过新的github版本的包解决了。

    后续问题 是在尝试在循环中访问所有页面结果时

    lool = list()
    # problem happens when searches[i] = 'starbucks in Sao Paulo, Sao Paulo'
    for(i in 1:length(searches)){
    
      j = 1 # page counter
      res <- google_places(search_string = searches[i],
                           key = key)
    
      if(is.null(res$results$name)) {cat(i, 'null\n'); next}
    
      lool[[paste0(i, '-', j)]] <- data.frame(title   = res$results$name,
                                              address = res$results$formatted_address)
      token = res$next_page_token
    
      while(!is.null(token)){
        j = j + 1
        res_n <- google_places(search_string = searches[i],
                               page_token    = token,
                               key = key)
    
        lool[[paste0(i, '-', j)]] <- data.frame(title   = res_n$results$name,
                                                address = res_n$results$formatted_address)
        token <- res_n$next_page_token
    
      }
      aa = res$status
      cat(i, j, aa, '\n')
    }
    

    使用此代码,第三页将生成

    $`html_attributions`
    list()
    
    $`results`
    list()
    
    $`status`
    [1] "INVALID_REQUEST"
    

    token <- res$next_page_token
    
      if(!is.null(token)){
        j     <- j + 1
        res_2 <- google_places(search_string = searches[i],
                               page_token    = token,
                               key = joao_key)
    
        lool[[paste0(i, '-', j)]] <- data.frame(title   = res_2$results$name,
                                                address = res_2$results$formatted_address)
        token2 <- res_2$next_page_token
        #print(j)
      }
      if(!is.null(token2)){
        j = j + 1
        res_3 <- google_places(search_string = searches[i],
                               page_token    = token,
                               key = joao_key)
    
        lool[[paste0(i, '-', j)]] <- data.frame(title   = res_3$results$name,
                                                address = res_3$results$formatted_address)
        token3 <- res_3$next_page_token
        #print(j)
      }
      if(!is.null(token3)){
        j = j + 1
        res_4 <- google_places(search_string = searches[i],
                               page_token    = token,
                               key = joao_key)
    
        lool[[paste0(i, '-', j)]] <- data.frame(title   = res_4$results$name,
                                                address = res_4$results$formatted_address)
        token4 <- res_4$next_page_token
        #print(j)
      }
    

    一切正常。我错过了什么?

    0 回复  |  直到 6 年前
    推荐文章