Google Maps работают на JS, BeautifulSoup не умеет извлекать данные из JS кода. Чтобы извлечь данные оттуда, вам нужно использовать Selenium, или извлекать данные из inline-js кода.
Чтобы это сделать, вам необходимо достучаться до
window.APP_INITIALIZATION_STATE
c помощью регулярного выражения. Там вы найдете все необходимые данные:
Как альтернативный вариант, вы можете использовать стороннее решение
Google Maps API от SerpApi. Это платная API с триалкой и лимитом в 5,000 поисковых запросов.
Пример использования SerpApi и Python + Google Maps Place Results API:
import os, json
from serpapi import GoogleSearch
params = {
"engine": "google_maps",
"type": "place",
"google_domain": "google.com",
"q": "Coffee",
"ll": "@55.7817589,37.3439227,11z",
"data":"!3m1!4b1!4m5!3m4!1s0x46b54a6a2d1fa48b:0x48626c54fae83fbd!8m2!3d55.7699605!4d37.6207588",
"api_key": os.getenv("API_KEY"),
}
search = GoogleSearch(params)
results = search.get_dict()
print(json.dumps(results['place_results'], indent=2, ensure_ascii=False))
JSON output:
...
[
{
"title": "Black Star Burger",
"rating": 4.2,
"reviews": 5201,
"price": "$$"
}
]
...
Я работаю на SerpApi.