如何逐步在 Python Selenium 中向下滚动

新手上路,请多包涵

大家好,我是 Selenium 和 Python 的新手。我只是在抓取网站 pagalguy 网站。我知道如何向下滚动到页面底部,但我需要的是逐步向下滚动,以便 Selenium 将单击所有阅读更多按钮,但我不知道如何像这样逐步向下滚动我硬编码如下一个

browser.execute_script("window.scrollTo(0,300);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(300,600);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(600,900);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(900,1200);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(1200,1500);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(1500,1800);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(1800,2100);")
browser.find_element_by_link_text("Read More...").click()

browser.execute_script("window.scrollTo(2100,2500);")
browser.find_element_by_link_text("Read More...").click()
it goes on .......

我尝试使用 while 循环使其自动化,但它导致了错误,上面的工作正常,但我希望它简短且循环,以便我可以将它用于具有不同页面长度的所有其他页面。

 initial_value = 0
next_value = 300
while next_value<300000:
  browser.execute_script("window.scrollTo(initial_value,next_value);")
  browser.find_element_by_link_text("Read More...").click()
  initial_value=next_value
  next_value+=300

JavascriptException:消息:ReferenceError:未定义初始值

但是我已经定义了值,我想我已经解释了我实际想要做的事情,我想自动向下滚动并单击所有阅读更多按钮然后我将获得全文内容

原文由 venkat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 663
2 个回答

同意@Rahul Chawla 的回答。

但是增加了一个变化。你可以试试这个

driver = webdriver.Chrome()

read_mores = driver.find_elements_by_xpath('//a[text()="Read More..."]')

for read_more in read_mores:
    driver.execute_script("arguments[0].scrollIntoView();", read_more)
    driver.execute_script("$(arguments[0]).click();", read_more)

原文由 Chanda Korat 发布,翻译遵循 CC BY-SA 3.0 许可协议

将循环与 javascript window.scrollBy(0, Y) 方法一起使用,坐标选择移动步骤和迭代次数。

    for i in range(20): # adjust integer value for need
       # you can change right side number for scroll convenience or destination
       driver.execute_script("window.scrollBy(0, 250)")
       # you can change time integer to float or remove
       time.sleep(1)

原文由 Mindaugas Vaitkus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题