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

标签 python python-3.x selenium web-scraping web-crawler

大家好,我是 Selenium 和 Python 的新手。我只是在抓取网站 pagalguy website .我知道如何向下滚动到页面底部,但我需要的是逐步向下滚动,以便 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: Message: ReferenceError: initial_value is not defined

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

最佳答案

同意@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)

关于python - 如何逐步在 Python Selenium 中向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48006078/

相关文章:

python-3.x - 如何参数化 xpath 并将其解析为文本?

python - 如何在失败的情况下调用 py.test 中的 'debug' 方法?

python - django 一个应用一个模型多个数据库

python - 具有亚秒级(例如毫秒)分辨率的 to_datetime

Python 等待一个内部有循环的函数

python-3.x - 部署到 AWS Lambda 的 Python 包包含父文件夹名称

带有 "Position only parameter"的 Python 函数

java - 使用java的带有空格的webdriver类名

python - 查看 h2o 堆叠合奏/automl 的基本模型重要性/系数

python - pandas 应用参数没有 lambda 的函数