Оглавление
Из-за различных защит (Recaptcha, динамическое содержимое, проверка IP и т.д.), скраппинг Google Maps на чистом python является сложной задачей, даже если у вас есть опыт в этой области. К счастью, существует множество инструментов, которые вы можете использовать для скраппинга отзывов на python или любом другом языке программирования.
В этой статье вы познакомитесь с двумя наиболее распространенными инструментами для соскабливания Google Maps: эмуляцией браузера и Outscraper API. Этого руководства должно быть достаточно для извлечения данных как для отдельных пользователей, так и для команд по работе с большими данными.
Соскоб Google Places в Пайхтоне
Вы можете попробовать скрапить Google с помощью чистого python, но в течение 10 запросов вы увидите, что ваша программа заблокирована. Это происходит потому, что Google проверяет сессии и ожидает, что JavaScript выполнит некоторые вызовы API в фоновом режиме. Поэтому, чтобы Google Maps не заблокировал наш краулер, необходимо использовать эмуляцию браузера. Кроме того, вы можете использовать прокси-серверы.
Чтобы приступить к созданию скрепера google maps с эмуляцией браузера, выполните шаги, описанные в этом руководстве Как соскабливать карты Google с помощью Python и Selenium.
Скрап Google Places на Python за 6 минут
Разработка скрепера Google Maps и его поддержка могут потребовать большого количества времени и усилий. Поэтому многие инженерные команды считают выгодным сосредоточиться на своей основной области и использовать платформу Outscraper в качестве надежного источника данных для своих приложений.
Скрап Google Maps с помощью SDK
1. Вам понадобятся python3 + и этот пакет Python. Установите пакет, выполнив следующую команду.
pip install google-services-api
2. Получите свой ключ API от страница профиля.
3. Импортируйте пакет и инициализируйте его ключом. Укажите запросы для запуска поиска следующим образом "Рестораны поблизости Лос-Анджелес, США.” Используйте страны и города внутри каждого запроса.
from outscraper import ApiClient
api_cliet = ApiClient(api_key='KEY_FROM_OUTSCRAPER')
response = api_cliet.google_maps_search(
'Restaurants near Los Angeles, USA',
language='en',
region='es',
limit=100
)
4. Подождите несколько секунд, пока данные не будут получены.
[
{
"name": "Sushi Gen",
"full_address": "422 E 2nd St, Los Angeles, CA 90012",
"borough": "Little Tokyo",
"street": "422 E 2nd St",
"city": "Los Angeles",
"postal_code": "90012",
"country_code": "US",
"country": "United States of America",
"us_state": "California",
"state": "California",
"plus_code": null,
"latitude": 34.0466917,
"longitude": -118.2385444,
"time_zone": "America/Los_Angeles",
"site": "http://www.sushigen-dtla.com/",
"phone": "+1 213-617-0552",
"type": "Sushi restaurant",
"subtypes": "Sushi restaurant, Japanese restaurant",
"posts": null,
"rating": 4.6,
"reviews": 1244,
"reviews_data": null,
"photos_count": 1261,
"google_id": "0x80c2c63850150b9d:0x96cdcf9a38a24170",
"place_id": "ChIJnQsVUDjGwoARcEGiOJrPzZY",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJnQsVUDjGwoARcEGiOJrPzZY&q=Restaurants+near+Los+Angeles,+USA&authuser=0&hl=en&gl=US",
"reviews_id": "-7580174336512605840",
"photo": "https://lh5.googleusercontent.com/p/AF1QipMtt0bMtJTF1bDTZ2tbXuWXtZTNWmvjJUu3ejKy",
"working_hours_old_format": "Monday: Closed | Tuesday: 11AM\u20132PM,5\u20137:30PM | Wednesday: 11AM\u20132PM,5\u20137:30PM | Thursday: 11AM\u20132PM,5\u20137:30PM | Friday: 11AM\u20132PM,5\u20138PM | Saturday: 4\u20138PM | Sunday: Closed",
"working_hours": {
"Monday": "Closed",
"Tuesday": "11AM\u20132PM,5\u20137:30PM",
"Wednesday": "11AM\u20132PM,5\u20137:30PM",
"Thursday": "11AM\u20132PM,5\u20137:30PM",
"Friday": "11AM\u20132PM,5\u20138PM",
"Saturday": "4\u20138PM",
"Sunday": "Closed"
},
"business_status": "OPERATIONAL",
"about": {
"Service options": {
"Takeout": true,
"Delivery": false
},
"Health & safety": {
"Mask required": true
},
"Highlights": {
"Great tea selection": true
},
"Popular for": {
"Lunch": true,
"Dinner": true,
"Solo dining": true
},
"Accessibility": {
"Wheelchair accessible entrance": true
},
"Offerings": {
"Healthy options": true,
"Small plates": true
},
"Dining options": {
"Dessert": true
},
"Amenities": {
"High chairs": true
},
"Atmosphere": {
"Casual": true,
"Cozy": true
},
"Crowd": {
"Groups": true,
"Tourists": true
},
"Planning": {
"Dinner reservations recommended": true,
"Accepts reservations": true,
"Usually a wait": true
}
},
"range": "$$$",
"reviews_per_score": {
"1": 25,
"2": 14,
"3": 52,
"4": 291,
"5": 862
},
"reserving_table_link": null,
"booking_appointment_link": null,
"owner_id": "100930306416993024046",
"verified": true,
"owner_title": "Sushi Gen",
"owner_link": "https://www.google.com/maps/contrib/100930306416993024046",
"location_link": "https://www.google.com/maps/place/Sushi+Gen/@34.0466917,-118.2385444,14z/data=!4m8!1m2!2m1!1sSushi+Gen!3m4!1s0x80c2c63850150b9d:0x96cdcf9a38a24170!8m2!3d34.0466917!4d-118.2385444"
},
{
"name": "Water Grill",
"full_address": "544 S Grand Ave, Los Angeles, CA 90071",
"borough": "Financial District",
"street": "544 S Grand Ave",
"city": "Los Angeles",
"postal_code": "90071",
"country_code": "US",
"country": "United States of America",
"us_state": "California",
"state": "California",
"plus_code": null,
"latitude": 34.0490403,
"longitude": -118.25470659999999,
"time_zone": "America/Los_Angeles",
"site": "https://www.watergrill.com/la",
"phone": "+1 213-891-0900",
"type": "Seafood restaurant",
"subtypes": "Seafood restaurant",
"posts": null,
"rating": 4.4,
"reviews": 1387,
"reviews_data": null,
"photos_count": 1429,
"google_id": "0x80c2c7b4901ce7c7:0x2ad996c9a82b097c",
"place_id": "ChIJx-cckLTHwoARfAkrqMmW2So",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJx-cckLTHwoARfAkrqMmW2So&q=Restaurants+near+Los+Angeles,+USA&authuser=0&hl=en&gl=US",
"reviews_id": "3087664812393171324",
"photo": "https://lh5.googleusercontent.com/p/AF1QipPX7-DP07mvQQSxDjDjuOVYj9HlQ2bvNJ_EEZYW",
"working_hours_old_format": "Monday: 11:30AM\u20139PM | Tuesday: 11:30AM\u20139PM | Wednesday: 11:30AM\u20139PM | Thursday: 11:30AM\u20139PM | Friday: 11:30AM\u201310PM | Saturday: 4\u201310PM | Sunday: 4\u20139PM",
"working_hours": {
"Monday": "11:30AM\u20139PM",
"Tuesday": "11:30AM\u20139PM",
"Wednesday": "11:30AM\u20139PM",
"Thursday": "11:30AM\u20139PM",
"Friday": "11:30AM\u201310PM",
"Saturday": "4\u201310PM",
"Sunday": "4\u20139PM"
},
"business_status": "OPERATIONAL",
"about": {
"Service options": {
"Takeout": true,
"Dine-in": true,
"Delivery": false
},
"Health & safety": {
"Mask required": true,
"Staff wear masks": true,
"Staff get temperature checks": true,
"Staff required to disinfect surfaces between visits": true
},
"Highlights": {
"Great dessert": true
},
"Popular for": {
"Lunch": true,
"Dinner": true,
"Solo dining": true
},
"Accessibility": {
"Wheelchair accessible entrance": true,
"Wheelchair accessible seating": true
},
"Offerings": {
"Alcohol": true,
"Beer": true,
"Cocktails": true,
"Coffee": true,
"Hard liquor": true,
"Healthy options": true,
"Late-night food": true,
"Small plates": true,
"Vegetarian options": true,
"Wine": true
},
"Dining options": {
"Lunch": true,
"Dinner": true,
"Dessert": true,
"Seating": true
},
"Amenities": {
"Bar onsite": true,
"High chairs": true,
"Restroom": true,
"Wi-Fi": true
},
"Atmosphere": {
"Cozy": true,
"Romantic": true,
"Upscale": true
},
"Crowd": {
"Family-friendly": true,
"Groups": true,
"Tourists": true
},
"Planning": {
"Lunch reservations recommended": true,
"Dinner reservations recommended": true,
"Accepts reservations": true
}
},
"range": "$$$",
"reviews_per_score": {
"1": 27,
"2": 32,
"3": 97,
"4": 408,
"5": 823
},
"reserving_table_link": "https://www.watergrill.com/la#RESERVATIONS",
"booking_appointment_link": "https://www.watergrill.com/la#RESERVATIONS",
"owner_id": "116715188720123884576",
"verified": true,
"owner_title": "Water Grill",
"owner_link": "https://www.google.com/maps/contrib/116715188720123884576",
"location_link": "https://www.google.com/maps/place/Water+Grill/@34.0490403,-118.25470659999999,14z/data=!4m8!1m2!2m1!1sWater+Grill!3m4!1s0x80c2c7b4901ce7c7:0x2ad996c9a82b097c!8m2!3d34.0490403!4d-118.25470659999999"
},
...
]
Пакет Python ► https://pypi.org/project/google-services-api
API Google Maps Places ► https://outscraper.com/google-maps-api
Видеоурок
Часто Задаваемые Вопросы
Наиболее частые вопросы и ответы
Из-за различных защит (Recaptcha, динамическое содержимое, проверка IP и т.д.) скраппинг Google Maps на чистом python является сложной задачей. По этой причине можно использовать сервисы, предлагающие такие решения, как Outscraper.
SDK Python что позволяет использовать Услуги Outscraper а также API Outscraper. Таким образом, вы можете соскабливать данные Google Maps в Python.
Все места на Google Maps могут быть соскоблены с помощью Outscraper Google Places API. Все данные, относящиеся к этому местоположению, перечислены и могут быть экспортированы.
С помощью Outscraper Google Maps Reviews API скраппинг отзывов может быть выполнен с помощью Python и других языков кодирования.
Скраппинг выполняется в 5 этапов:
1. Вам понадобится Python 3+ и пакет Python. Установите пакет.
2. Получите ключ API на странице профиля Outscraper.
3. Импортируйте пакет и инициализируйте его с помощью ключа.
4. Укажите местоположение, указав ссылку, идентификатор места или имя.
5. Подождите несколько секунд, пока не будут получены отзывы.
0 Комментарии