python网络爬虫selenium打开多窗口与切换页面的实现
作者:侯小啾 发布时间:2023-10-30 23:50:31
标签:python,selenium,多窗口,切换页面
关于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)
当前页面依然还是百度。要想把当前页面换成知乎,还需要继续用代码切换过来。
打印 句柄 ,即driver的 window_handles 属性,输出结果如下:
print(driver.window_handles)
是一个有两个元素的列表,分别代表上边打开的两个网页,百度和知乎。
分别将其传入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)
关于句柄在列表中的顺序,
建议一般最好只额外打开一个网页,不建议打开更多的网页进行切换。当打开的网页数量超过两个时,句柄列表中的元素分别代表哪个网页,其顺序是不太好确定的。以下面代码为例,其顺序如下。
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)
输出结果如图,句柄的第一个元素表示我们第一次打开的主网页界面,
然后我们依次打开了知乎、拉钩、简书,但是句柄列表第二三四个元素依次表示的是简书、拉钩、知乎。
可以认为其从第二个元素往后是与我们代码写入的顺序是相反的。
来源:https://blog.csdn.net/weixin_48964486/article/details/122700477
0
投稿
猜你喜欢
- 如何在网站上提供音乐下载?为用户提供歌曲下载,一般有两种方式,一是直接通过Http,浏览器下载,二是通过ftp协议下载。我们来用Http和浏
- 浏览器:IE ,不支持firefoxfilter视觉滤镜的种类:Alpha(透明度) Blur(模糊) Chroma(指定颜色透明) Dro
- Python中try块可以捕获测试代码块中的错误。except块可以处理错误。finally块可以执行代码,而不管try-和except块的
- 代码如下:import functoolsdef memoize(fn): print('start memoize
- 前言众所周知Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型,如果直接将字符串和数字拼接会直接报错。如以下的代码:
- SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它
- http://pyhdfs.readthedocs.io/en/latest/1:安装由于是windows环境(linux其实也一样),只要
- 在 Python 中,函数可以通过以下语法定义和使用:def function_name(parameter1, parameter2, .
- 如下所示:import pandas as pdpath='F:/python/python数据分析与挖掘实战/图书配套数据、代码/
- 1.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。fi
- 错误截图如下:类似报错的原因1.imread()中的路径参数有误a.相对路径:此项目文件夹下可写成imread(“1.jpg”);b.绝对路
- 电脑环境:windows7 64位 python3.7问题:在PyCharm中,使用setting下
- 实例如下所示:#########start 获取文件路径、文件名、后缀名############def jwkj_get_filePath_
- 本文讲述了Python使用pip安装报错:is not a supported wheel on this platform的解决方法。分享
- 这篇文章主要介绍了python实现简单日志记录库glog的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- python保留两位小数:In [1]: a = 5.026In [2]: b = 5.000In [3]: round(a,2)Out[3
- 总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧:python中对文件、文件夹(文件操作函数)的操作需要涉及到os
- 每天不同时间段通过微信发消息提醒女友简介有时候,你很想关心她,但是你太忙了,以至于她一直抱怨,觉得你不够关心她。你暗自下决心,下次一定要准时
- 一 引入解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个
- 1.在模板中,我们经常要使用一些url,实现页面之间的跳转,比如某个a标签中需要定义href属性。当然如果通过硬编码的方式直接将这个url固