python网络爬虫selenium打开多窗口与切换页面的实现

作者:侯小啾 时间:2023-10-30 23:50:31 

关于python网络爬虫selenium打开多窗口与切换页面的方法代码测试与解析。

首先打开百度

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

以知乎为例,打开一个新的界面,使用 execute_script() 方法,执行JavaScript代码。
并调用driver的current_url属性,然后查看当前页面的url:

driver.execute_script("window.open('https://www.zhihu.com')")
print(driver.current_url)

python网络爬虫selenium打开多窗口与切换页面的实现

当前页面依然还是百度。要想把当前页面换成知乎,还需要继续用代码切换过来。

打印 句柄 ,即driver的 window_handles 属性,输出结果如下:

print(driver.window_handles)

python网络爬虫selenium打开多窗口与切换页面的实现

是一个有两个元素的列表,分别代表上边打开的两个网页,百度和知乎。

分别将其传入switch_to.window()方法中,再打印当前页面的url,输出结果如下,可以看到,页面成功被切换。

win1 = driver.window_handles[0]
driver.switch_to.window(win1)
print(driver.current_url)

time.sleep(2)

win2 = driver.window_handles[1]
driver.switch_to.window(win2)
print(driver.current_url)

python网络爬虫selenium打开多窗口与切换页面的实现

关于句柄在列表中的顺序,
建议一般最好只额外打开一个网页,不建议打开更多的网页进行切换。当打开的网页数量超过两个时,句柄列表中的元素分别代表哪个网页,其顺序是不太好确定的。以下面代码为例,其顺序如下。

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

# 打开一个新的页面
driver.execute_script("window.open('https://www.zhihu.com')")
driver.execute_script("window.open('https://www.lagou.com/')")
driver.execute_script("window.open('https://www.jianshu.com/')")

win1 = driver.window_handles[0]
driver.switch_to.window(win1)
print(driver.current_url)

time.sleep(2)

win2 = driver.window_handles[1]
driver.switch_to.window(win2)
print(driver.current_url)

time.sleep(2)

win3 = driver.window_handles[2]
driver.switch_to.window(win3)
print(driver.current_url)

time.sleep(2)

win4 = driver.window_handles[3]
driver.switch_to.window(win4)
print(driver.current_url)

输出结果如图,句柄的第一个元素表示我们第一次打开的主网页界面,
然后我们依次打开了知乎、拉钩、简书,但是句柄列表第二三四个元素依次表示的是简书、拉钩、知乎。
可以认为其从第二个元素往后是与我们代码写入的顺序是相反的。

python网络爬虫selenium打开多窗口与切换页面的实现

来源:https://blog.csdn.net/weixin_48964486/article/details/122700477

标签:python,selenium,多窗口,切换页面
0
投稿

猜你喜欢

  • 在Python中使用AOP实现Redis缓存示例

    2021-09-12 11:18:45
  • Matplotlib 3D 绘制小红花原理

    2022-11-23 11:53:08
  • Python运行的17个时新手常见错误小结

    2023-05-20 00:13:17
  • 一些实用的sql语句

    2009-11-10 20:21:00
  • Python绘制正二十面体图形示例

    2022-01-10 18:27:08
  • Python过滤序列元素的方法

    2023-07-05 17:53:37
  • java连接mysql底层封装详解

    2024-01-26 17:31:19
  • pytorch: tensor类型的构建与相互转换实例

    2023-06-14 09:22:57
  • ORACLE中dbms_output.put_line输出问题的解决过程

    2024-01-15 04:10:30
  • mysql中datetime类型设置默认值方法

    2024-01-17 03:03:09
  • php生成随机数/生成随机字符串的方法小结【5种方法】

    2023-09-05 20:23:21
  • 在Python中COM口的调用方法

    2023-10-05 14:16:39
  • pyqt5 键盘监听按下enter 就登陆的实例

    2022-03-04 08:12:31
  • Python 设计模式行为型访问者模式

    2023-10-18 14:44:52
  • SQL Server修改标识列方法 如自增列的批量化修改

    2024-01-19 04:59:22
  • python3中类的继承以及self和super的区别详解

    2023-02-23 20:31:25
  • ASP存储过程开发应用详解第1/2页

    2011-04-07 11:16:00
  • python绘制玫瑰的实现代码

    2021-04-25 09:42:52
  • keras的get_value运行越来越慢的解决方案

    2023-10-22 14:53:49
  • 记一次MySQL的优化案例

    2024-01-14 21:32:58
  • asp之家 网络编程 m.aspxhome.com