首先搞清楚selenium是干嘛的。这个东东其实是用来做自动化网页测试的。就是模拟人类行为像鼠标键盘之类的操作,与之前使用requests等的区别在于,这玩意是一个动态获取的行为。不是单纯的一次性的获取网页源代码,可以后不断获取,最简单的在爬虫中的应用就是移动滑块验证。
下载selenium可以直接使用pip下载安装指令。
配置浏览器,下载相应的webdriver版本即可
下面以chrome为例
1.查看chrome版本
2.下载 chromedriver
下载网址
3.将下载好的chromedriver.exe放入文件中
这里有两个选择;1.放置与python的script目录下
或者放置于另一个指定目录内(英文路径内)
from selenium import webdriver
drive=webdriver.Chrome()
#drive=webdriver.Chrome(executable_path=指定路径)
drive.get('https://www.baidu.com/')
首先要声明的是selenium有些方法是很长的乍一眼看上去很复杂,其实简单的鸭皮。
1.打开一个网页
2.定位一个元素
3.实现简单的点击操作
drive.get('https://www.baidu.com/')
定位元素的话操作手段就比较多了。
最主要的是先分两大类,一个是获取当个对象,一个是获取多个对象。
比如;
InputTag=drive.find_element_by_name('wd')
获取一个(第一个)
InputTag=drive.find_elements_by_name('wd')
获取全部
在代码中_by_name()的意思就是通过name的值来定位
此外还有很多方法。如图
必要时直接通过xpath语法定位
这里要注意一下的是我么只是单纯的通过定位获取到了相应元素,
因此我们可以进行的操作只是点击,发送之类的操作。对于较复杂的操作只能通过鼠标对象操作。比如;单击,双击,右击,拖拽。。。
send_keys()发送相应的值
click()点击
clear()清空
目标在百度页面输入python并且点击搜索
现在我们已经知道了具体的元素定位。
下面分别使用通过name定位和xpath定位
from selenium import webdriver
drive=webdriver.Chrome()
drive.get('https://www.baidu.com/')
############
InputTag=drive.find_element_by_name('wd')
InputTag.send_keys('python')
############
SubmitBut=drive.find_element_by_xpath('//input[@type="submit" and @value="百度一下"]')
SubmitBut.click()
像上面那样使用代码较为冗长,这是可以考虑缩减写法,并且此写法在后面会有小惊喜。
区别;也没啥就是再使用了一个方法包装了一下
1.导入
from selenium.webdriver.common.by import By
2.缩减代码
from selenium import webdriver
from selenium.webdriver.common.by import By
drive=webdriver.Chrome()
drive.get('https://www.baidu.com/')
############
InputTag=drive.find_element(By.NAME,'wd')
InputTag.send_keys('python')
############
SubmitBut=drive.find_element(By.XPATH,'//input[@type="submit" and @value="百度一下"]')
SubmitBut.click()
1.只是关闭上一个页面
drive.close()
2关闭浏览器
drive.quit()