Я пытаюсь определить все текстовые элементы на веб-странице. Основываясь на нескольких потоках, которые я прочитал на 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']
)
Спасибо