XPath
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΠΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΡΡΡΠ΅
ΠΡΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ ΠΌΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ xml ΠΈΠ»ΠΈ (x)html Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈ xslt ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎ DOM, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌΠ°Β W3C.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ΅Π½ XPath Π² ZennoPoster?
ΠΠ»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ Ρ ΡΠ°ΠΉΡΠΎΠ² (ΡΠΊΡΠ΅Π½ ΠΠ°ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅)
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ XPath ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΉ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ Π²ΡΡΡΡΠΊΠΈ ΡΠ°ΠΉΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½ΡΡ
Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΡΠΊΠΎΡΠΈΡΡ ΠΈΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈ ΠΈΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ
Π ZennoPoster Π²ΡΡΡΠΎΠ΅Π½ Π’Π΅ΡΡΠ΅Ρ X\Json Path Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Π’Π°ΠΊ ΠΆΠ΅ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ XPath Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΎΠΊΠ½Π΅ ΠΠ½cΡΡΡΠΌΠ΅Π½ΡΠΎΠ² web-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (DevTools): ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΎΠΊΠ½ΠΎ DevTools, Π½Π°ΠΆΠΌΠΈΡΠ΅ ctrl+f Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π² Π½Π΅Ρ XPath Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΉ Π½Π° ΡΠ°ΠΉΡΠ΅ w3.org, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
//*[@id="w3c_home_upcoming_events"]/ul/li//a
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΡΡΠΈ
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
. | ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ |
.// | ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΡΠΏΡΡΠΊ (Π½Π° Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°) |
/html/body | Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΏΡΡΡ |
a | ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ |
//* | Π²ΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ |
li/*/a | ΡΡΡΠ»ΠΊΠΈ, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ Β«Π²Π½ΡΠΊΠ°ΠΌΠΈΒ» Π΄Π»Ρ li |
//a|//button | ΡΡΡΠ»ΠΊΠΈ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ (ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² ΡΠ·Π»ΠΎΠ²) |
ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΡ
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
a/i/parent::p | Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ <p> |
p/ancestor::* | Π²ΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ |
p/following-sibling::* | Π²ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±ΡΠ°ΡΡΡ |
p/preceding-sibling::* | Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π±ΡΠ°ΡΡΡ |
p/following::* | Π²ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² |
p/preceding::* | Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΡΠΎΠΌΠ΅ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² |
p/descendant-or-self::* | ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΉ ΡΠ·Π΅Π» ΠΈ Π²ΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠΈ |
p/ancestor-or-self::* | ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΉ ΡΠ·Π΅Π» ΠΈ Π²ΡΠ΅ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠΈ |
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ²
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
/div/text() | ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ·Π»Ρ |
/div/text()[1] | ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ·Π΅Π» |
ΠΠΎΠ·ΠΈΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
a[1] | ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ |
a[last()] | ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ |
a[2] | Π²ΡΠΎΡΠ°Ρ ΡΡΡΠ»ΠΊΠ° |
a[position() <= 3] | ΠΏΠ΅ΡΠ²ΡΠ΅ 3 ΡΡΡΠ»ΠΊΠΈ |
ul[li[1]=βOKβ] | ΡΠΏΠΈΡΠΎΠΊ (UL), ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 'OK' |
tr[position() mod 2 = 1] | Π½Π΅ ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ |
tr[position() mod 2 = 0] | ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ |
p/text()[2] | Π²ΡΠΎΡΠΎΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ·Π΅Π» |
ΠΡΡΠΈΠ±ΡΡΡ ΠΈ ΡΠΈΠ»ΡΡΡΡ
[]Β - ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
input[@type=βtextβ] | ΡΠ΅Π³ <input> Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡ type ΡΠ°Π²Π΅Π½ text |
input[@class='OK'] | ΡΠ΅Π³ <input> Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡ class ΡΠ°Π²Π΅Π½ OK |
p[not(@*)] | ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΡ Π±Π΅Π· Π°ΡΡΠΈΠ±ΡΡΠΎΠ² |
*[@style] | Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ style |
a[. = βOKβ]Β | ΡΡΡΠ»ΠΊΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«OKΒ» |
a/@id | ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΡΡΠ»ΠΎΠΊ |
a/@* | Π²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΡΡΡΠ»ΠΎΠΊ |
| ΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°ΡΡΠΈΠ±ΡΡΡ id ΠΈ rel |
a[i or b] | ΡΡΡΠ»ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <i> ΠΈΠ»ΠΈ <b> |
Π€ΡΠ½ΠΊΡΠΈΠΈ
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Xpath -Β http://www.w3.org/TR/xpath/#corelib
Π€ΡΠ½ΠΊΡΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅Ρ |
---|---|---|
name() | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° | [name()='a'] |
string(val) | ΠΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° | string(a[1]/@id) |
substring(val, from, to) | ΠΡΡΠ΅Π·Π°ΡΡ ΡΠ°ΡΡΡ ΡΡΡΠΎΠΊΠΈ | substring(@id, 1, 6) |
substring-before(val, to) | ΠΠ΅ΡΠ½ΡΡΡ ΡΠ°ΡΡΡ ΡΡΡΠΎΠΊΠΈ val ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠΎΠΊΠΎΠΉ to | substring-before('12-May-1998', '-') = '12' |
substring-after(val, from) | ΠΠ΅ΡΠ½ΡΡΡ ΡΠ°ΡΡΡ ΡΡΡΠΎΠΊΠΈ val ΠΏΠΎΡΠ»Π΅ ΡΡΡΠΎΠΊΠΈ to | substring-after('12-May-1998', '-') = 'May-1998' |
string-length() | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅ | [string-length(text()) > 5] |
count() | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² | Β |
concat() | ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ (ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) ΡΠ²ΠΎΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². | Β |
normalize-space()Β | ΠΠ½Π°Π»ΠΎΠ³ Trim | [normalize-space(text())='SEARCH'] |
starts-with() | ΠΠ°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ | [starts-with(text(), 'SEARCH')] |
contains() | Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ | [contains(name(), 'SEARCH')] |
translate(val, from, to) | ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. | translate(Β«barΒ»,Β«abcΒ»,Β«ABCΒ») |
Β
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
(table/tbody/tr)[last()] | ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ° <tr> ΠΈΠ· Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ |
(//h1|//h2)[contains(text(), 'Text')] | Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Β«TextΒ» |
a[//tr/@data-id=@data-id] | Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Ρ ΠΊΠΎΡΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡ data-id ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΡΠΈΠΌ ΠΆΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ Ρ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ |
Β
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
https://ru.wikipedia.org/wiki/XPath
https://www.w3schools.com/xml/xpath_syntax.asp