【问题标题】:How to autoscroll on split pages e.g. google maps?如何在拆分页面上自动滚动,例如谷歌地图?
【发布时间】:2018-07-17 13:14:35
【问题描述】:

正在使用 python/selenium 抓取谷歌地图(评论)。

以下内容不滚动:

self.driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")

假设这是由于类似代码在其他网站上运行过的拆分页面造成的。

我确信以前有人处理过这个问题。有什么建议吗?

【问题讨论】:

    标签: python selenium web-scraping autoscroll


    【解决方案1】:

    这是您想尝试了解如何滚动拆分窗口/屏幕的内容。 html 结构不断变化,因此您应该遵守我在下面尝试的逻辑。我已经使用硬编码延迟展示了这一点,您可以根据您的要求将其替换为 Explicit Wait。

    按原样运行:

    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    link = 'https://www.google.com.bd/maps/search/Florida+coffee/@27.604325,-80.9640709,9z/data=!3m1!4b1?hl=en'
    
    driver = webdriver.Chrome()
    driver.get(link)
    # time.sleep(3) #If the code breaks, activate this line. You should see the scroll being executed
    elem = driver.find_element_by_css_selector("[data-section-id^='or:']")
    for _ in range(2):
        elem.send_keys(Keys.END)
        time.sleep(2)
    
    driver.quit()
    

    要获取名称:

    from selenium import webdriver
    from selenium.webdriver.support import ui
    import pandas as pd
    
    link = 'https://www.google.com.bd/maps/search/Florida+coffee/@27.604325,-80.9640709,9z/data=!3m1!4b1?hl=en'
    
    driver = webdriver.Chrome()
    driver.get(link)
    wait = ui.WebDriverWait(driver, 10)
    elem = [item.text for item in wait.until(lambda driver: driver.find_elements_by_css_selector("h3.section-result-title"))]
    df = pd.DataFrame(elem)
    print(df)
    driver.quit()
    

    【讨论】:

    • 嘿@SIM,向旧线程道歉。以上是抓取评论的总代码吗?有什么方法可以将其推送到 pandas 数据框中?
    • 你是我的英雄!谢谢朋友
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多