Python爬虫

selenium模拟登录获取iframe标签(#document

2018-12-11  本文已影响91人  Mr_zY
目标网址

https://www.shiguangkey.com/
该网站基本都是使用js进行渲染,使用selenium模拟登录更加简单

实现
  1. 首先获取并点击首页的‘登录’按钮,可看到弹出登录框
# 点击登录按钮
    btn = wait.until(
        EC.presence_of_element_located((By.XPATH, "//a[@class='_320Oc O8KBD']"))
    )
    btn.click()
登录框.png
  1. 此时要获取该框中的元素时,就会抛出超时异常,查看源码可发现,该登录框是由iframe元素实现的。


    源码.png
  1. iframe是内嵌的网页元素,我们想获取其中的元素,需要先切换到iframe元素中
# 切换iFrame
    wait.until(
        EC.frame_to_be_available_and_switch_to_it((By.ID, "LOGIN_FRAME"))
    )
  1. 此时,一次获取输入框并输入账户密码即可登录成功,并通过get_cookies()函数获取其所有cookies以备之后使用。
  • 由于该网站石油JS进行渲染,其网页源码只有极少基本信息。检验cookies是否可用,可访问个人信息页面https://www.shiguangkey.com/i/profile通过其状态码进行判断。
  • 该站点更新频繁,本文章只为介绍selenium模拟登录过程中iframe标签中元素无法获取的解决方案
  • 参考于https://blog.csdn.net/huifeituzi/article/details/50517672https://www.cnblogs.com/ketangxiaohai/p/9216483.html
上一篇下一篇

猜你喜欢

热点阅读