Selenium笔记

廉价感情. 提交于 2019-11-29 12:17:55

现在许多网站都不是静态网站(静态加载HTML文档),大部分使用javaScripr或者Ajax技术加载一些数据,使用普通的爬虫程序爬取不到这些数据,因为普通的爬虫程序没有能力执行javaScript程序,在javaScript程序执行之前就返回爬取到的整个页面的数据了。因此使用Selenium模拟浏览器访问网站来获取网页文档。

1.安装Selenium框架

    pip install Selenium

    安装谷歌浏览器的驱动chromedriver.exe,并复制到Python的scripts目录下,其他浏览器下载相对应的驱动

    下载网址:http://npm.taobao.org/mirrors/chromedriver/

2.

3.Selenium查找HTML元素

  使用xpath查找主要有两个函数

(1)find_element_by_xpath(xpath):查找xpath匹配的第一个元素,如果找到就返回一个WebElement类型对象,找不到就抛出异常;

(2)find_elements_by_xpath(xpath):查找xpath匹配到的所有元素组成的的列表,每个元素都是一个WebElement类型对象,找不到就返回空列表;

(3)任何一个WebElement对象都可以再调用find_element_by_xpath和find_element_xpath函数

 

(4)id是唯一的,根据id的值查找元素:函数find_element_by_id(id的值)查找id编号的第一个元素,如果查找到就返回一个WebElement对象,如果没有找到就抛出异常

(5)根据name的值查找元素:find_element_by_name(name的值),查找匹配的第一个元素,如果找到就返回一个WebElement类型对象,如果找不到就抛出异常;find_elements_by_name(name的值),查找匹配的所有元素组成的列表,每一元素都是一个WebElement类型对象,如果找不到就返回空列表

(6)使用css查找元素:find_element_by_css_selector(css),查找css匹配的第一个元素,如果找到就返回一个WebElement类型对象,如果找不到就抛出异常;find_elements_by_css_selector(css),查找css匹配的所有元素组成的列表,每一个元素都是一个WebElement类型对象,如果找不到就返回空列表。

例如:find_element_by_css_selector("div[class='info'] span[name='mark']")

           find_element_by_css_selector("div[class='info']>div")

(7)使用tag name查找元素:find_element_by_tag_name("tag"),查找匹配的第一个元素,如果找到就返回一个WebElement类型对象,如果找不到就抛出异常;find_elements_by_tag_name("tag"),查找匹配的所有元素组成的列表,每一元素都是一个WebElement类型对象,如果找不到就返回空列表

(8)使用文本查找超级链接:find_element_by_link_text(text),查找第一个文本值为text的超级链接元素<a>,如果找到就返回一个WebElement类型对象,如果找不到就抛出异常;find_elements_by_link_text(text),查找所有文本值为text的超级链接元素<a>,如果找到就返回一个列表,每一元素都是一个WebElement类型对象,如果找不到就返回空列表;

find_element_by_partial_link_text(text),查找第一个文本值包含text的超级链接元素<a>,如果找到就返回一个WebElement类型对象,如果找不到就抛出异常;find_elements_by_partial_link_text(text),查找所有文本值包含text的超级链接元素<a>,如果找到就返回一个列表,每一元素都是一个WebElement类型对象,如果找不到就返回空列表

(9)使用class查找元素:find_element_by_class_name(class的值),查找匹配的第一个元素,如果找到就返回一个WebElement类型对象,如果找不到就抛出异常;find_elements_by_class_name(class的值),查找匹配的所有元素组成的列表,每一元素都是一个WebElement类型对象,如果找不到就返回空列表

4.查找元素的文本与属性

  通过WebElement对象就可以查找到它的文本与属性

(1)任何一个WebElement对象都可以通过text属性获取它的文本,元素的文本值是它与它的所有子孙节点的文字的组合,如果没有返回空字符串;

(2)任何一个WebElement对象都可以通过get_attrbute(attrName)获取名称为attrName的属性值,如果元素没有attrName属性就返回None

5.Selenium使用动作元素:先要查找到元素,再使用下面的函数

(1)clear()函数:模拟清除element元素中的所有文字;

(2)send_keys(string)函数:模拟键盘输入字符串string;这个函数不但可以模拟输入一般的文字,而且可以模拟输入回车、退格等键盘动作,selement提供了一个Keys类,其中提供了很多常用的不可见的特殊按键,主要有Keys.BACKSPACE退格删除键和Keys.ENTER回车键

(3)click()函数模拟鼠标的点击动作

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!