Python и vsCode с использованием API карт Google Я скопировал программу от человека в Интернете, чтобы найти все предприятия в моем районе, но возвращенные данные не кажутся правильными.
Сначала я попытался выполнить поиск по ключевому слову, и это дало много результатов, но не тот тип бизнеса, который я хотел. Я удалил эту переменную и вместо нее использовал переменную opennow. Это дало только один результат, и это был город, в котором я искал, а не бизнес. Не могли бы вы просмотреть код и посмотреть, не ошибся ли я?
map_client = googlemaps.Client(API_KEY)
location = (54.970121, -2.101585)
distance = (1)
business_list= []
response = map_client.places_nearby(
location=location,
radius=distance,
)
business_list.extend(response.get('results'))
next_page_token = response.get('next_page_token')
while next_page_token:
time.sleep(2)
response = map_client.places_nearby(
location=location,
radius=distance,
opennow=True,
page_token=next_page_token
)
business_list.extend(response.get('results'))
next_page_token = response.get('next_page_token')
df = pd.DataFrame(business_list)
df['url'] = 'www.google.com/maps/place/?q=place_id:' + df['place_id']
df.to_excel('Toby Buisness.xlsx', index=False)`
Большое спасибо
Вы каким-либо образом храните данные в своем excel? Я надеюсь, что вы храните только идентификаторы мест или координаты (в течение 30 дней), потому что это противоречит их Условиям использования. cloud.google.com/maps-platform/terms/maps-service-terms/…






Я надеюсь, что вы найдете время, чтобы прочитать документацию Places API , а также клиентскую библиотеку Python для Google Maps, чтобы лучше понять код, который вы скопировали.
Теперь причина, по которой он возвращает только один результат, заключается в том, что у вас есть это: distance = (1). Эта переменная используется в вашем ответе как значение параметра radius в вашем map_client.places_nearby.
Если вы читали Клиентскую библиотеку Python, там написано:
радиус (целое число) — расстояние в метрах, в пределах которого смещаются результаты.
И глядя на ваш код, это означает, что ваш радиус поиска только в 1 meter. Это объясняет, почему вы возвращаете только один результат, потому что никакое другое место не находится в пределах досягаемости, кроме места в пределах его диапазона 1 метра, и если вы не указали ни одного type, конечно, он вернет название окрестности, в которой он находится. В вашем случае Hexham UK.
Поэтому я попробовал ваш код и использовал радиус 1000 meters и получил более 1 результата. Вот пример кода:
import googlemaps
map_client = googlemaps.Client('YOUR_API_KEY_HERE')
location = '54.970121, -2.101585'
distance = 1000
business_list = []
response = map_client.places_nearby(
location=location,
radius=distance,
type='restaurant'
)
business_list.extend(response.get('results'))
print(len(business_list))
Как я уже говорил, прочтите документацию, потому что параметр opennow, который вы использовали, недействителен, а правильный — open_now. Также вы можете попробовать использовать параметр type, который я использовал в своем примере, для поиска конкретных результатов.
Вот ссылка на список типов, которые вы можете использовать в поиске поблизости: Таблица 1 Типы мест.
Наконец, убедитесь, что ваш вариант использования находится в рамках их Условий обслуживания (в случае извлечения/кеширования данных Google Maps), чтобы избежать проблем с вашим приложением в будущем. Поскольку я не эксперт в области права, предлагаю вам прочитать их условия по этим ссылкам: 3.2.3 Ограничения на неправомерное использование услуг / Особые условия API Places.
Надеюсь, это поможет!
Большое спасибо, теперь у меня есть рабочий код!
Вам нужно использовать
opennow=Trueв первом запросе перед циклом.