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
coolloves
V2EX  ›  Python

selenium 打开网页后,仍然无法获取到关键数值,请教!

  •  
  •   coolloves · 2019-02-20 09:26:11 +08:00 · 3568 次点击
    这是一个创建于 2093 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个.net 的项目,模拟登陆,一路模拟点击到最后关键的页面,此页面是一个竞价拍卖的竞拍页面,显示当前的价格等关键数值,但是我打印了 page_resource,却看不到这些关键数值,所以导致无法获取到,这个.net 是个外包项目,之中的难处就不说了,提供支持的人都太水了,无法和他们沟通这些,我只知道这个页面最后是通过 signalR 和服务器保持通信的,不知道是否和此有关呢? 抱歉,因为是公司业务内部页面,我无法提供 url

    20 条回复    2019-02-20 20:42:07 +08:00
    linhua
        1
    linhua  
       2019-02-20 09:30:58 +08:00   ❤️ 1
    coolloves
        2
    coolloves  
    OP
       2019-02-20 09:43:08 +08:00
    @linhua 我打印了 page_resource,元素能定位到,但是关键数值 myprice 没有渲染出来

    <div class="mypricetitle">我的报价(<label class="CurrencyUnit">元</label>)</div>
    <div class="myprice"></div>
    butterfly1211
        3
    butterfly1211  
       2019-02-20 09:46:00 +08:00
    是不是浏览器加载了一些插件,在插件中显示的,.net 最喜欢搞这种东西
    cece0417
        4
    cece0417  
       2019-02-20 09:47:38 +08:00
    最后实在点不到了,可以试试用 js 点
    coolloves
        5
    coolloves  
    OP
       2019-02-20 09:54:50 +08:00
    @butterfly1211 我感觉是因为 selenium 的缘故,我直接调用 chrome,全程可以看到,都是顺利获取完成的
    应该是 selenium 无法支持获取 websocket 数据的缘故吧,不知道 pyppeteer 是否可以?

    https://groups.google.com/forum/#!topic/selenium-users/oQfUlZPB0Ck

    @cece0417 元素可以定位,只是数据不交互
    linhua
        6
    linhua  
       2019-02-20 10:06:43 +08:00
    使用 selenium 操作 chrome 时,chrome 中出现数据了吗?
    代码中 等待元素加载完成了吗?
    https://blog.csdn.net/leorx01/article/details/71086875
    Hieast
        7
    Hieast  
       2019-02-20 10:11:24 +08:00 via Android
    一种可能是缺少 js 加载的时间,
    验证方式是用 selenium 调 chrome 窗口模式直观看到页面的变化,看看有没有数据
    chenyu0x00
        8
    chenyu0x00  
       2019-02-20 10:22:36 +08:00 via Android
    应该是异步数据加载的关系吧,你可以试试打开关键页面之后,等待几秒钟再获取 page_resource
    coolloves
        9
    coolloves  
    OP
       2019-02-20 10:33:56 +08:00
    @linhua @Hieast 直接调用 chrome 是没有问题的,但是打印 page_resource 一些关键数值没有.我模拟点击报价,也点击了,但是没有事件发生.
    页面是通过 websock 通信获取数据的,应该类似股票交易那种实时交互的,
    coolloves
        11
    coolloves  
    OP
       2019-02-20 11:02:35 +08:00
    @linhua 大佬,有 python 的 demo 嘛?
    theks
        12
    theks  
       2019-02-20 13:29:49 +08:00 via Android
    你在 5 楼的想法有道理。现在有两种可能,要么是异步加载的问题,要么是 websocket 的问题。
    Raisu
        13
    Raisu  
       2019-02-20 13:32:39 +08:00 via Android
    同楼上
    coolloves
        14
    coolloves  
    OP
       2019-02-20 14:14:18 +08:00
    我把最终的页面截了个图看了下,少一些关键的数值,这些数值,都是通过 websocket 交互的,查了资料,也没结果.
    我最终其实并不是为了获取数值,我是要自动化一套完整的流程,避免人工,这个实在不知道咋搞了,最后一步卡主了...
    LeeSeoung
        15
    LeeSeoung  
       2019-02-20 15:29:32 +08:00
    建议跟踪下 ws 交互后的数据如何填充到页面上的。
    CodeCore
        16
    CodeCore  
       2019-02-20 17:52:22 +08:00
    1. iframe
    2. 延时一会等加载完毕
    3. while 一直等加载完成
    4. 我遇到的是 SS 全局代理了, 导致无法访问......我调试了一个多小时才发现....菜的无法直视
    Hieast
        17
    Hieast  
       2019-02-20 18:02:32 +08:00
    @coolloves 另外一个思路,你这个数据是需要通过交互来获取的,你能确定你模拟点击报价那个元素生效了么。
    不同的窗口页面元素有不同的排列,可能有元素挡在点击报价前面导致点击无效。
    Hieast
        18
    Hieast  
       2019-02-20 18:09:14 +08:00
    @coolloves 验证的方法是你把 chrome headless 模式关掉,在最终页面打开开发者工具,
    1. 检查元素看看有没有遮挡。
    2. 直接手动点击,看数据能不能加载出来。
    911speedstar
        19
    911speedstar  
       2019-02-20 19:29:27 +08:00
    1.sleep 一下
    2.找到生成 muprise 的 js,js2py 执行
    coolloves
        20
    coolloves  
    OP
       2019-02-20 20:42:07 +08:00
    非常感谢各位,是最开始我发现是 iframe,我就直接访问的 iframe 的 url,结果导致了,数据是原页面获取的,往 iframe 里面套.
    后来我有仔细学习了下用了 switch_to.iframe 切过去,最终搞定了,多谢以上各位朋友.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4573 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 05:35 · PVG 13:35 · LAX 21:35 · JFK 00:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.