Возвращает все уникальные места, соответствующие поисковому запросу из Google cloud API / googleway

#r #googleway

#r #googleway

Вопрос:

Мне нужно получить все данные Google Maps по каждому продуктовому магазину / рынку / мини-маркету в указанном районе.

Используя googleway пакет, я могу получить доступ к API и получить до 60 результатов (20 одновременно). Однако, что, если есть более 60 мест, которые соответствуют моему запросу? Другими словами, как я могу быть уверен, что я ничего не пропустил?

К сожалению, вы не можете повторить это без ключа API, извините за это.

 suppressPackageStartupMessages(require(tidyverse))
suppressPackageStartupMessages(require(googleway))

set_key("your key here")

#Center of Guilford County, NC:
guilford <- c(36.086046, -79.796661)


reslst <- lst()
last_token <- NULL



  for(i in 1:3) {

    res <- google_places(location = guilford, 
                         radius = 30000,
                         place_type = "grocery_or_supermarket",
                         page_token = last_token)

    results <- res$results

    Sys.sleep(time = 3)

    last_token <- res$next_page_token

    reslst[[i]] <- results %>% select(id, name, place_id, price_level, rating, user_ratings_total, types) %>% as_tibble() %>% add_column(iter = i)

  }

all_results <- bind_rows(reslst)
  

Комментарии:

1. Ошибка не превышает 60, это просто ограничение, установленное Google API. Если вы продолжите, вы просто получите повторяющиеся результаты.

2. Возможно, вы можете проверять nrow(results) на каждом шаге с помощью while цикла и расширять i , пока не останется еще несколько строк. Я не могу это проверить, поскольку у меня нет учетной записи для выставления счетов

3. @akrun Я пытался это сделать — после 3 страниц (60 результатов) Google продолжает выдавать полный список результатов, но они являются дубликатами предыдущих результатов.