0. 准备工作
在开始后续功能演示之前,我们需要先安装Chrome
浏览器并配置好ChromeDriver
,当然也需要安装selenium
库!
pip install selenium
其实,有两种方式安装浏览器驱动:一种是常见的手动安装,另一种则是利用第三方库自动安装。
以下前提:大家都已经安装好了Chrome
浏览器哈
手动安装
先查看本地Chrome
浏览器版本:(两种方式均可)
在浏览器的地址栏键入Chrome://version
,即可查看浏览器版本号
或者点击Chrome
菜单 帮助→关于Google Chrome,查看浏览器版本号
再选择对应版本号的驱动版本
下载地址:https://chromedriver.storage.googleapis.com/index.html
最后进行环境变量配置,也就是将对应的ChromeDriver
的可执行文件chromedriver.exe
文件拖到Python
的Scripts
目录下。
注:当然也可以不这样做,但是在调用的时候指定chromedriver.exe
绝对路径亦可。
自动安装
自动安装需要用到第三方库webdriver_manager
,先安装这个库,然后调用对应的方法即可。
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from webdriver_manager.chrome import ChromeDriverManager
-
- browser = webdriver.Chrome(ChromeDriverManager().install())
-
- browser.get('http://www.baidu.com')
- search = browser.find_element_by_id('kw')
- search.send_keys('python')
- search.send_keys(Keys.ENTER)
-
- # 关闭浏览器
- browser.close()
在上述代码中,ChromeDriverManager().install()
方法就是自动安装驱动的操作,它会自动获取当前浏览器的版本并去下载对应的驱动到本地。
- ====== WebDriver manager ======
- Current google-chrome version is 96.0.4664
- Get LATEST chromedriver version for 96.0.4664 google-chrome
- There is no [win32] chromedriver for browser in cache
- Trying to download new driver from https://chromedriver.storage.googleapis.com/96.0.4664.45/chromedriver_win32.zip
- Driver has been saved in cache [C:\Users\Gdc\.wdm\drivers\chromedriver\win32\96.0.4664.45]
如果本地已经有该浏览器渠道,则会提示其已存在。
- ====== WebDriver manager ======
- Current google-chrome version is 96.0.4664
- Get LATEST driver version for 96.0.4664
- Driver [C:\Users\Gdc\.wdm\drivers\chromedriver\win32\96.0.4664.45\chromedriver.exe] found in cache
搞定以上准备工作,我们就可以开始本文正式内容的学习啦~
1. 基本用法
这节我们就从初始化浏览器对象、访问页面、设置浏览器大小、刷新页面和前进后退等基础操作。
在准备工作部分我们提到需要将浏览器渠道添加到环境变量或者指定绝对路径,前者可以直接初始化后者则需要进行指定。
- from selenium import webdriver
-
- # 初始化浏览器为chrome浏览器
- browser = webdriver.Chrome()
-
- # 指定绝对路径的方式
- path = r'C:\Users\Gdc\.wdm\drivers\chromedriver\win32\96.0.4664.45\chromedriver.exe'
- browser = webdriver.Chrome(path)
-
- # 关闭浏览器
- browser.close()
初始化浏览器对象
可以看到以上是有界面的浏览器,我们还可以初始化浏览器为无界面的浏览器。
- from selenium import webdriver
-
- # 无界面的浏览器
- option = webdriver.ChromeOptions()
- option.add_argument("headless")
- browser = webdriver.Chrome(options=option)
-
- # 访问百度首页
- browser.get(r'https://www.baidu.com/')
- # 截图预览
- browser.get_screenshot_as_file('截图.png')
-
- # 关闭浏览器
- browser.close()
截图
完成浏览器对象的初始化后并将其赋值给了browser
对象,接下来我们就可以调用browser
来执行各种方法模拟浏览器的操作了。
进行页面访问使用的是get
方法,传入参数为待访问页面的URL
地址即可。
- from selenium import webdriver
-
- # 初始化浏览器为chrome浏览器
- browser = webdriver.Chrome()
-
- # 访问百度首页
- browser.get(r'https://www.baidu.com/')
-
- # 关闭浏览器
- browser.close()
set_window_size()
方法可以用来设置浏览器大小(就是分辨率),而maximize_window
则是设置浏览器为全屏!
- from selenium import webdriver
- import time
-
- browser = webdriver.Chrome()
-
- # 设置浏览器大小:全屏
- browser.maximize_window()
- browser.get(r'https://www.baidu.com')
- time.sleep(2)
-
- # 设置分辨率 500*500
- browser.set_window_size(500,500)
- time.sleep(2)
-
- # 设置分辨率 1000*800
- browser.set_window_size(1000,800)
- time.sleep(2)
-
- # 关闭浏览器
- browser.close()
这里就不截图了,大家自行演示看效果哈~
刷新页面是我们在浏览器操作时很常用的操作,这里refresh()
方法可以用来进行浏览器页面刷新。
- from selenium import webdriver
- import time
-
- browser = webdriver.Chrome()
-
- # 设置浏览器全屏
- browser.maximize_window()
- browser.get(r'https://www.baidu.com')
- time.sleep(2)
-
- try:
- # 刷新页面
- browser.refresh()
- print('刷新页面')
- except Exception as e:
- print('刷新失败')
-
- # 关闭浏览器
- browser.close()
大家也是自行演示看效果哈,同F5
快捷键。
前进后退也是我们在使用浏览器时非常常见的操作,这里forward()
方法可以用来实现前进,back()
可以用来实现后退。
- from selenium import webdriver
- import time
-
- browser = webdriver.Chrome()
-
- # 设置浏览器全屏
- browser.maximize_window()
- browser.get(r'https://www.baidu.com')
- time.sleep(2)
-
- # 打开淘宝页面
- browser.get(r'https://www.taobao.com')
- time.sleep(2)
-
- # 后退到百度页面
- browser.back()
- time.sleep(2)
-
- # 前进的淘宝页面
- browser.forward()
- time.sleep(2)
-
- # 关闭浏览器
- browser.close()
2. 获取页面基础属性
当我们用selenium
打开某个页面,有一些基础属性如网页标题、网址、浏览器名称、页面源码等信息。
- from selenium import webdriver
-
- browser = webdriver.Chrome()
- browser.get(r'https://www.baidu.com')
-
- # 网页标题
- print(browser.title)
- # 当前网址
- print(browser.current_url)
- # 浏览器名称
- print(browser.name)
- # 网页源码
- print(browser.page_source)
输出如下