CoderCastrov logo
CoderCastrov
Парсер

Парсинг данных с Google карт с использованием Python

Парсинг данных с Google карт с использованием Python
просмотров
2 мин чтение
#Парсер

Это пошаговое руководство по парсингу отзывов с Google карт с использованием Python.

Предварительные требования: Установка драйвера Chrome на вашей системе.

Прежде чем начать использовать этот скрипт, вам понадобится драйвер Chrome для выполнения скрипта. Вы можете скачать драйвер Chrome здесь.

Примечание!!: Убедитесь, что версия вашего драйвера Chrome совместима с версией Chrome.

Добавьте путь к вашему драйверу Chrome, это может выглядеть как c://user/download/chromedriver.exe


Импорт библиотек

from selenium import webdriver                       
from bs4 import BeautifulSoup                       
import time                       
import io                       
import pandas as pd

Добавьте ссылку на магазин или место в Google Maps для парсинга.

Скопируйте и вставьте URL в следующий код.

URL может выглядеть так: https://www.google.com/maps/place/Kempegowda+International+Airport+Bengaluru/@13.1986348,77.7044041,17z/data=!4m7!3m6!1s0x3bae1cfe75446265:0x296c70e9a129418e!8m2!3d13.1986348!4d77.7065928!9m1!1b1


Код

Сохраните следующий код в файл с расширением .py на вашей системе и выполните его.

from selenium import webdriver
from bs4 import BeautifulSoup
import time
import io
import pandas as pd
# добавьте путь к вашему драйверу Chrome здесь
browser = webdriver.Chrome("Путь к вашему драйверу Chrome")# добавьте ссылку на вашу карту Google, данные которой вы хотите спарсить
browser.get('https://www.google.com/maps/place/abc')
browser.maximize_window()
time.sleep(3)
content = browser.find_element_by_class_name('scrollable-show').click()
htmlstring = browser.page_source
afterstring=""
for i in range(12):
    afterstring = htmlstring
    actions.send_keys(Keys.PAGE_DOWN).perform()
    htmlstring = browser.page_source
    if (i>12):
        print ("завершение парсинга, тест номер один")
        actions.send_keys(Keys.PAGE_DOWN).perform()
        htmlstring = browser.page_source
        if (i>12):
           print ("--Конец парсинга--")
           break
    time.sleep(3)
    textdoc = io.open("data.txt", "a+", encoding="utf-8")
soup = BeautifulSoup(htmlstring,"html.parser")
mydivs = soup.findAll("div", {"class": "section-review-content"})
counter = 0
Reviwer_data ={'Имя рецензента':[],'Рейтинг рецензента':[],'URL профиля рецензента':[],'Рецензия':[],'Время':[]}
for a in mydivs:
    textdoc.write(str("\nИмя рецензента: "+a.find("div", class_="section-review-title").text)+" \n||URL профиля рецензента:"+ str(a.find("a").get('href')))
    textdoc.write(" \n||Рецензия:" + a.find("span", class_="section-review-text").text+" \n||Время: " + a.find("span", class_="section-review-publish-date").text)
    textdoc.write("\n")
    textdoc.write(str(a.find("span", class_="section-review-stars")))
    textdoc.write("=========================================\n")
    Reviwer_data['Имя рецензента'].append(a.find("div", class_="section-review-title").text)
    Reviwer_data['Рейтинг рецензента'].append(str(a.find("span", class_="section-review-stars")))
    Reviwer_data['URL профиля рецензента'].append(str(a.find("a").get('href')))
    Reviwer_data['Рецензия'].append(a.find("span", class_="section-review-text").text)
    Reviwer_data['Время'].append(a.find("span", class_="section-review-publish-date").text)
    counter = counter + 1
print("Всего спарсено рецензий:"+str(counter))
textdoc.close()
pd.DataFrame(Reviwer_data).to_csv('data.csv',index=0)

Если у вас возникнут трудности с этим скриптом, вы можете склонировать его из моего репозитория на GitHub.

Ссылка на код: нажмите здесь

Вы можете спарсить больше деталей с Google Maps, но на данный момент я спарсил Имя рецензента, Рейтинг рецензента, URL профиля рецензента, Рецензию, Время.

Скрапинг данных

Скрапинг данных выполняется в двух форматах: .txt и .csv. Вот пример скрапинга данных: