目录
Selenium的使用场景
Selenium的注意事项
Selenium的使用
挂载驱动
进入网页
查找元素及点击、输入操作
鼠标悬停
获取元素组(可判断元素是否存在)
Selenium作为模拟人类操作浏览器的一个包在网页游戏等重复操作上有很大的应用,但最突出的是对 爬虫 的应用,当一些爬取的项目需要登录账户后才能获得时,且form data中的数据复杂难以解析(能力不够:))就可以用Selenium来模拟用户密码登录(对于有验证码的情况需要额外识别)
Selenium只能对当前浏览器看到的元素进行操作,所以你必须给机器足够的反应时间让浏览器加载。通常使用sleep()来控制节奏。
完全使用Selenium做爬虫效率极低,是模拟登录找到网页后使用lxml+request等爬取
browser = webdriver.Chrome("path\to\chromedriver.exe")
selenium需要使用浏览器驱动,第一步需要挂载浏览器及其驱动(两者版本必须对应),推荐将驱动放入浏览器安装目录下,且保证路径在系统path中
browser.get("url")
使用selenium打开某网页,该网页就是你模拟的开始
browser.find_element_by_class_name("name").click()
browser.find_element_by_name("username").send_keys("text_to_input")
browser.find_element_by_id("id").click()
browser.find_element_by_xpath('//*[@id="zsd"]/a').click()
selenium找到元素的几种常用方式,class_name\name\id\xpath,这些内容都可以在html源码中找到。
.click()是点击行为
.send_keys()是输入字符串(常常用于搜索框、账号密码等)
choose_class=browser.find_element_by_class_name('class_name')
webdriver.ActionChains(browser).move_to_element(choose_class).perform()
.鼠标悬停方法,先找到元素再用动作链来完成,perform后动作链才整个执行。move_to_element移动至元素。(不知道是否必须用动作链,可自行尝试)
clx=browser.find_elements_by_class_name("class_name")
if len(clx)==1:
clx[0].click()
判断元素是否存在或批量处理的方法,第一条语句是elements而不是element,它会返回一个数组如果len=0则不存在某一元素。