Python 爬虫 以及 selenium 使用

发布于:2023-01-02 ⋅ 阅读:(825) ⋅ 点赞:(0)

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()

网站公告

今日签到

点亮在社区的每一天
去签到