Mam następujący element na stronie, którego lokalizuję za pomocą xpath;

<meta name="robots" content="noindex, follow">

Chciałbym sprawdzić, czy część content elementu zawiera „noindex” i zignorować część „follow” elementu element.

Wcześniej używałem css do testowania tego typu rzeczy, używając czegoś w stylu content * = "noindex" , ale z powodu tej konkretnej struktury strony nie jestem w stanie korzystać z css.

Tak więc (css) head > meta:nth-child(60)[content*="noindex"] działa (ale jest to nieelastyczne, ponieważ położenie elementu może się zmieniać), ale (xpath) //meta[@name="robots" and @content*="noindex"] nie.

Każda pomoc byłaby bardzo mile widziana.

Dzięki.

0
Darren Harley 11 marzec 2020, 19:43

2 odpowiedzi

Najlepsza odpowiedź

Użyj poniższej ścieżki xpath.

//meta[@name="robots"][contains(@content,"noindex")]

Jeśli chcesz użyć starts-with, poniżej znajduje się składnia.

//meta[@name="robots"][starts-with(@content,"noindex")]
2
supputuri 11 marzec 2020, 17:12

Ponieważ nie określiłeś konkretnej wersji XPath: od XPath 2.0 możesz używać wyrażeń regularnych. Na przykład

//meta[@name="robots"][tokenize(@content, ",") = "noindex"]

Jeśli chcesz to zrobić w przeglądarce, musisz zainstalować bibliotekę XPath innej firmy, taką jak Saxon-JS.

0
Michael Kay 11 marzec 2020, 17:21