介绍
- 首先Selenium是一个用于Web应用程序测试的工具,也就是说最初是用于测试的。。后来我都用它来做爬虫。。。
- xpath是定位网页标签的工具。。。
selenium版本问题
- 指定版本就可行,最好不要用最新的,因为方法可能会不一样,还有可能会有未知错误。就我下面这个就好的很。
pip install selenium==3.0.2
驱动下载问题
- 其实chromedriver不是很好找,网上大部分都是老版本的驱动,最新版本的chrome还是不好找的。但是还是被我找到了,用下面这个链接就好
selenium常用代码
options = webdriver.ChromeOptions() # 配置额外参数
options.add_argument('--headless') # 不显示浏览器窗口
browser = webdriver.Chrome() # 创建一个driver对象
browser.get('http://www.baidu.com') # 控制浏览器打开指定的url
browser.quit() # 关闭浏览器
browser.close() # 关闭当前页
browser.maximize_window() # 浏览器窗口最大化
browser.page_source # 当前网页源码,注意获取的时候可能想要的数据不在页面上
node.send_keys() # 向文本框发送内容
node.click() # 点击
node.clear() # 清空文本
node.get_attribute('属性名') # 获取节点属性值
node.text # 获取节点文本内容(包含子节点和后代节点)
xx = browser.execute_script('return js代码') # js有return时python可以接受返回值
- 还有一些 iframe处理、tabs处理、模拟人工鼠标操作、对页面的处理等等
xpath常用语法
| 符号 | 功能 |
|---|---|
| // | 表示在整个文本中查找,是一种相对路径 |
| / | 表示则表示从根节点开始查找,是一种绝对路径 |
| text() | 找出文本值 |
| @ | 找出标签对应的属性值,比如@href就是找出对应的href链接 |
| . | 表示当前节点 |
| .. | 表示当前节点的父节点 |
| string(.) | 选取节点下的文本和所有子节点的文本 |
//title[@lang='eng'] :表示选择所有lang属性的值等于"eng"的title节点。
/bookstore/book[last()] :表示选择bookstore的最后一个book子元素。
/bookstore/book[last()-1] :表示选择bookstore的倒数第二个book子元素。
/bookstore/book[position()<3] :表示选择bookstore的前两个book子元素。
//div[ends-with(@id, 'require')]** 选取 id 属性以 require 结尾
//div[starts-with(@id, 'data')]** 选取 id 属性以 data 开头的 div 元素
//div[contains(@id, 'data')]** 选取 id 属性包含 data 的 div 元素