【问题标题】:Scroll a particular section of webpage using selenium python使用 selenium python 滚动网页的特定部分
【发布时间】:2021-03-27 00:46:27
【问题描述】:

我们如何使用 selenium python 在网页的特定部分向下滚动直到结束?

示例:

网页:https://www.google.com/maps/search/Chemists+in+varanasi+district

在打开页面时,默认情况下,左侧面板中只有 7 个列表(也可以在 inspect html 中看到),但当我们向下滚动时,它会加载更多列表,直到列出所有 20 个列表。

尝试了下面列出的多种方法,但都没有奏效:

elem = driver.find_element_by_class_name('section-scrollbox')
(Basically getting the left pane element based on class name)
elem.send_keys(Keys.PAGE_DOWN)
driver.execute_script("arguments[0].scrollBy(0, 10000)", elem)
driver.execute_script('document.getElementsByClassName("section-scrollbox").scrollDown += 1000')

【问题讨论】:

    标签: python html selenium selenium-webdriver


    【解决方案1】:
    driver.execute_script('document.querySelector(\'[aria-label="Results for Chemists in varanasi district"]\').scrollBy(0,1000)')
    

    你应该在完整的滚动条元素上滚动

    【讨论】:

    • 谢谢。那是移动滚动条,但仍然没有完全解决问题,因为在运行上述命令后,新元素被加载,但按类名查找元素仍然返回 7 个元素。 while(True): driver.execute_script('document.querySelector(\'[aria-label="Results for Chemists in varanasi district"]\').scrollBy(0,1000)') print(len(driver.find_elements_by_class_name("place-result-container-place-link"))) 这总是打印 7。
    • 但奇怪的是,当我切换到 selenium 打开的浏览器并回到 jupyter 笔记本并运行 print(len(driver.find_elements_by_class_name("place-result-container-place-link"))) 时。然后它返回 14 并再次执行相同的操作,它返回 20。不知道为什么会这样。
    猜你喜欢
    • 2023-01-23
    • 2017-12-15
    • 2018-09-20
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多