V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
soulmine
V2EX  ›  Python

selenium 的滑动问题

  •  
  •   soulmine · 2016-08-22 14:22:42 +08:00 · 3652 次点击
    这是一个创建于 3015 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问一下 如果用 selenium 控制滑条用 driver.execute_script("window.scrollTo(0,1000)")这个可以实现
    但假如有个网站有 1000000 的像素长度 怎么办 也没法用 for 语句 总不能写 1000 行这个吧
    一次性划到 10000000 长度的话,会不会被 ban 了 然后由于是动态加载的,一次性话恐怕没那么快能读取出来 所以有什么好的解决方法么
    16 条回复    2016-08-23 09:27:20 +08:00
    jason52
        1
    jason52  
       2016-08-22 15:46:18 +08:00 via Android
    极验证?
    soulmine
        2
    soulmine  
    OP
       2016-08-22 16:04:34 +08:00
    @jason52 这是什么?能大概说一下么
    skydiver
        3
    skydiver  
       2016-08-22 16:35:36 +08:00
    为什么不能用 for 语句?没懂
    soulmine
        4
    soulmine  
    OP
       2016-08-22 17:23:01 +08:00
    @skydiver driver.execute_script("window.scrollTo(0,1000)" 这个是把 window.scrollTo(0,1000)当作 str 来运行的啊 在 oython 里面运行 js 脚本的 你上面写 for i in range 底下就会输出 window.scrollTo(0,i) 这不是引用啊.....
    skydiver
        5
    skydiver  
       2016-08-22 17:24:40 +08:00
    @soulmine 你不会自己拼字符串么……好笨……
    FrankFang128
        6
    FrankFang128  
       2016-08-22 17:33:17 +08:00 via Android
    这种像素高度的页面 没几个人有耐心等待加载完
    soulmine
        7
    soulmine  
    OP
       2016-08-22 17:52:35 +08:00
    @skydiver 你是说自己拼 js 字符串么....
    soulmine
        8
    soulmine  
    OP
       2016-08-22 17:53:08 +08:00
    @FrankFang128 没加载完就继续往下拉 没问题么?
    soulmine
        9
    soulmine  
    OP
       2016-08-22 17:56:48 +08:00
    @FrankFang128 试了下 拉到第一次加载中就停住了 所以一次性拉完不现实啊
    skydiver
        10
    skydiver  
       2016-08-22 17:58:18 +08:00
    @soulmine 是啊……
    soulmine
        11
    soulmine  
    OP
       2016-08-22 18:34:52 +08:00
    @skydiver 嗯 我自己找到方法了 也多谢你了
    kisnows
        12
    kisnows  
       2016-08-22 21:01:39 +08:00
    可以执行 js 语句并拿到当前页面的长度,知道了页面高度,下面就很好半了。
    soulmine
        13
    soulmine  
    OP
       2016-08-22 23:08:36 +08:00
    @kisnows 其实主要不是高度的问题 是我在纠结没法一次性拉到底的问题 后来我想到可以用 for 循环用 scroolby 拉就好了
    kisnows
        14
    kisnows  
       2016-08-22 23:15:24 +08:00
    @soulmine 你只要拿到了页面整体的高度,那么就可以一次拉到底了啊。
    ```javascript
    driver.executeScript(`document.body.scrollHeight`)
    .then(top => {
    windowHeight = top
    js = `window.scrollTo(0,${windowHeight*1.1})`
    driver.executeScript(js)
    })
    ```
    大致就是这么个意思。
    soulmine
        15
    soulmine  
    OP
       2016-08-23 00:02:47 +08:00
    @kisnows 呃 是动态刷新的了啦 就是那个评论加载中那种意味 没刷新出来没法拉的啊
    kisnows
        16
    kisnows  
       2016-08-23 09:27:20 +08:00
    @soulmine 哦,这样啊。那就只能时时检测了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1092 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:52 · PVG 02:52 · LAX 10:52 · JFK 13:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.