Javascript 尝试使用Python和Selenium以迭代方式滚动和刮取网页

Javascript 尝试使用Python和Selenium以迭代方式滚动和刮取网页,javascript,python,selenium,beautifulsoup,Javascript,Python,Selenium,Beautifulsoup,我最近问了一个问题(此处引用:),这有助于确定我在抓取一个页面的所有内容时遇到的问题,该页面在滚动时会动态更新。但是,我仍然无法使用selenium将代码整理成指向正确的元素,并以迭代方式向下滚动页面。我还发现,当我手动向下滚动有问题的页面时,当加载的页面在新内容更新时消失,一些原始内容就会消失。例如,看下面的图片 我已经用下面我试图抓取的数据瞄准了容器(以蓝色突出显示) 首先,我很难选择正确的元素来向下滚动页面,因为我以前从来没有这样做过。我相信我必须使用selenium以容器为目标,然后使

我最近问了一个问题(此处引用:),这有助于确定我在抓取一个页面的所有内容时遇到的问题,该页面在滚动时会动态更新。但是,我仍然无法使用selenium将代码整理成指向正确的元素,并以迭代方式向下滚动页面。我还发现,当我手动向下滚动有问题的页面时,当加载的页面在新内容更新时消失,一些原始内容就会消失。例如,看下面的图片

我已经用下面我试图抓取的数据瞄准了容器(以蓝色突出显示)

首先,我很难选择正确的元素来向下滚动页面,因为我以前从来没有这样做过。我相信我必须使用selenium以容器为目标,然后使用“execute_script”函数向下滚动页面,因为该表嵌入在网页主体中。然而,我似乎无法让它发挥作用

    scroll = driver.find_element_by_class_name("ag-body-viewport")
    driver.execute_script("arguments[0].scrollIntoView();", scroll)
第二,一旦我有了滚动的能力,我将需要一次向下滚动一点,并以迭代方式进行刮取。我的意思是,如果你在图像中看到,你会看到一堆的'div'标签内的 例如。。。当页面加载时,我将html传递给Beautifulsoup。我能刮到前40排。如果我向下滚动,比如说40行,我将把第40-80行传递给beautifulsoup,第1-40行将不再可用,因为数据已经动态更新了


长话短说,我想要的是能够刮取提供的图像中的所有内容,然后使用selenium向下滚动大约40行,刮取下一个40行,然后向下滚动并刮取下一个40行,以此类推。。。任何关于如何让selenium在这个嵌入式容器中滚动的提示,以及当容器在滚动时动态更新时,如何迭代向下滚动以捕获容器中的所有数据。任何额外的帮助都将不胜感激。

从我在屏幕截图上看到的情况来看,您似乎需要迭代滚动到表中最后一行的视图中,即带有
ag row
类的最后一个元素:

import time   

while True:
    rows = driver.find_elements_by_css_selector("tr.ag-row")
    driver.execute_script("arguments[0].scrollIntoView();", rows[-1])

    time.sleep(1)

    # TODO: collect the rows
您还需要确定循环退出条件