浏览器抓取网页(获取浏览器窗口的基本信息获取当前窗口网页标题title)
优采云 发布时间: 2022-02-10 10:26浏览器抓取网页(获取浏览器窗口的基本信息获取当前窗口网页标题title)
一、获取浏览器窗口的基本信息1.获取当前窗口的网页标题
title 属性用于获取当前窗口网页的标题
2.获取当前窗口网页url
current_url 属性用于获取当前窗口网页的url
3.获取当前窗口句柄
current_window_handle 属性用于获取当前窗口的句柄,句柄是窗口的标识符,可用于窗口切换
4.获取所有当前打开窗口的句柄
window_handles 属性用于获取浏览器打开的所有窗口的句柄列表
测试代码:
1# 使用驱动打开浏览器
2driver = webdriver.Chrome("./chromedriver")
3# 打开百度首页
4driver.get("https://www.baidu.com")
5# 预设js代码,打开搜狗网
6js = 'window.open("https://www.sogou.com");'
7# 执行js代码(具体会在下章介绍)
8driver.execute_script(js)
9# 获取当前窗口网页url
10print(driver.current_url)
11# 获取浏览器所有窗口句柄
12print(driver.window_handles)
13# 获取当前窗口句柄
14print(driver.current_window_handle)
15# 获取当前网页的标题
16print(driver.title)
17
18
19
测试输出:
1https://www.baidu.com/
2['CDwindow-00EE4D00ED151A77C5A293867F*敏*感*词*005F', 'CDwindow-C1AFC2E0142E307E78DDDF0625A556EE']
3CDwindow-00EE4D00ED151A77C5A293867F*敏*感*词*005F
4百度一下,你就知道
5
6
二、浏览器打开多个网页时切换窗口
当我们有多个网页窗口时,需要先获取所有的窗口句柄,然后使用switch_to.window(handle)函数来切换窗口。句柄是您要跳转到的窗口的句柄。
**注意:** WebDriver 对象中的 switch_to_window() 方法已被弃用,应使用 switch_to.window(handle) 方法
测试代码:
1# 使用驱动打开浏览器
2driver = webdriver.Chrome("./chromedriver")
3# 打开百度首页
4driver.get("https://www.baidu.com")
5# 打开新窗口搜狗网
6js = 'window.open("https://www.sogou.com");'
7driver.execute_script(js)
8# 获取浏览器所有窗口句柄
9handles = driver.window_handles
10print(handles)
11print("当前网页为:%s" % driver.title)
12# 跳转至第二个窗口,即搜狗网
13driver.switch_to.window(handles[1])
14print("当前网页为:%s" % driver.title)
15
16
输出结果:
1['CDwindow-CB98BE007FA7A8004A9FE60D1AD9F621', 'CDwindow-27928387C7A61447B9BF2FF3AAEF6E49']
2当前网页为:百度一下,你就知道
3当前网页为:搜狗搜索引擎 - 上网从搜狗开始
4
5
三、操作窗口前进、后退、关闭操作1.返回
back() 方法是操作窗口返回一个网页,相当于点击浏览器的返回按钮
测试代码:
1# 使用驱动打开浏览器
2driver = webdriver.Chrome("./chromedriver")
3# 打开百度首页
4driver.get("https://www.baidu.com")
5print("打开第一个网页,当前窗口:%s" % driver.title)
6driver.get("https://www.sogou.com")
7print("打开新网页,当前窗口:%s" % driver.title)
8driver.back()
9print("后退,当前窗口:%s" % driver.title)
10
11
测试输出:
1打开第一个网页,当前窗口:百度一下,你就知道
2打开新网页,当前窗口:搜狗搜索引擎 - 上网从搜狗开始
3后退,当前窗口:百度一下,你就知道
4
5
2.前进
forward() 方法是操作窗口前进一个网页,相当于一个浏览器的前进按钮有一个年龄
测试代码:
1# 使用驱动打开浏览器
2driver = webdriver.Chrome("./chromedriver")
3# 打开百度首页
4driver.get("https://www.baidu.com")
5print("打开第一个网页,当前窗口:%s" % driver.title)
6driver.get("https://www.sogou.com")
7print("打开新网页,当前窗口:%s" % driver.title)
8driver.back()
9print("后退,当前窗口:%s" % driver.title)
10driver.forward()
11print("前进,当前窗口:%s" % driver.title)
12
13
测试输出:
1打开第一个网页,当前窗口:百度一下,你就知道
2打开新网页,当前窗口:搜狗搜索引擎 - 上网从搜狗开始
3后退,当前窗口:百度一下,你就知道
4前进,当前窗口:搜狗搜索引擎 - 上网从搜狗开始
5
6
3.关闭
close() 方法关闭当前窗口
测试代码:
1# 使用驱动打开浏览器
2driver = webdriver.Chrome("./chromedriver")
3# 打开百度首页
4driver.get("https://www.baidu.com")
5# 运行js打开新窗口
6js = 'window.open("https://www.sogou.com")'
7driver.execute_script(js)
8# 打印窗口个数,为2个
9print("关闭窗口前:%s" % driver.window_handles)
10# 关闭当前窗口
11driver.close()
12# 打印窗口个数,为1个
13print("关闭窗口后:%s" % driver.window_handles)
14
15
检测结果:
selenium 运行 js 代码打开新窗口后,如果不执行窗口切换功能,当前窗口仍然是第一个窗口,而不是新打开的窗口。因此,上述示例代码中关闭了百度窗口。
1关闭窗口前:['CDwindow-6176BE40CAE4EEDCEB6171B263C143F3', 'CDwindow-54B78A28638EF41125901E6774936E9A']
2关闭窗口后:['CDwindow-54B78A28638EF41125901E6774936E9A']
3
4
四、切换帧
网页中会有收录子模块的标签。当我们打印源代码时,只会出现主模块的代码,不会出现标签中收录的子网页的源代码。如果我们想获取子模块的代码,可以使用switch_to.frame()方法来切换frame模块。