无法使用XPath

时间:2018-08-30 18:13:45

标签: java html selenium xpath web-scraping

我正在尝试识别网页上的所有文本元素。基于我在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产品页面上的数百个文本元素,但其中省略了一些重要的元素。

例如:

this页上,我无法识别“功能”部分和按时间排序:

  

“ Echo Show带给您关于Alexa的所有爱好。”

     

'希望明天..

this页上,我无法识别描述部分(紧靠产品图片的右侧)

这两个页​​面上的文本都突出显示在页面上,因此我看不出为什么没有相应地标识它们。

我知道其中一些文本在ul/li标签下,但我认为这不是问题。

最后,可以将所述XPath与另一个属性值组合在一起,以便仅标识具有给定属性值(即//*[normalize-space(.)=.][not(self::script or self::style or self::meta)]//. + .//*[@id='XYZ'])的文本元素

谢谢

1 个答案:

答案 0 :(得分:2)

尝试使用:

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

这将选择任何具有text()节点的元素作为直接子元素,而不仅仅是空白。