1.Selenium
Selenium 是一款自动化的浏览器驱动。能够根据代码去进行自动化操作。能够实现跨平台调用等。
1.1 Seleniun 驱动下载
Selenium驱动需要和当前系统所安装的版本保持一致才可以进行,不然在使用的途中会产生报错。首先我们打开Chrome(其他浏览器原理一致)。在设置里面找到关于Chrome,或者直接打开 chrome://settings/help 链接。可以看到当前浏览器的版本。
确认好版本之后打开:
Chrome驱动下载
找到对应的浏览器版本进行驱动下载
1.2引用添加
下载完成后开始进行代码的编辑,首先在python头部加入Selenium的相关引用
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
随后实例化Selenium,路径填入下载的驱动存放的路径。如果放在根目录下面可以不填
s = Service(r'D:\SeleniumDriver\chrome\chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get("https://www.baidu.com/")
2. 解析Html
众所周知关于Html文本有很多的解析方法,Selenium这里一共提供了八种解析方法
定位元素 | 定位多个元素 | 方式 |
---|---|---|
find_element_by_id | find_elements_by_id | 通过元素id定位 |
find_element_by_name | find_elements_by_name | 通过元素name定位 |
find_element_by_class_name | find_elements_by_class_name | 通过classname进行定位 |
find_element_by_tag_name | find_elements_by_tag_name | 通过标签定位 |
find_element_by_link_text | find_elements_by_link_tex | 通过完整超链接定位 |
find_element_by_partial_link_text | find_elements_by_partial_link_text | 通过部分链接定位 |
find_elements_by_css_selector | find_elements_by_css_selector | 通过css选择器进行定位 |
find_element_by_xpath | find_elements_by_xpath | 通过xpath表达式定位 |
通常我习惯用Xpath的解析方式
element = browser.find_element(By.XPATH, "//div[@id='map_canvas']//button[@class='ol-zoom-out']")
2.1 网页操作
方法 | 说明 |
---|---|
set_window_size() | 设置浏览器的大小 |
back() | 控制浏览器后退 |
forward() | 控制浏览器前进 |
refresh() | 刷新当前页面 |
clear() | 清除文本 |
send_keys (value) | 模拟按键输入 |
click() | 单击元素 |
submit() | 用于提交表单 |
get_attribute(name) | 获取元素属性值 |
is_displayed() | 设置该元素是否用户可见 |
size | 返回元素的尺寸 |
text | 获取元素的文本 |
示例
设置网页最大化
browser.set_window_size(max)
刷新
browser.refresh()
模拟鼠标事件
方法 | 说明 |
---|---|
ActionChains(driver) | 构造ActionChains对象 |
context_click() | 执行鼠标悬停操作 |
move_to_element(above) | 右击 |
double_click() | 双击 |
drag_and_drop() | 拖动 |
move_to_element(above) | 执行鼠标悬停操作 |
context_click() | 用于模拟鼠标右键操作, 在调用时需要指定元素定位 |
perform() | 执行所有 ActionChains 中存储的行为,可以理解成是对整个操作的提交动作 |
模拟键盘
方法 | 说明 |
---|---|
send_keys(Keys.BACK_SPACE) | 删除键(BackSpace) |
send_keys(Keys.SPACE) | 空格键(Space) |
send_keys(Keys.TAB) | 制表键(Tab) |
send_keys(Keys.ESCAPE) | 回退键(Esc) |
send_keys(Keys.ENTER) | 回车键(Enter) |
send_keys(Keys.CONTROL,‘a’) | 全选(Ctrl+A) |
send_keys(Keys.CONTROL,‘c’) | 复制(Ctrl+C) |
send_keys(Keys.CONTROL,‘x’) | 剪切(Ctrl+X) |
send_keys(Keys.CONTROL,‘v’) | 粘贴(Ctrl+V) |
send_keys(Keys.F1…Fn) | 键盘 F1…Fn |
示例
element1 = browser.find_element(By.XPATH, "//button[@id='expand_sidebar_button']")
element1.click()