【问题标题】:How can I preload this page with Selenium?如何使用 Selenium 预加载此页面?
【发布时间】:2021-12-03 17:55:26
【问题描述】:

如何预加载下面视频中显示的页面上的所有信息?该页面仅加载前 20 个应用程序,当您滚动时,它会在您到达底部时再加载 20 个,所以 20、40、60 等。有没有办法使用 selenium 预加载所有应用程序?该页面使用的是它自己的滚动条,而不是浏览器。

https://www.youtube.com/watch?v=WTVyNoQvdJs

使用此代码解决

actions = ActionChains(driver)
body = driver.find_element_by_class_name('selected_box')
body.click()
while True:
    try:
        driver.find_element_by_xpath('//*[@id="interview_list"]/div[4]/p/strong')
        break
    except:
        actions.send_keys(Keys.PAGE_DOWN)
        actions.perform()

【问题讨论】:

  • “应用程序”是指视频建议缩略图吗?
  • @LukeHamilton 通过应用程序,我指的是模糊的方块。每个方格都是申请者,并包含有关他们申请的详细信息,但页面一次只能加载 20 个。通过滚动到底部,每次到达底部时它会多加载 20 个。
  • 知道了,那我的回答应该足够了。让我了解最新情况!
  • @LukeHamilton 使用您的建议和 ActionChains 的组合解决了它,我将它添加到我的问题中,因此如果您有兴趣,您可以看看我是如何做到的!感谢您的建议!
  • 动作链是另一种实现方式。干得好!

标签: python selenium selenium-chromedriver


【解决方案1】:

这可以通过几种不同的方式完成。在这个例子中,我将通过使用 selenium 库中的 keys 函数中的 page down 命令:

from selenium.webdriver.common.keys import Keys

body = driver.find_element_by_xpath('/html/body')
body.send_keys(Keys.PAGE_DOWN)

只需将其放入 for 循环中进行特定次数的尝试,或将其嵌入到 while 循环中,直到找到所需的 XPATH。

使用 for 循环的示例

body = driver.find_element_by_xpath('/html/body')
for i in range(X):
    body.send_keys(Keys.PAGE_DOWN)

使用 while True 循环的示例

body = driver.find_element_by_xpath('/html/body')
while True:
    try:
        driver.find_element_by_xpath("DESIRED_XPATH")
        break
    except:
        body.send_keys(Keys.PAGE_DOWN)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多