javascript - phantomjs 不使用 window.scollTo 向下滚动

标签 javascript python selenium web-scraping phantomjs

所以我使用 selenium/phantomjs 中最基本的方法来执行向下滚动操作。 代码看起来一切都很好,但行不通。 我尝试打印“document.body.scrollHeight”,每次滚动后它都保持不变。 (例如高度保持在10532)

我正在浏览某个人的 Twitter 页面,例如“twitter.com/XXXXX”

任何人都可以给我一个提示,告诉我我可以在这里做什么吗?

我使用的网络驱动程序是 phantomjs

代码如下:

def getfullpage(url):
    print "getting fullpage..."
    driver.get(url)
    time.sleep(2)
    reloads = 3000
    pause = 0
    driver.save_screenshot("what'shappening.jpg")
    for times in range(reloads):
        driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
        time.sleep(pause)
        newheight = driver.execute_script("return document.body.scrollHeight")
        print newheight
    page = driver.page_source.encode("utf-8","ignore")
    return page

最佳答案

我会等待滚动高度增加并使用document.documentElement.scrollHeight来代替:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.PhantomJS()
wait = WebDriverWait(driver, 20)

driver.get("https://twitter.com/barackobama")
time.sleep(1)

# scroll the height
height = driver.execute_script("var h=document.documentElement.scrollHeight; window.scrollTo(0, h); return h;")

# wait for the scroll height to increase
wait.until(lambda drv: drv.execute_script("return document.documentElement.scrollHeight;") > height)

# display the final scroll height
print driver.execute_script("return document.documentElement.scrollHeight;")

关于javascript - phantomjs 不使用 window.scollTo 向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610829/

相关文章:

javascript - 我如何使用 jQuery 来确定点击事件是否在特定元素内触发?

python - 从其他列表创建列表的更简单方法

java - 如何使用 Java 处理 Selenium Webdriver 中的 HTTP Basic Auth header ?

python - 在 Selenium 中找到该元素的最佳方法?

extjs - 如何在Selenium中使用EXTJS生成的ext-gen ID?

javascript - 使用单引号将参数传递给函数

javascript - Highchart 十字准线不接触 x 轴

javascript - Jquery Position 在第一次通话时不兑现

python - 向量化 Numpy 中的操作

python 单元测试 assertRaises