Как собирать отзывы из Google: пошаговое руководство
В этом руководстве я покажу, как собирать отзывы из Google Reviews с помощью Python, чтобы легко получать и анализировать данные из карточек компаний в Google Maps. Если вы хотите отслеживать тональность отзывов клиентов, выявлять тренды или просто собирать отзывы в больших объемах, этот простой и масштабируемый метод поможет вам справиться с задачей. Таким образом, у вас будет понятный процесс, чтобы начать собирать и извлекать полезные данные из Google Reviews и развивать бизнес.
Мало времени? Вот 3 лучших провайдера для парсинга Google Reviews без лишних хлопот:
- Яркие данные: Лидер рынка с выделенными Google Maps APIs, ротационными прокси и scraping browser, который автоматически обходит антибот-защиту. Лучший выбор для масштабирования и надежности.
- Oxylabs: Мощная инфраструктура для скрапинга с API SERP в реальном времени и обширными прокси-сетями. Отлично подходит для сбора данных корпоративного уровня.
- ScraperAPI: Простой API, который берет на себя работу с прокси, браузерами и CAPTCHA. Бюджетный вариант для небольших проектов.
👇 Хотите собрать свой собственный scraper? Читайте дальше полный Python-урок.
Что такое веб-скрейпинг?
Веб-скрапинг — это процесс извлечения данных с веб-сайтов. Он подразумевает получение содержимого веб-страницы и выделение из него нужной информации. Когда речь идет о Google Reviews, веб-скрапинг помогает компаниям собирать ценную обратную связь от клиентов о своих продуктах или услугах.
Эти данные можно использовать для анализа мнений клиентов, выявления областей для улучшения и отчетности по показателям бизнеса. С помощью парсинга Google Reviews компании могут получать представление об удовлетворенности клиентов и использовать эти данные, чтобы улучшать общий клиентский опыт и принимать обоснованные решения для роста.
Зачем парсить отзывы Google?
Google Reviews — это настоящий кладезь информации. Они дают компаниям прямую обратную связь от клиентов, которая может быть полезна по нескольким направлениям:
- Удовлетворенность клиентов: узнайте, что клиентам нравится и что не нравится в вашем бизнесе.
- Анализ конкурентов: сравнивайте отзывы по конкурентам, чтобы определить области для улучшения.
- Преимущества для SEO: положительные отзывы могут улучшить позиции вашего сайта в поисковой выдаче.
- Мониторинг бренда: следите за тем, как публика воспринимает ваш бренд.
Парсинг отзывов Google помогает компаниям получать эти инсайты в масштабе, экономя время и усилия по сравнению с ручным чтением отдельных отзывов.
Инструменты, необходимые для парсинга Google Reviews
Чтобы парсить Google Reviews, вам понадобятся следующие инструменты:
- Язык программирования: Python — один из самых популярных языков для веб-скрапинга благодаря своей простоте и мощным библиотекам.
- Библиотеки: в этом руководстве мы будем использовать такие библиотеки, как
requests,BeautifulSoup, иСелендля парсинга. BeautifulSoup помогает парсить HTML-контент веб-страницы, а Selenium справляется с сайтами, сильно зависящими от JavaScript, такими как Google Maps. - Прокси-сервисы: У Google действуют строгие меры для блокировки скраперов. Чтобы избежать блокировки, вам потребуется использовать прокси-сервисы, такие как Bright Data или Oxylabs, для ротации IP-адресов.
- Инструменты автоматизации браузера: некоторые страницы требуют взаимодействия, например нажатия кнопок или прокрутки. Selenium может автоматизировать такие действия.
Как парсить отзывы Google Reviews из одной карточки
Первый шаг — собрать отзывы с одной страницы карточки в Google Maps. Google Maps предоставляет большой объём данных, включая отзывы клиентов, оценки по звёздам и сведения об авторе отзыва.
Шаг 1: Настройте Python-окружение
Для начала убедитесь, что в системе установлен Python. Необходимые библиотеки можно установить, выполнив следующие команды:
pip install requests
pip install beautifulsoup4
pip install selenium
Шаг 2: Найдите страницу Google Reviews
URL карточки компании в Google Maps обычно выглядит так:
https://www.google.com/maps/place/{business_name}/@latitude,longitude
Откройте страницу вашей компании в Google Maps и скопируйте URL.
Шаг 3: Используйте Selenium, чтобы открыть карточку в Google Maps
Для отображения отзывов в Google Maps требуется рендеринг JavaScript, поэтому мы будем использовать Selenium, чтобы имитировать действия в браузере. Ниже приведен простой скрипт Selenium, который открывает карточку в Google Maps и нажимает вкладку с отзывами.
с сайта селен импорт webdriver
с сайта selenium.webdriver.common.by импорт По ссылке
с сайта selenium.webdriver.chrome.options импорт Опции
импорт время
# Настройте Selenium WebDriver (Selenium 4 автоматически управляет ChromeDriver)
chrome_options = Options()
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.google.com/maps/place/The Манхэттен в отеле Таймс-сквер")
# Дождитесь загрузки страницы
time.sleep(5)
# Перейдите на вкладку "Отзывы", используя гибкий селектор
reviews_tab = driver.find_element(By.XPATH, "//button[contains(@aria-label, 'Reviews')]")
reviews_tab.click()
# Подождите, пока загрузятся отзывы
time.sleep(3)
Шаг 4: прокрутите страницу, чтобы загрузить все отзывы
Google Maps использует бесконечную прокрутку внутри отдельной панели для загрузки отзывов, а не в основном окне. Чтобы собрать все отзывы, нужно имитировать прокрутку внутри контейнера с отзывами.
# Найдите прокручиваемую панель отзывов
scrollable_div = driver.find_element(By.CSS_SELECTOR, ".m6QErb.DxyBCb.kA9KIf.dS8AEf.XiKgde")
# Прокрутите панель, чтобы загрузить все отзывы
для _ в ассортимент(10): # Настройте диапазон для увеличения прокрутки
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scrollable_div)
time.sleep(2)
Шаг 5: Извлеките данные отзывов
После загрузки отзывов можно использовать BeautifulSoup, чтобы распарсить страницу и извлечь данные об отзывах. Вот пример, как получить текст отзыва, имя автора, рейтинг и дату:
с сайта bs4 импорт BeautifulSoup
# Получение источника страницы после прокрутки
html = driver.page_source
# Разбор страницы с помощью BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
# Найти все контейнеры для отзывов
отзывы = soup.find_all("div", class_="jftiEf")
# Извлечение соответствующих данных из каждого обзора
review_data = []
для обзор в отзывы:
# Имя рецензента
name_elem = review.find("div", class_="d4r55")
имя_рецензента = имя_элемента.text.strip() если имя_элемента else "Без имени"
# Текст отзыва
text_elem = review.find("span", class_="wiI7pd")
review_text = text_elem.text.strip() если text_elem else «Нет текста отзыва»
Рейтинг # (подсчет заполненных звезд)
rating_container = review.find("span", class_="hCCjke")
если rating_container:
заполненные_звезды = rating_container.find_all("span", class_="NhBTye")
рейтинг = len(заполненные_звезды)
else:
рейтинг = 0
# Дата отзыва
date_elem = review.find("span", class_="rsqaWe")
review_date = date_elem.text.strip() если дата_элемент else "Без даты"
review_data.append({
"рецензент": имя_рецензента,
"review_text": review_text,
"рейтинг": рейтинг,
"review_date": дата_обзора
})
печать(review_data)
Шаг 6: Обработайте кнопку «Ещё» для длинных отзывов
Некоторые отзывы могут быть обрезаны кнопкой «More», которая скрывает часть текста. Нажатие на эту кнопку можно автоматизировать с помощью Selenium:
# Нажмите "Подробнее", чтобы раскрыть полный текст обзора
more_buttons = driver.find_elements(By.CSS_SELECTOR, ".w8nwRe.kyuRq")
для кнопка в more_buttons:
попробуйте:
button.click()
time.sleep(0.5)
кроме:
пройти # Кнопка может быть не кликабельна или не видна
Шаг 7: Сохраните данные
После извлечения данных вы можете сохранить их в CSV, JSON или базе данных. В этом примере мы сохраним данные в JSON-файл.
импорт json
с открыть("reviews.json", "w", кодировка="utf-8") в роли файл:
json.dump(review_data, file, indent=4, ensure_ascii=Ложь)
Масштабирование процесса парсинга на несколько карточек
Теперь, когда вы научились собирать данные с одной карточки, пора масштабировать процесс на несколько карточек компаний.
Шаг 1: Извлеките несколько URL-адресов
Страницы поиска Google Maps содержат ссылки на отдельные карточки компаний. Чтобы собрать отзывы из нескольких карточек, сначала извлеките URL компаний со страницы поиска.
def извлечение_списков_урлов(search_url):
driver.get(search_url)
time.sleep(5)
# Найдите прокручиваемую панель результатов поиска
попробуйте:
scrollable_div = driver.find_element(By.CSS_SELECTOR, ".m6QErb.DxyBCb.kA9KIf.dS8AEf.XiKgde.ecceSd")
для _ в ассортимент(5):
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scrollable_div)
time.sleep(2)
кроме Исключение в роли e:
печать(f"Ошибка прокрутки: {e}")
# Извлеките URL-адреса объявлений
listing_elements = driver.find_elements(By.CSS_SELECTOR, "a.hfpxzc")
urls = [element.get_attribute("href") для элемент в listing_elements]
возврат урлы
listing_urls = extract_listing_urls("https://www.google.com/maps/search/hotels в Нью-Йорке")
печать(listing_urls)
Шаг 2: Соберите отзывы для каждой карточки
Когда у вас есть URL карточек, можно пройти по каждому адресу и собрать отзывы тем же способом, что и для одной карточки.
all_reviews = []
для url в listing_urls:
reviews = scrape_reviews(url)
all_reviews.append({
"url": url,
"отзывы": отзывы
})
# Сохраните все отзывы в файл JSON
с открыть("all_reviews.json", "w", кодировка="utf-8") в роли файл:
json.dump(all_reviews, file, indent=4, ensure_ascii=Ложь)
Обработка CAPTCHA и антискрейпинговых мер
Google использует CAPTCHA и другие антибот-механизмы, чтобы препятствовать сбору данных. Чтобы обойти эти ограничения, можно использовать сервисы вроде Bright Data или Oxylabs. Эти сервисы предоставляют ротационные прокси и решения для автоматизации браузера, позволяя собирать данные без блокировок.
Вот как использовать прокси-сервис, чтобы обходить CAPTCHA:
- Регистрация: создайте аккаунт в Bright Data или Oxylabs и получите ваш API-ключ или учётные данные для прокси.
- Настройка прокси: используйте ротационные прокси, чтобы менять IP-адреса и не попасть под блокировку.
- Интегрируйте с Selenium: настройте прокси в Selenium, чтобы направлять запросы через сервис.
с сайта selenium.webdriver.chrome.options импорт Опции
chrome_options = Options()
# Пример конфигурации прокси-сервера
прокси = "http://username:password@proxy-server:port"
chrome_options.add_argument(f'--proxy-server={proxy}')
driver = webdriver.Chrome(options=chrome_options)
Полный рабочий сценарий
Вот полный скрипт, объединяющий все шаги выше:
с сайта селен импорт webdriver
с сайта selenium.webdriver.common.by импорт По ссылке
с сайта selenium.webdriver.chrome.options импорт Опции
с сайта bs4 импорт BeautifulSoup
импорт json
импорт время
def setup_driver():
"""Установите и верните Selenium WebDriver"""
chrome_options = Options()
# chrome_options.add_argument("--headless") # Убрать комментарий для безголового режима
драйвер = webdriver.Chrome(options=chrome_options)
возврат драйвер
def scrape_reviews(driver, url):
"""Соскоб отзывов с одного объявления Google Maps"""
driver.get(url)
time.sleep(5)
# Перейдите на вкладку "Отзывы".
попробуйте:
reviews_tab = driver.find_element(By.XPATH, "//button[contains(@aria-label, 'Reviews')]")
reviews_tab.click()
time.sleep(3)
кроме Исключение в роли e:
печать(f"Не удалось нажать вкладку Reviews: {e}")
возврат []
# Прокрутите панель отзывов, чтобы загрузить другие отзывы
попробуйте:
scrollable_div = driver.find_element(By.CSS_SELECTOR, ".m6QErb.DxyBCb.kA9KIf.dS8AEf.XiKgde")
для _ в ассортимент(10):
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scrollable_div)
time.sleep(2)
кроме Исключение в роли e:
печать(f"Ошибка прокрутки: {e}")
# Нажмите все кнопки "Подробнее", чтобы развернуть усеченные отзывы
more_buttons = driver.find_elements(By.CSS_SELECTOR, ".w8nwRe.kyuRq")
для кнопка в more_buttons:
попробуйте:
button.click()
time.sleep(0.5)
кроме:
пройти
# Разбор страницы с помощью BeautifulSoup
html = driver.page_source
суп = BeautifulSoup(html, "html.parser")
# Найти все контейнеры для отзывов
отзывы = soup.find_all("div", class_="jftiEf")
review_data = []
для обзор в отзывы:
# Имя рецензента
name_elem = review.find("div", class_="d4r55")
имя_рецензента = имя_элемента.text.strip() если имя_элемента else "Без имени"
# Текст отзыва
text_elem = review.find("span", class_="wiI7pd")
review_text = text_elem.text.strip() если text_elem else «Нет текста отзыва»
Рейтинг # (подсчет заполненных звезд)
rating_container = review.find("span", class_="hCCjke")
если rating_container:
заполненные_звезды = rating_container.find_all("span", class_="NhBTye")
рейтинг = len(заполненные_звезды)
else:
рейтинг = 0
# Дата отзыва
date_elem = review.find("span", class_="rsqaWe")
review_date = date_elem.text.strip() если дата_элемент else "Без даты"
review_data.append({
"рецензент": имя_рецензента,
"review_text": review_text,
"рейтинг": рейтинг,
"review_date": дата_обзора
})
возврат обзор_данных
def извлечение_списков_урлов(драйвер, search_url):
"""Извлечение URL-адресов объявлений со страницы поиска Google Maps"""
driver.get(search_url)
time.sleep(5)
# Прокрутите, чтобы загрузить другие объявления
попробуйте:
scrollable_div = driver.find_element(By.CSS_SELECTOR, ".m6QErb.DxyBCb.kA9KIf.dS8AEf.XiKgde.ecceSd")
для _ в ассортимент(5):
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scrollable_div)
time.sleep(2)
кроме Исключение в роли e:
печать(f"Ошибка прокрутки: {e}")
# Извлечение URL-адресов листингов
listing_elements = driver.find_elements(By.CSS_SELECTOR, "a.hfpxzc")
urls = [element.get_attribute("href") для элемент в listing_elements]
возврат урлы
# Основное исполнение
если __name__ == "__main__":
driver = setup_driver()
попробуйте:
# Пример одиночного листинга
single_url = "https://www.google.com/maps/place/The Манхэттен в отеле Таймс-сквер"
отзывы = scrape_reviews(driver, single_url)
печать(f "Scraped {len(отзывы)} отзывы из одной карточки")
# Сохранить единое объявление отзывы
с открыть("single_reviews.json", "w", кодировка="utf-8") в роли файл:
json.dump(reviews, file, indent=4, ensure_ascii=Ложь)
# Пример множественных объявлений
search_url = "https://www.google.com/maps/search/hotels в Нью-Йорке"
listing_urls = extract_listing_urls(driver, search_url)
печать(f "Found {len(listing_urls)} списки")
all_reviews = []
для url в listing_urls[:5]: # Ограничение на первые 5 для демонстрации
отзывы = scrape_reviews(driver, url)
all_reviews.append({
"url": url,
"отзывы": отзывы
})
печать(f "Scraped {len(отзывы)} отзывы из {url[:50]}...")
# Сохранить все отзывы в JSON
с открыть("all_reviews.json", "w", кодировка="utf-8") в роли файл:
json.dump(all_reviews, file, indent=4, ensure_ascii=Ложь)
печать("Все отзывы сохранены в файле all_reviews.json".)
наконец-то:
driver.quit()
Справочник по селекторам CSS
Вот краткая справочная таблица по CSS-селекторам, используемым в этом руководстве:

