『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)

这篇具有很好参考价值的文章主要介绍了『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

1. 窗口切换

窗口句柄的定义:WebDriver对象有window_handles 属性,是列表对象, 里面包括了当前浏览器里面 所有的窗口句柄,即每个窗口对应唯一ID。通过窗口句柄判断窗口一一对应。

web = Chrome() #新建驱动对象

获取所有窗口句柄(列表)
wins =web.window_handles
句柄的顺序:先出现的先加入列表。最后出现的,最后加入列表。

最新窗口:列表的最后一个!也就是序列的 -1 位置
web.window_handles[-1]
最老的窗口:
web.window_handles[0]

切换窗口 web.switch_to.window(窗口句柄)
web.switch_to.window(web.window_handles[-1]) #切换到最新的窗口
web.switch_to.window(web.window_handles[0]) #切换到最老的窗口

窗口切换:在selenium的眼中. 新窗口默认是不切换过来的,虽然你看上去好像我们显示的窗口切换过去了,但是实际上代码程序没有切换过去。不是显示浏览器中当前在哪个窗口就已经切换到哪个窗口,我们必须要通过代码执行窗口切换

窗口标题
web.title


2. 抓取拉勾网职务信息

2.1 拉勾网查看职务详情与价格

我们这里的代码仅供学习参考,只能爬取一个职位信息,请大家合理使用,自行结合for循环等内容。

  • click掉开头的弹窗切换到北京城市 xpath //*[@id="changeCityBox"]/ul/li[1]/a
    『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)
  • 在搜索框中输入 python 关键词搜索 xpath //*[@id="search_input"]
    『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)
  • 点击第一个职务信息 xpath//*[@id="openWinPostion"]
    『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)
  • 切换到新窗口,抓取职务信息 xpath //*[@id="job_detail"]/dd[2]/div
    『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)
  • 关闭子窗口,切换到老窗口,抓取薪资待遇 xpath //*[@id="jobList"]/div[1]/div[1]/div[1]/div[1]/span/div/div[2]/span
    『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)

2.2 完整代码

『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
import time
web = Chrome()

web.get("http://lagou.com")

web.find_element_by_xpath('//*[@id="cboxClose"]').click()

time.sleep(1)

web.find_element_by_xpath('//*[@id="search_input"]').send_keys("python", Keys.ENTER)

time.sleep(1)

# 打开我们第一个职位的详情界面
web.find_element_by_xpath('//*[@id="openWinPostion"]').click()

# 如何进入职务详情的窗口中进行提取
# 注意, 在selenium的眼中. 新窗口默认是不切换过来的,需要我们手动切换(最新的窗口 -1)
web.switch_to.window(web.window_handles[-1])
print("切换(最新的窗口 -1)",web.title)

# 在新窗口中提取内容
job_detail = web.find_element_by_xpath('//*[@id="job_detail"]/dd[2]/div').text
print("job_detail:\n"+job_detail)

# 关掉子窗口
web.close()
# 变更selenium的窗口视角. 回到原来的职务表窗口(最老的窗口 索引0)
web.switch_to.window(web.window_handles[0])
print("切换(最老的窗口 0)",web.title)
price=web.find_element_by_xpath('//*[@id="jobList"]/div[1]/div[1]/div[1]/div[1]/span/div/div[2]/span').text
print("price:\n"+price)

3. iframe的处理

有些视频网站的网页或是登录是出现的弹窗,是嵌套了iframe 。0基础小白理解为网页中的网页(不太准确的理解),我们需要像窗口切换一样,切换到对应的iframe(某种程度上也理解为一种窗口)

根据索引切换iframe
driver.switch_to.frame(0)
适用场景:你确定只有一个iframe(不要数错了) 或者是你很确定知道ifarme的索引值(很多时候都是你以为你知道,数错了)

根据ifarme的name属性定位
driver.switch_to.frame(“iframe的name属性”)

