パス省略(//)は複数使ってもOK?
サンプルコード
# -*- coding: utf-8 -*- from lxml import html a = """ <html> <head> <title>Sample</title> </head> <body> <div> <h1 class="title1">Sample #01</h1> </div> <div> <h1 class="title2">Sample #02</h1> </div> <div> <h1 class="title3">Sample #03</h1> </div> </body> </html> """ print('### フルパス指定') a = html.fromstring(a) b = a.xpath("/html/body/div/h1") for i in b: print(i.text) print('') print('### フルパス指定+条件付き') b = a.xpath("/html/body/div/h1[@class='title1']") for i in b: print(i.text) print('') print('### 省略パス// 指定') b = a.xpath("//h1[@class='title1']") for i in b: print(i.text) print('') print('### 2重省略パス// 指定') b = a.xpath("//body//h1[@class='title1']") for i in b: print(i.text) print('') print('### ワイルドカード指定') b = a.xpath("/html/*/*/h1[@class='title1']") for i in b: print(i.text) print('') print('### 間違った省略パス指定') b = a.xpath("//body/h1[@class='title1']") for i in b: print(i.text) print('') print('### 間違ったワイルドカード指定') b = a.xpath("/html/*/h1[@class='title1']") for i in b: print(i.text)
実行結果
### フルパス指定 Sample #01 Sample #02 Sample #03 ### フルパス指定+条件付き Sample #01 ### 省略パス// 指定 Sample #01 ### 2重省略パス// 指定 Sample #01 ### ワイルドカード指定 Sample #01 ### 間違った省略パス指定 ### 間違ったワイルドカード指定