如何逐步在 Python Selenium 中向下滚动 [英] How to scroll down in Python Selenium step by step

查看:40
本文介绍了如何逐步在 Python Selenium 中向下滚动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

browser.execute_script("window.scrollTo(0,300);")browser.find_element_by_link_text("阅读更多...").click()browser.execute_script("window.scrollTo(300,600);")browser.find_element_by_link_text("阅读更多...").click()browser.execute_script("window.scrollTo(600,900);")browser.find_element_by_link_text("阅读更多...").click()browser.execute_script("window.scrollTo(900,1200);")browser.find_element_by_link_text("阅读更多...").click()browser.execute_script("window.scrollTo(1200,1500);")browser.find_element_by_link_text("阅读更多...").click()browser.execute_script("window.scrollTo(1500,1800);")browser.find_element_by_link_text("阅读更多...").click()browser.execute_script("window.scrollTo(1800,2100);")browser.find_element_by_link_text("阅读更多...").click()browser.execute_script("window.scrollTo(2100,2500);")browser.find_element_by_link_text("阅读更多...").click()它继续......

我尝试使用 while 循环使其自动化,但结果出错,上面的方法有效,但我希望它简短且循环,以便我可以将它用于具有不同页面长度的所有其他页面.

initial_value = 0下一个值 = 300而 next_value<300000:browser.execute_script("window.scrollTo(initial_value,next_value);")browser.find_element_by_link_text("阅读更多...").click()初始值=下一个值next_value+=300

<块引用>

JavascriptException:消息:ReferenceError:initial_value 不是定义

但是我已经定义了值,我想我已经解释了我真正想要做什么,我想自动向下滚动并点击所有阅读按钮然后我会得到全文内容

解决方案

同意@Rahul Chawla 的回答.

但添加一项更改.你可以试试这个

driver = webdriver.Chrome()read_mores = driver.find_elements_by_xpath('//a[text()="阅读更多..."]')对于 read_mores 中的 read_more:driver.execute_script("arguments[0].scrollIntoView();", read_more)driver.execute_script("$(arguments[0]).click();", read_more)

Hi guys I am new to Selenium and Python. I was just scraping the site pagalguy website. I know how to scroll down to the bottom of the page but what I need is to scroll down step by step so that the Selenium will click all the readmore buttons,but I don't know how to scroll down step by step like that so I hard coded it like following one

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 .......

I tried automating it using a while loop but it resulted in error, the above one works but I want it short and looped so that I can use it for all the other pages with different page length.

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: Message: ReferenceError: initial_value is not defined

But I have defined the value, I think I explained what I am actually trying to do, I want to automatically scroll down and click all the readmore buttons and then I will get the full text content

解决方案

Agree with answer of @Rahul Chawla.

But adding one change. You can try this one

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)

这篇关于如何逐步在 Python Selenium 中向下滚动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