前面我发了一篇文件介绍windows桌面软件自动化操作Python 实战:从记事本入手,快速掌握 Windows 桌面端软件 UI 自动化的核心技术,有个朋友留言说,能不能抢浏览器页面上的开抢购物券,答案是可以的。 也因此有了我们这期的文章。(如果你也有碰到一些技术问题待解决,可以在文章里留言,很乐意为你们提供解决思路)
在平时办公中,我们经常会遇到各种 Web 页面自动化 的需求:
如果用requests 抓接口,很多网站难度直接直线提升,有些API的请求是需要验证KEY的,还得去破解算法,很是麻烦,有些甚至反爬虫,就时就可以换一种方式,模拟人操作浏览器来获取数据,他就是Selenium。
Selenium是一个用于 Web 浏览器自动化的工具库,可以用来控制真实浏览器(Chrome、Edge、Firefox 等,来实现:
总之人怎么操作浏览器,他就能完全模拟操作。他可以实现Web 自动化测试、后台系统自动操作、自动登录、自动填表、动态页面数据采集、数据处理流程等
在 Selenium中,有几个非常重要的概念:
是浏览器驱动,用他来负责真正控制浏览器(Chrome、Edge 等)
是具体的浏览器实例,比如 Chrome、Edge、Firefox
页面元素对象,例如按钮、输入框、链接等
简单理解就是:
WebDriver 控制浏览器Browser 打开网页WebElement 操作页面元素使用 pip 直接安装,安装命令:
pip install selenium现在有一点非常的好,从 Selenium 4 开始,大多数浏览器驱动都可以自动管理,不用再去手动下载chromedriver,非常的方便,大大降低了使用的门槛。
下面我们演示一个简单的示例,利用Selenium自动操作浏览器:打开chrome浏览器,访问百度,输入关键词,然后搜索。
效果视频:
代码:
from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport time#启动浏览器driver = webdriver.Chrome()#打开百度driver.get("https://www.baidu.com")#等待页面加载time.sleep(1)#定位搜索框wait = WebDriverWait(driver, 10)#等待chat-textarea可点击textarea = wait.until( EC.element_to_be_clickable((By.ID, "chat-textarea")))#点击,触发focustextarea.click()#再输入textarea.send_keys("最好看的电影排行")#模拟回车textarea.send_keys(Keys.ENTER)#等待结果展示time.sleep(10)Selenium是Python Web自动化领域绕不开的一把利器。它能够直接操作真实浏览器,在自动化测试、数据处理、运维脚本以及日常效率工具中,都有着非常广泛的应用价值。运用得当,可以显著降低重复劳动成本,大幅提升工作效率。
需要注意的是,Selenium 本身只是工具,其用途取决于使用者。 在实际使用过程中,应当遵守网站的相关协议与法律法规,仅用于合法、合规的自动化场景,切勿将其用于任何非法用途。
