0


『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 关键词搜索 xpath //*[@id="search_input"]在这里插入图片描述
  • 点击第一个职务信息 xpath//*[@id="openWinPostion"]在这里插入图片描述
  • 切换到新窗口,抓取职务信息 xpath //*[@id="job_detail"]/dd[2]/div在这里插入图片描述
  • 关闭子窗口,切换到老窗口,抓取薪资待遇 xpath //*[@id="jobList"]/div[1]/div[1]/div[1]/div[1]/span/div/div[2]/span在这里插入图片描述

2.2 完整代码

在这里插入图片描述

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爬虫』 专栏,持续更新中
『未完待续』


标签: python 爬虫 selenium

本文转载自: https://blog.csdn.net/u011027547/article/details/129782970
版权归原作者 发现你走远了 所有, 如有侵权,请联系我们删除。

“『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)”的评论:

还没有评论