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

求教有没有网页分析的软件?能够把所有的 element 抽取出来,方便 selenium 来 find?

  •  
  •   jahan · 2017-11-19 12:11:33 +08:00 · 2678 次点击
    这是一个创建于 2563 天前的主题,其中的信息可能已经有所发展或是发生改变。
    分析 www.tradingview.com 一直找不到 sign in 的的 element,想请教下大家怎么分析网页?有没有好用的软件?
    18 条回复    2017-11-22 20:07:21 +08:00
    summerwar
        1
    summerwar  
       2017-11-19 12:14:57 +08:00
    beautifulsoup
    jahan
        2
    jahan  
    OP
       2017-11-19 12:21:23 +08:00
    @summerwar 想用 selenium 登陆这个网站,不想用 bs,有没有办法找到 sign 的 username 和 password 的输入项目
    xmcp
        3
    xmcp  
       2017-11-19 13:00:55 +08:00


    你是说这样?
    jahan
        4
    jahan  
    OP
       2017-11-19 13:53:07 +08:00
    @xmcp 这个找到了,不知道是怎么赚到登陆界面的,点击了,也没有发现如何才能找到 username 和 password 在哪里?

    新手,实在抱歉。
    jahan
        5
    jahan  
    OP
       2017-11-19 13:58:25 +08:00
    @jahan
    @xmcp
    点击了居然浏览器地址没有任何变化,而且看这个网站的登陆界面都是如何做到用户名和密码参数传递的呢?
    jahan
        6
    jahan  
    OP
       2017-11-19 13:59:21 +08:00
    有没有可视化的工具,比如我鼠标点到了那个地方,对应地方的代码就能高亮,这样比较好找?
    iiduce
        7
    iiduce  
       2017-11-19 14:01:02 +08:00
    firebug。

    这个页面 sign in 没有直接写在 html 中,所以你找不到它。

    它是通过 js 调用的,点击 sign in,并没有新的网络请求,所以 sign in 的 html 应该封装在了 js 文件中。
    jahan
        8
    jahan  
    OP
       2017-11-19 14:01:12 +08:00
    elem = driver.find_element_by_class_name('tv-header__device-signin js-header__signin')
    #elem_1 = driver.find_element_by_link_text('#signin')
    print("elem as follows:", elem)
    #print(elem_1)

    elem_2 = driver.find_element(By.CLASS_NAME, 'tv-unauth-header')
    print("elem_2 as follows:", elem_2)

    elem_3 = driver.find_element(By.CLASS_NAME, 'tv-unauth-header__text-input js-go-to-chart-field')
    print("elem_3 as follows:", elem_3)

    找到了这几个靠近这个区域的,不过觉得不是 username 和 password 的输入哈
    hcnhcn012
        9
    hcnhcn012  
       2017-11-19 14:01:25 +08:00 via iPhone
    Chrome f12 的左上角,那里有个按钮,点一下就可以用鼠标选取元素定位了
    jahan
        10
    jahan  
    OP
       2017-11-19 14:02:05 +08:00
    @iiduce 谢谢指点,那这个需要怎么办? js 也在这个网页里面吧
    jahan
        11
    jahan  
    OP
       2017-11-19 14:06:28 +08:00
    iiduce
        12
    iiduce  
       2017-11-19 14:10:21 +08:00   ❤️ 1
    @jahan 剩下的你自己研究吧,应该没有问题的。

    你的问题让我想起了工作的第一年,一些基础问题原理还没有搞明白。

    那时 V2EX 刚成立不久,这里提问被嘲笑过。所以我才来回答。
    jahan
        13
    jahan  
    OP
       2017-11-19 14:11:03 +08:00
    在这里里面的话,是不是要
    driver.get("https://www.tradingview.com/static/bundles/signin-dialog.9e33db5940f5894253d9.js ")
    password =driver.find_element(By.NAME, 'password')
    jahan
        14
    jahan  
    OP
       2017-11-19 14:12:53 +08:00
    @iiduce 做 it 基本就是这样子。感谢你的回答,热心。
    fzinfz
        15
    fzinfz  
       2017-11-20 02:22:51 +08:00
    jahan
        16
    jahan  
    OP
       2017-11-20 02:31:25 +08:00
    感谢大家,已经做完了。现在的问题是浏览速度比较慢,970 个 ticker,一个要 wait 一分钟,也就 16 个小时?就是有点慢。
    jahan
        17
    jahan  
    OP
       2017-11-20 02:31:59 +08:00
    话说这 selenium 真是太棒了。
    wx8600
        18
    wx8600  
       2017-11-22 20:07:21 +08:00
    好像 Firefox、Chrome、IE 都可以直接右键检查元素的吧?
    要在 Python 里面找的话,你可以考虑看一下 lxml (我没用过, 刚弄了一个用 beautifulsoup 的、感觉很慢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1100 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:04 · PVG 03:04 · LAX 11:04 · JFK 14:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.