首页 > 解决方案 > xpath 在 IMPORTXML 公式中获取 2 个标签之间的文本

问题描述

编辑-我已经改变了 xpaths。赔率 xpath 和结果 xpath 正是我想要的。但是 Race url 和 race num 与这个数据不对应。

我找到了一个 xpath,它返回我需要的信息,但它返回所有数据,我只需要澳大利亚和新西兰之间的数据。

我有 3 个需要改进的 xpath。

示例网址:https ://www.punters.com.au/form-guide/2020-02-06/

Race URL XPATH - //*[@class='component-wrapper form-guide-index']/table 1 /tbody/tr//td/a/@href

比赛结果 XPATH - //div[@class='upcoming-race__event-infocoming-race__event-info--has-results']/div[2]/div[2]/div[2]/div/span

Race No XPATH - //*[@class='component-wrapper form-guide-index']/table 1 /tbody/tr//td/div/div/span

赔率 XPATH - //*[@class='component-wrapper form-guide-index']/table/tbody/tr//td/div/div[2]/div[2]/div[4]

问题是我让所有 4 个 xpath 返回不同长度的数据。我希望它们都返回相同长度的数据。如果没有数据,则返回空白。

有人可以帮忙吗。下面的图片显示所需的数据。

网站数据

标签: xpathgoogle-sheetsgoogle-sheets-importxml

解决方案


对于澳大利亚(适应新西兰),4 个相同长度的 XPath:

网址(41 个元素):

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a/@href

结果(41 个元素):

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a/text()

种族(30+11 = 41 个元素):

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]//span[@class="upcoming-race__race-num"]/text()|//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a[.="ABD"]/text()

赔率(30+11 = 41 个元素):

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]//div[@class="result-value-1"]/following-sibling::div[3]/text()|//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a[.="ABD"]/text()

对于 Races and Odds,只需在表格中获得数据后将“ABD”替换为空白即可。使用您将获得的 URL 列创建一个新列“City”(将文本保留在第二个“/”之后和“_”之前)。

编辑:如果您不想要“ABD”数据,请使用这些(URLS、结果、比赛、赔率)。每个元素 30 个。

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a[not(.="ABD")]/@href

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a[not(.="ABD")]/text()

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]//span[@class="upcoming-race__race-num"]/text()

//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]//div[@class="result-value-1"]/following-sibling::div[3]/text()

推荐阅读