Selenium基本使用
简介
Selenium
是一种驱动浏览器的库,它通过调用Webdriver 来驱动电脑中的浏览器从而使我们可以获得一个真实的浏览器环境而不是模拟浏览器环境获取网页数据。它提供了一系列API来帮助我们获取浏览器中的内容。
使用它之前需要下载对应浏览器版本的Webdriver
:
在合适的目录中放置好Webdriver
后我们就可以通过Selenium
调用它,从而获取网页内容。
安装Selenium
:
pip install selenium
前置工作做好后,我们就可以开始抓取网页内容。
Chromedriver 使用
# 载入需要的库
from selenium import webdriver
# 开启浏览器视窗(Chrome)
# 方法一:执行前需要启动chromedriver.exe且与该代码文件在相同的工作目录
driver = webdriver.Chrome()
# 方法二:或是直接指定exe文件路径
driver = webdriver.Chrome("Desktop\chromedriver")
若是想要使用以上其他的浏览器,那只要在浏览器的名称上做一些更改。
# 调用FireFox
driver = webdriver.Firefox()
# 调用Safari
driver = webdriver.Safari()
获得driver
对象后调用get
函数传入想要访问网页的url即可
# 访问本站
driver.get("https://asuhe.fun")
# 关闭浏览器视窗
driver.close()
使用Selenium控制页面
当我们操作页面时,例如点击页面、提交表单,我们需要预先获取到该事件触发的DOM元素
。类似于使用javascript去操纵页面,只是这里的语言换成了python。
<input class="usernameBox" />
# 获得输入框
element = driver.find_element_by_class_name("usernameBox")
# 填充内容
element.send_keys("hello selenium")
# 清除内容
element.clear()
# 点击元素
element.click()
其中send_keys
函数不仅可以填充内容,还可以模拟所有的键盘操作。当使用非功能性按键如26个字母时,直接使用即可。
# 载入对应库
from selenium.webdriver.common.keys import Keys
# 模拟ctrl + c
element.send_keys(Keys.CONTROL, "c")
# 模拟ctrl + v
element.send_keys(Keys.CONTROL, "v")
功能按键字符对照表
NULL = '\ue000'
CANCEL = '\ue001' # ^break
HELP = '\ue002'
BACKSPACE = '\ue003'
BACK_SPACE = BACKSPACE
TAB = '\ue004'
CLEAR = '\ue005'
RETURN = '\ue006'
ENTER = '\ue007'
SHIFT = '\ue008'
LEFT_SHIFT = SHIFT
CONTROL = "\ue009"
LEFT_CONTROL = CONTROL
ALT = "\ue00a"
LEFT_ALT = ALT
PAUSE = "\ue00b"
ESCAPE = "\ue00c"
SPACE = "\ue00d"
PAGE_UP = "\ue00e"
PAGE_DOWN = "\ue00f"
END = "\ue010"
HOME = "\ue011"
LEFT = "\ue012"
ARROW_LEFT = LEFT
UP = "\ue013"
ARROW_UP = UP
RIGHT = "\ue014"
ARROW_RIGHT = RIGHT
DOWN = "\ue015"
ARROW_DOWN = DOWN
INSERT = "\ue016"
DELETE = "\ue017"
SEMICOLON = "\ue018"
EQUALS = "\ue019"
NUMPAD0 = "\ue01a" # number pad keys
NUMPAD1 = "\ue01b"
NUMPAD2 = "\ue01c"
NUMPAD3 = "\ue01d"
NUMPAD4 = "\ue01e"
NUMPAD5 = "\ue01f"
NUMPAD6 = "\ue020"
NUMPAD7 = "\ue021"
NUMPAD8 = "\ue022"
NUMPAD9 = "\ue023"
MULTIPLY = "\ue024"
ADD = "\ue025"
SEPARATOR = "\ue026"
SUBTRACT = "\ue027"
DECIMAL = "\ue028"
DIVIDE = "\ue029"
F1 = "\ue031"
F2 = "\ue032"
F3 = "\ue033"
F4 = "\ue034"
F5 = "\ue035"
F6 = "\ue036"
F7 = "\ue037"
F8 = "\ue038"
F9 = "\ue039"
F10 = "\ue03a"
F11 = "\ue03b"
F12 = "\ue03c"
META = "\ue03d"
COMMAND = "\ue03d"
页面跳转
# 前进
driver.forward()
# 后退
driver.back()