gpt4 book ai didi

python - 无法使分屏滚动到底部

转载 作者:太空狗 更新时间:2023-10-29 22:24:31 27 4
gpt4 key购买 nike

我结合 selenium 在 python 中编写了一个脚本,使网页的屏幕向下滚动。内容位于左侧窗口内。如果我向下滚动,则会看到更多项目。我尝试了以下方法,但它似乎不起作用。对此的任何帮助将不胜感激。

看看这个:website link .

到目前为止我尝试过的:

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys


driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("find_the_link_above")

elem = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#pannello-espositori .luogo")))

for item in range(3):
elem.send_keys(Keys.END)
time.sleep(3)

driver.quit()

当我执行上面的脚本时,它抛出异常can't focus element

最佳答案

试试这个。您可以通过向上滚动到左侧面板中的元素来查看滚动效果。

此解决方案将向上滚动到前 100 个元素。

from selenium import webdriver
import time

def scroll_element_into_view(element):
driver.execute_script(
"arguments[0].scrollIntoView(true);",
element)
time.sleep(0.2) #increase/decrease time as you want delay in your view

driver = webdriver.Chrome()
driver.maximize_window()
driver.set_page_load_timeout(5)
try:
driver.get("http://catalogo.marmomac.it/it/cat")
time.sleep(3)
total_elems= driver.find_elements_by_css_selector(".scroller .elemento")
print len(total_elems)
for i in range(len(total_elems)):
scroll_element_into_view(total_elems[i])
except Exception as e:
print e
finally:
driver.quit()

正如您所提到的,滚动后它会加载更多元素。下面的脚本也会处理这个问题。在这里我们可以使用已经显示在面板顶部的总计数。

前计数是:1669

  1. 首先它会从 1 滚动到 100 个元素
  2. 再次求元素总数,现在是 150
  3. 所以它会从 101 滚动到 150
  4. 再次求元素总数,现在是 200
  5. 所以它会从 150 滚动到 200

这个过程会一直持续到 1669 元素。 (将先前的计数存储在一个变量中并在每次循环后更新它)

try:
driver.get("http://catalogo.marmomac.it/it/cat")
time.sleep(3)
total_elems=0
total_count = int(driver.find_element_by_css_selector(".totali").text)
while total_elems<total_count:
elems= driver.find_elements_by_css_selector(".scroller .elemento")
found_elms= len(elems)
for i in range(total_elems,found_elms):
scroll_element_into_view(elems[i])
total_elems=found_elms
except Exception as e:
print e
finally:
driver.quit()

关于python - 无法使分屏滚动到底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49699973/

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