Как прокрутить Карты Google с помощью селена? - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь прокрутить каждый магазин Tesco и нажать на них, чтобы извлечь из них отзывы. Это то, что я сделал на основе некоторых видео на YouTube, но функция прокрутки не работает.

from selenium import webdriver
from time import sleep


class Bot:
    def __init__(self):
        self.driver = webdriver.Chrome()
        sleep(2)

    def scroll(self):
        self.page = self.driver.get('https://www.google.com/search?safe=off&rlz=1C5CHFA_enMY850MY850&sz=0&tbm=lcl&sxsrf=ACYBGNQMWEwGPruYkSxkUeHBRcGEDUa5dg%3A1580833879546&ei=V5w5Xq36IM6d4-EPpYuwyAM&q=tesco&oq=tesco&gs_l=psy-ab.3...0.0.0.2908.0.0.0.0.0.0.0.0..0.0....0...1c..64.psy-ab..0.0.0....0.K4kkU9gZhRY#rlfi=hd:;si:;mv:[[3.2469618000000002,101.8817953],[2.7911248,101.4160326]];tbs:lrf:!1m4!1u3!2m2!3m1!1e1!1m4!1u16!2m2!16m1!1e1!1m4!1u16!2m2!16m1!1e2!2m1!1e16!2m1!1e3!3sIAE,lf:1,lf_ui:4')
        scroll_box = self.driver.execute_script("window.scrollTo(0, document.body.scrollheight)")
        initial_height, final_height = 0, 1
        while initial_height != final_height:
            initial_height = final_height
            sleep(1)
            final_height = self.driver.execute_script("""
            arguments[0].scrollTo(0, arguments[0].scrollHeight);
            return arguments[0].scrollHeight;
            """,scroll_box)


bot = Bot()
bot.scroll()

1 Ответ

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

Я бы использовал webdriver.ActionChains.move_to_element, чтобы отобразить нужный элемент.

Рассмотрим этот пример

from selenium import webdriver

STORE_URL = "https://www.google.com/maps/place/Changing+Hands+Bookstore/@34.8376524,-111.9566874,8z/data=!4m8!1m2!2m1!1sbook+stores!3m4!1s0x872b12c3cb044a61:0xfb5d1e0889caeab4!8m2!3d33.509696!4d-112.078809"

self.driver.get(STORE_URL)

review_x_path = "//*[@class='section-review ripple-container']"
reviews = self.driver.find_elements_by_xpath(review_x_path)

for review in review:
    webdriver.ActionChains(self.driver).move_to_element(review).perform()

    # extract info
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...