1、通过parent::来获取父节点,代码如下:
result = html.xpath('//a[@href="link4.html"]/parent::*/@class')
2、如果要想获取子孙节点内部的所有文本,可以直接用//text()的方式,这样可以保证获取到最全面的文本信息,但是可能会夹杂一些换行符等特殊字符。如果想获取某些特定子孙节点下的所有文本,可以先选取到特定的子孙节点,然后再调用text()方法获取其内部文本,这样可以保证获取的结果是整洁的。
3、属性获取和属性匹配的不同——属性匹配是中括号加属性名和值(如[@href="link1.html"])来限定某个属性,而此处的@href指的是获取节点的某个属性,二者需要做好区分。
4、 属性多值匹配
result = html.xpath('//li[contains(@class, "li")]/a/text()');这样通过contains()方法,第一个参数传入属性名称,第二个参数传入属性值,只要此属性包含所传入的属性值,就可以完成匹配了。
5、多属性匹配
result = html.xpath('//li[contains(@class, "li") and @name="item"]/a/text()')
6、| 计算两个节点集 //book | //cd 返回所有拥有book和cd元素的节点集
7、attribute::*选取当前节点的所有属性。
attribute::lang选取当前节点的 lang 属性。
8、child::text()选取当前节点的所有文本子节点。 print(html.xpath('//li[1]//child::text()'))
child::node()选取当前节点的所有子节点。 print(html.xpath('//li[1]//child::node()'))
9、driver. findElement(By.xpath ("//input") )
返回查找到的第一个符合条件的元素。
driver. findElement(By.xpath ("//input[2]") )
返回查找到的第二个符合条件的元素。
10、
网友评论