根据iframe对象切换,通过xpath找到iframe对象
iframe = driver.find_element(‘xpath’, ‘//div/div/iframe’)
driver.switch_to.frame(iframe)


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』文章来源地址https://www.toymoban.com/news/detail-447775.html


到了这里,关于『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • crawlab爬虫python篇(保姆级图文教程)

    一个python刚到门槛水平的程序员是如何使用crawlab爬取网站,在这里做个图文教程记录下。 提示:这里做一个简单的网站爬取完整示例图文教程 首先,我们将创建一个 Scrapy 项目,咱们从安装 Scrapy 开始。 然后,创建一个名叫 scrapy_quotes 的 Scrapy 项目。

    2024年02月15日
    浏览(40)
  • python自动化测试selenium(四)切换页面、切换窗口

    一、切换页面 如果定位元素失败(抛出NoSuchElementException),调查网页源代码,发现这个元素位于一个frame或iframe标记的元素下的子网页(html标记)里,那么此时需要切换Frame。 切换方法一:使用frame或iframe标记的元素的id或name属性值来作为切换条件 switch_to.frame() 将当前定位

    2024年02月12日
    浏览(43)
  • selenium+python切换浏览器窗口

    selenium在当前浏览器页面打开了新的窗口,此时如果要聚焦到新开的浏览器窗口,就需要切换到新的窗口,切换窗口的操作,具体selenium+python示例如下:

    2024年02月15日
    浏览(45)
  • 『python爬虫』05. requests模块入门(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 由此可知,我们的请求方式是post,请求url是post的地址 https://fanyi.baidu.com/sug 观察一下我们的formdata,在我们逐渐输入apple的过程中,分别post请求,带有kw参数为“a” “ap” “app” “appl”

    2024年02月02日
    浏览(43)
  • selenium+python切换浏览器窗口--详细讲解

    在浏览器页面打开窗口后,有时点击按钮会打开新的页面,我们需要切换到新的窗口才能去定位操作,不然无法操作,切换窗口代码如下

    2024年02月14日
    浏览(47)
  • 『python爬虫』06. 数据解析之re正则解析(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 Regular Expression, 正则表达式, ⼀种使⽤表达式的⽅式对字符串,进⾏匹配的语法规则(按照一定规则的查找) ⽹⻚源代码本质上就是⼀个超⻓的字符串, 用正则就好像是在我们的txt中查找指定

    2024年02月02日
    浏览(68)
  • selenium中,切换iframe的方法

    最近在学基于python+selenium的web自动化,在此记录下学习的东西,也希望可以跟学习这技能的小伙伴们分享、交流。 iframe也称作嵌入式框架,嵌入式框架和框架网页类似,它可以把一个网页的框架和内容嵌入在现有的网页中。在selenium进行定位时,如果需要定位某个iframe内的元

    2024年02月16日
    浏览(39)
  • 『python爬虫』github仓库存放脚本结合青龙面板使用(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 订阅或是直接添加任务 名称随意输入,链接是我们的仓库地址+ .git ,定时规则 0 0 7 * * ? 表示每天7点更新一次,也可以自己设置. 添加订阅后运行发现如果没有添加脚本,请检查你的配置,是否接

    2024年04月26日
    浏览(43)
  • Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题

    之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫(2)-Selenium控制浏览器 Python爬虫(3)-Selenium结合pywin32模拟键盘操作 Python爬虫(4)-Seleni

    2024年02月04日
    浏览(58)
  • selenium-java中切换iframe

    1、当iframe中有固定的name或者id时可以通过name和id进行切换,代码如下 2、当iframe中没有固定的name或者id时可以通过iframe角标进行切换,在浏览器通过ctrl+f快捷键,搜索标签框输入//iframe;来查看当前iframe是第几个来定位,代码如下 注意:通过下标来定位时需要是同级别的,如果

    2024年01月18日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包