Как очистить карты Google для всех данных, используя python - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь почистить название, номер телефона, веб-сайт, адрес, рейтинг, количество отзывов о месте из карт Google с помощью python. Например, ресторан Pike's Landing (см. URL-адрес карт Google ниже) нуждается во всей информации. Я хочу добавить их в python.

URL: https://www.google.com/maps?cid=15423079754231040967&hl=en

Я вижу код HTML, когда я проверяю, но когда я использовал красивый суп для утилизации все коды конвертируются. Из переполнения стека я нашел решение для единственного номера проверки, как следующий код,

import re
import requests
from ast import literal_eval

urls = [
'https://www.google.com/maps?cid=15423079754231040967&hl=en',
'https://www.google.com/maps?cid=16168151796978303235&hl=en']

for url in urls:
    for g in re.findall(r'\[\\"http.*?\d+ reviews?.*?]', requests.get(url).text):
        data = literal_eval(g.replace('null', 'None').replace('\\"', '"'))
        print(bytes(data[0], 'utf-8').decode('unicode_escape'))
        print(data[1])

Но мне нужны все данные. Я могу использовать Google Maps API для актуальных данных, но получение номера телефона, рейтинга, обзора сейчас не бесплатно. Так что я хочу экранировать данные от внешнего интерфейса.

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 25 февраля 2020

Я задавал один и тот же вопрос долгое время go на Reddit. Я сам решил эту проблему, взгляните на это введите описание ссылки здесь ПРИМЕЧАНИЕ - это было строго написано, чтобы извлечь подробности для моего варианта использования, но вы можете понять суть происходящего здесь.

from selenium import webdriver

options = webdriver.ChromeOptions()

options.add_argument('headless')



browser = webdriver.Chrome(options=options)



url = "https://www.google.com/maps/place/Papa+John's+Pizza/@40.7936551,-74.0124687,17z/data=!3m1!4b1!4m5!3m4!1s0x89c2580eaa74451b:0x15d743e4f841e5ed!8m2!3d40.7936551!4d-74.0124687"

# url = "https://www.google.com/maps/place/Lucky+Dhaba/@30.653792,76.8165233,17z/data=!3m1!4b1!4m5!3m4!1s0x390feb3e3de1a031:0x862036ab85567f75!8m2!3d30.653792!4d76.818712"



browser.get(url)



# review titles / username / Person who reviews

review_titles = browser.find_elements_by_class_name("section-review-title")

print([a.text for a in review_titles])

# review text / what did they think

review_text = browser.find_elements_by_class_name("section-review-review-content")

print([a.text for a in review_text])

# get the number of stars

stars = browser.find_elements_by_class_name("section-review-stars")

first_review_stars = stars[0]

active_stars = first_review_stars.find_elements_by_class_name("section-review-star-active")

print(f"the stars the first review got was {len(active_stars)}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...