python - 使用 Selenium 滚动页面的有效方法

标签 python firefox selenium scroll

我目前正在使用 Python 中的 Firefox 驱动程序 Selenium 对滚动进行硬编码,无论如何它可以在页面上平滑地上下滚动吗?随着页面中图像的加载,该页面可以比正常情况大 20 倍。

我需要多次上下滚动,不要错过页面的任何部分。

当前方法效率不高,有时不会滚动到页面的某些部分。 以下是我目前的代码

 browser = webdriver.Firefox()
browser.get(link)

browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.4);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.5);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.8);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.2);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.3);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.5);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.9);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.2);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.1);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.8);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/50);")
        time.sleep(0.2)

最佳答案

如果在 Python 中使用 Selenium,您可以使用它...

scheight = .1
while scheight < 9.9:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight/%s);" % scheight)
    scheight += .01

或者类似的东西。您可以添加 if 制动器以在 while 中的特定 scheight 位置捕获数据。只需根据需要制作 += 或迭代。我使用了 .01,所以我可以直观地看到它滚动,否则你需要超时并且它会显得不稳定。取决于您的需要。

关于python - 使用 Selenium 滚动页面的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19803963/

相关文章:

python - 使用正则表达式重复匹配大写姓氏

python - 保留 BeautifulSoup 选择顺序

java - 如何使用 java 在 Selenium WebDriver 中处理 iframe

selenium - 使用 Selenium webdriver 右键单击​​并拖放

python - PLY - 添加第二个相似行时出现解析错误

python - 将十六进制字符串表示形式转换为 python 中的 float

jquery - Mootools (joomla) + jQuery + Firefox 冲突 : selector bug

javascript - jGravity(jQuery 插件)在 Firefox 中无法拖动

HTTP请求调试: Getting a complete log of all HTTP requests sent by Firefox

python - 尝试从某个跨度类中提取文本