Xpath返回标记在集合中的位置(包含文本)
我想返回第一个标记的位置号,该标记包含一组标记中的choosen文本 我想设置一个包含4列的google工作表: 1:URL() 2:类别页面上的产品数量:Xpath返回标记在集合中的位置(包含文本),xpath,web-scraping,google-sheets,google-sheets-importxml,Xpath,Web Scraping,Google Sheets,Google Sheets Importxml,我想返回第一个标记的位置号,该标记包含一组标记中的choosen文本 我想设置一个包含4列的google工作表: 1:URL() 2:类别页面上的产品数量: =IMPORTXML($B4;"count(//p[@data-test-id='productTitle'])") 3:标题中包含“罗格朗”或“Céliane with Netatmo”的产品数量: 以上公式很好。我在第四个问题上遇到了困难: 4:标题中包含“Legrand”或“Céliane with Ne
=IMPORTXML($B4;"count(//p[@data-test-id='productTitle'])")
3:标题中包含“罗格朗”或“Céliane with Netatmo”的产品数量:
以上公式很好。我在第四个问题上遇到了困难:
4:标题中包含“Legrand”或“Céliane with Netatmo”的第一款产品的位置
例如,第2列返回24(产品),第3列返回12(产品)。
如果第一个产品是带有“Legrand”或“Céliane with Netatmo”的产品,我希望第4列返回1。如果它在第4位,我希望它返回4
我试过了
=IMPORTXML($B4;"//div//p[@data-test-id='productTitle'][.='Legrand']/preceding-subling::*)+1")
但我似乎没有“//div//p”的好订单。我打赌这与子分页元素有关,在“/”之前,我必须没有正确选择的标记。他们确实将数据隐藏在该页面上非常深的地方 尝试(在本例中使用“Céliane”;显然,您可以进一步修改它):
另一个带有以下XPath的选项(我们使用
()
[]
和前面的轴):
输出:
出于安全原因(如果页面上没有罗格朗产品),E4中的公式应为:
=IF(D4=0;"NA";IMPORTXML(B4;"count((//p[@data-test-id='productTitle'][contains(.,'Céliane with Netatmo')or contains(.,'Legrand')])[1]/preceding::div[@data-test-id='product-panel'])+1"))
卡斯托拉马倒酒 Axesome,它起作用了!我终于明白了标签的顺序,现在可以在每个网站上做同样的事情:)谢谢。
=IMPORTXML($B4,"count((//li[@class='b9bdc658'][.//p[@data-test-id='productTitle'][contains(.,'Céliane')]])[1]/preceding-sibling::*)+1")
=IMPORTXML(B4;"count((//p[@data-test-id='productTitle'][contains(.,'Céliane with Netatmo')or contains(.,'Legrand')])[1]/preceding::div[@data-test-id='product-panel'])+1")
=IF(D4=0;"NA";IMPORTXML(B4;"count((//p[@data-test-id='productTitle'][contains(.,'Céliane with Netatmo')or contains(.,'Legrand')])[1]/preceding::div[@data-test-id='product-panel'])+1"))