Невозможно определить все текстовые элементы на странице с помощью XPath - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь определить все текстовые элементы на веб-странице. Основываясь на нескольких потоках, которые я прочитал на stackoverflow, я придумал следующий XPath:

//*[normalize-space(.)=.][not(self::script or self::style or self::meta)]//.
//*[normalize-space(.)=.][not(self::script or self::style or self::meta)]//text()

Однако я заметил, что хотя на странице продукта Amazon идентифицируется несколько сотен текстовых элементов, некоторые важные из них не учитываются.

Например:

На этой странице Я не могу определить раздел «Функции» и раздел заказа по времени:

"Echo Show приносит вам все, что вы любите в Alexa .."

«Хочешь завтра» ..

На этой странице Я не могу определить раздел описания (непосредственно справа от изображения продукта)

Обе эти страницы содержат текст, который заметно отображается на странице, поэтому я не понимаю, почему он не идентифицирует их соответствующим образом.

Я знаю, что некоторые из этих текстов находятся под ul/li тегами, но я не думаю, что это проблема.

Наконец, возможно ли объединить указанный XPath с другим значением атрибута, чтобы он идентифицировал только текстовые элементы с данным значением атрибута (т. Е. //*[normalize-space(.)=.][not(self::script or self::style or self::meta)]//. + .//*[@id='XYZ'])

Спасибо

1 Ответ

0 голосов
/ 31 августа 2018

Попробуйте использовать:

//*[text()[not(normalize-space()='')]]

Это выберет любой элемент, имеющий узел text (), в качестве прямого потомка, который не является просто пробелом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...