当前位置: 首页 > news >正文

爬虫笔记17——selenium框架的使用

selenium框架的使用

  • 1、python程序安装selenium框架
  • 2、下载Chrome谷歌驱动
  • 3、selenium的基本使用
  • 4、多个标签页切换顺序混乱的问题

1、python程序安装selenium框架

# 在安装过程中最好限定框架版本为4.9.1
# pip install selenium 没有制定版本,非镜像下载也会比较慢
# 建议用下面这句命令
pip install selenium==4.9.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完selenium后,还需要安装使用selenium控制的浏览器需要的驱动。

2、下载Chrome谷歌驱动

需要下载Chrome浏览器版本对应的驱动,可以通过下面这个链接下载。
谷歌驱动下载地址:https://googlechromelabs.github.io/chrome-for-testing/#stable

驱动下载完成后要将文件移动到系统环境变量中:
● MacOS:将文件移动到/usr/local/bin目录
● Windows:将文件移动到python环境的安装目录下

或者自动义驱动路径:
直接复制下载的驱动.exe文件
在这里插入图片描述

然后粘贴到你程序的文件下,再进行指定即可使用了:
在这里插入图片描述

import time
from selenium import webdriver
from selenium.webdriver.chrome import service  #指导驱动路径# 自定义指定驱动
service = service.Service(executable_path='./chromedriver.exe')browser = webdriver.Chrome()browser.get('https://www.baidu.com')

3、selenium的基本使用

import time
from selenium import webdriver
from selenium.webdriver.common.by import By# 获取要操作的浏览器对象
browser = webdriver.Chrome()
# browser = webdriver.Firefox()# 自动加载指定的页面
browser.get('https://www.baidu.com')# 获取指定的元素
input_text = browser.find_element(By.ID, 'kw')
# 在指定的元素上输入值
input_text.send_keys('Python')button = browser.find_element(By.ID, 'su')
# 操作点击指定的标签
button.click()# 查看加载网页的源代码
print(browser.page_source)# 获取网页的cookies
print(browser.get_cookies())# 查看经过处理之后,本页面最后显示的url,如果有重定向的话,那么就是302之后的url
print(browser.current_url)# 打开新页面,但是会覆盖原来的标签页面
browser.get('https://www.bilibili.com')# 要不覆盖打开新的标签页的话,可以执行js代码中的window.open('https://www.bilibili.com')
code_js = "window.open('https://www.jd.com')"
browser.execute_script(code_js)# 在浏览器有多个标签页的情况下,可以进行切换标签页
browser.switch_to.window(browser.window_handles[0])# 让当前的标签页退出
browser.close()

4、多个标签页切换顺序混乱的问题

window_handles列表保存了根据顺序打开的标签页句柄,但是在某些特殊的情况下标签页顺序和列表句柄元素顺序不一致,比如网络速度或页面响应速度的不同会导致实际打开页面的顺序和预期不同。所以在代码中不能完全依赖列表索引的方式完成页面切换。
解决方式如下:

import time
from selenium import webdriverbrowser = webdriver.Chrome()
js_code = "window.open('https://www.baidu.com')"
browser.execute_script(js_code)
time.sleep(2)js_code = "window.open('https://www.bilibili.com')"
browser.execute_script(js_code)
time.sleep(2)js_code = "window.open('https://www.jd.com')"
browser.execute_script(js_code)
time.sleep(2)browser.switch_to.window(browser.window_handles[0])# 打印当前所有标签页的窗口句柄
print(browser.window_handles)# 打印所有句柄对应的标签页名称
for handle in browser.window_handles:browser.switch_to.window(handle)print("页面标题: {},句柄: {}".format(browser.title,handle))for handle in browser.window_handles:browser.switch_to.window(handle)# 通过页面标题或URL来定位if ("百度" in browser.title) or ("baidu.com" in browser.current_url):print("已切换到百度页面:", handle)time.sleep(2)browser.close()  # 关闭百度标签页elif ("哔哩" in browser.title) or ("bilibili.com" in browser.current_url):print("已切换到哔哩页面:", handle)time.sleep(2)else:print('已切换到京东页面:', handle)time.sleep(2)print(browser.window_handles)
browser.quit()

以上就是selenium的基本使用了

http://www.lryc.cn/news/386365.html

相关文章:

  • [BUUCTF从零单排] Web方向 02.Web入门篇之『常见的搜集』解题思路(dirsearch工具详解)
  • 深度相机识别物体——实现数据集准备与数据集分割
  • STM32第十一课:ADC采集光照
  • python查找支撑数 青少年编程电子学会python编程等级考试三级真题解析2022年3月
  • 创建一个快速、高效的网络爬虫:PHP和Selenium示例
  • 两张图片怎样拼在一起?将两张图片拼在一起的几种方法介绍
  • 百日筑基第五天-关于maven
  • 【CSS in Depth 2 精译】2.2 em 和 rem + 2.2.1 使用 em 定义字号
  • C++Primer Plus 第十四章代码重用:14.4.4 数组模板示例和非类型参数
  • 短视频哪个软件好用?成都柏煜文化传媒有限公司
  • 金融科技:重塑用户体验,驱动满意度飙升
  • JavaScript——算术运算符
  • 备份SQL Server数据库并还原到另一台服务器
  • 二刷算法训练营Day45 | 动态规划(7/17)
  • 大模型项目落地时,该如何估算模型所需GPU算力资源
  • LLM应用开发-RAG系统评估与优化
  • 秋招突击——第七弹——Redis快速入门
  • 软考初级网络管理员__操作系统单选题
  • 从入门到精通:网络编程套接字(万字详解,小白友好,建议收藏)
  • dledger原理源码分析系列(一)架构,核心组件和rpc组件
  • 第七节:如何浅显易懂地理解Spring Boot中的依赖注入(自学Spring boot 3.x的第二天)
  • Postman自动化测试实战:使用脚本提升测试效率
  • CSMA/CA并不是“公平”的
  • 【漏洞复现】I doc view——任意文件读取
  • 图数据库 vs 向量数据库
  • 企业品牌出海第一站 维基百科词条创建
  • Windows下activemq集群配置(broker-network)
  • 心理辅导平台系统
  • 代理IP对SEO影响分析:提升网站排名的关键策略
  • 【leetcode--三数之和】