⚠️ Важное замечание: Google часто меняет селекторы
Google регулярно обновляет имена CSS-классов и структуру страниц, часто без предупреждения. Селекторы в этом руководстве были проверены по состоянию на январь 2025 года, но они могут сломаться в любой момент.
Если ваш скрейпер внезапно перестанет работать, вам нужно будет:
- Откройте Google Maps в браузере
- Щелкните правой кнопкой мыши по элементам, которые хотите собрать
- Выберите «Inspect», чтобы открыть DevTools
- Найдите новые имена классов и обновите код
Для production-сценариев рассмотрите использование профессиональных сервисов для сбора данных, таких как Яркие данные или Oxylabs. Эти платформы предлагают:
- Готовые API для Google Maps, которые автоматически обрабатывают изменения селекторов
- Ротационные прокси для защиты от блокировок IP и CAPTCHA
- Браузеры для скрейпинга со встроенными антидетект-механизмами
- Структурированный вывод данных без необходимости самостоятельно парсить HTML
- Показатели успеха 99% даже на сильно защищенных сайтах
Хотя создание собственного скрейпера — отличное учебное упражнение, его долгосрочное сопровождение может потребовать значительных затрат времени. Профессиональные сервисы берут эти сложности на себя и позволяют сосредоточиться на использовании данных, а не на борьбе за их сбор.
Заключительные слова
Сбор отзывов Google Reviews — это ценный инструмент для бизнеса, позволяющий масштабно получать сведения об обратной связи от клиентов. Используя Python и такие библиотеки, как Selenium и BeautifulSoup, вы можете легко собирать отзывы из карточек в Google Maps. Масштабирование этого процесса на несколько карточек может дать ещё более ценные данные для вашего анализа.
Хотя сбор данных с Google связан с рядом сложностей, включая динамическую загрузку контента, бесконечную прокрутку и антибот-защиту, техники, рассмотренные в этом руководстве, помогут их преодолеть. Для задач большего масштаба или production-систем стоит рассмотреть профессиональные сервисы прокси и сбора данных, чтобы обеспечить надежность и избежать блокировок.
С помощью этого руководства вы сможете собирать отзывы из Google Reviews и использовать эти данные, чтобы повысить показатели вашего бизнеса и удовлетворенность клиентов.

