• Почему при попытке спарсить заведения из Google Maps, beautifulsoup4 не может сарсить объект и выдет ему значение None?

    zdmit
    @zdmit
    Developer Relations at SerpApi
    Google Maps работают на JS, BeautifulSoup не умеет извлекать данные из JS кода. Чтобы извлечь данные оттуда, вам нужно использовать Selenium, или извлекать данные из inline-js кода.

    Чтобы это сделать, вам необходимо достучаться до window.APP_INITIALIZATION_STATE c помощью регулярного выражения. Там вы найдете все необходимые данные:607e6ffc39288687466582.png

    Как альтернативный вариант, вы можете использовать стороннее решение 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.
    Ответ написан
    Комментировать