xpath语法:
/ 从根结点选取,绝对路径 /放在开头表示绝对路径 /放在两个元素之间表示层级
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置,相对路径
. 选取当前节点
.. 选取当前节点的父节点。
and 用于组合条件
绝对路径:/html/body/
相对路径://
填写 xpath: f12,点击element选项,按ctrl+f
xpath语法://input[@name="q"]
抽象后的语法://标签名[@属性名="属性值"] [@属性名="属性值"]相当于谓语条件
使用xpath查找元素原则:哪个特征最明显,你就用哪一个。
组合条件:id name class_name
//input[@name="q"and @type="text"and @size="12"]
元素的id是唯一的,在同一页面中不可能存在两个相同的id
通过父亲找子代元素: //div[@class="anony-nav"]/div[@class="anony-srh"]
通过祖先找子孙代元素://div[@class="anony-nav"]//div[@class="anony-srh"] 子孙代包含子代 兼容性更好
通过儿子找父亲://div[@class="anony-srh"]/../../.. 找祖先的时候只能一层一层上去,不能跨代
找兄弟://div[@class="anony-srh"]/../div 先找到父亲 也可使用轴运算
标签名+节点属性
组合元素索引【下标】
部分属性匹配值
文本内容匹配
xpath用法:
1、//input[@name=""]
2、and组合属性
3、//div/input 单斜杠通过父亲找儿子
4、//div//input 通过祖先找子孙
5、..儿子找父亲
6、//a[text()="豆瓣读书"] 通过文本
-text不用@,因为它不是属性
7、text() 经常和 contains 组合使用。//a[contains(text(),"豆瓣读书")]
8、索引有两个注意事项:1、加括号. 2、从1开始
(//a[contains(text(),"豆瓣读书")])[2]
9、following-sibling,preceding-sibling,ancestor 轴:元素和元素之间的关系
a//ancestor::div[@id="anony-nav"]
(//a[contains(text(),"豆瓣读书")])//ancestor::div[@id="anony-nav"]
10、*
//*[@id="anony-sns"]
轴:你想通过一个元素找到另一个元素
称呼:关系://*[@class="account-form-3rd-hd"]//following-sibling::div
css 选择器
xpath和css选择器各有什么优势?
css写法更简单,运行稍快一点,但是css不支持文本定位
xpath 功能更轻 对于复杂定位范围更简洁
八大元素定位,到底用哪个?
-id
-name
-class
-xpath
-css
-link
-partial
-tagname 基本没用
06-29
289
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)