gpt4 book ai didi

javascript - 尝试使用 Python 和 Selenium 迭代地滚动和抓取网页

转载 作者:行者123 更新时间:2023-11-28 18:33:26 25 4
gpt4 key购买 nike

我最近问了一个问题(在此处引用:Python Web Scraping (Beautiful Soup, Selenium and PhantomJS): Only scraping part of full page),该问题有助于确定我在抓取滚动时动态更新的页面的所有内容时遇到的问题。但是,我仍然无法使用 selenium 整理我的代码以指向正确的元素并迭代地向下滚动页面。我还发现,当我手动向下滚动有问题的页面时,当新内容更新时,页面加载时一些原始内容消失了。例如,请看下图...

enter image description here 我已将容器与我试图在下面抓取的数据(以蓝色突出显示)作为目标。

首先,我无法选择正确的元素来向下滚动页面,因为我以前从未这样做过。我相信我必须使用 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 在这个嵌入式容器中滚动以及如何迭代向下滚动以便在滚动时动态更新时捕获容器中的所有数据的任何提示。任何额外的帮助将不胜感激。

最佳答案

从我在屏幕截图上看到的,您似乎需要迭代地滚动到表中最后一行的 View - 最后一个带有 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

您还需要弄清楚循环退出条件。

关于javascript - 尝试使用 Python 和 Selenium 迭代地滚动和抓取网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com