Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为了从网页中提取文本,XPath要精确到1吗?_Xpath - Fatal编程技术网

为了从网页中提取文本,XPath要精确到1吗?

为了从网页中提取文本,XPath要精确到1吗?,xpath,Xpath,我有几个XPath,如下所示: //*[@id="904735f0-bb82-11ea-a473-6d0f51688222"]/div/p //*[@id="729c0860-a71d-11ea-b994-53a3e91a35c2"]/div/div/div[1]/div/p //*[@id="2555ab30-bb84-11ea-9e8b-277e7f6208b2"]/div/div/div[1]/div/p //*[@id=&

我有几个XPath,如下所示:

//*[@id="904735f0-bb82-11ea-a473-6d0f51688222"]/div/p

//*[@id="729c0860-a71d-11ea-b994-53a3e91a35c2"]/div/div/div[1]/div/p

//*[@id="2555ab30-bb84-11ea-9e8b-277e7f6208b2"]/div/div/div[1]/div/p

//*[@id="7e100250-a71d-11ea-b994-53a3e91a35c2"]/div/div/div[1]/div/p

//*[@id="811727d0-a71d-11ea-b994-53a3e91a35c2"]/div/div/div[1]/div/p
由于文本位于不同的视图端口,所以上述所有内容都用于从单个web页面提取文本,但我希望找到一个xpath来提取所有页面的文本。是否可以使用“and”和多个ID通过一个xpath提取所有信息


如果您有任何其他建议,我们将不胜感激。

您可以使用
操作符处理最后四个问题。
和merge nodes操作符
|
来添加第一个节点

因此,要在一个表达式中选择所有5个表达式,请使用以下表达式:

//*[@id="904735f0-bb82-11ea-a473-6d0f51688222"]/div/p | //*[@id="729c0860-a71d-11ea-b994-53a3e91a35c2" or @id="2555ab30-bb84-11ea-9e8b-277e7f6208b2" or @id="7e100250-a71d-11ea-b994-53a3e91a35c2" or @id="811727d0-a71d-11ea-b994-53a3e91a35c2"]/div/div/div[1]/div/p

更短、更通用的解决方案可以是:

(//div/div/div[1]/div/p|//div/p)[parent::*[string-length(@id)=36 and substring(@id,24,1)="-"]]

带有
()
的第一部分用于指定路径的终点。由于
@id
属性具有相同的长度,因此我们在谓词中使用它。我们还使用
子串

验证了
-
在特定位置的存在。非常感谢您的帮助:)