【问题标题】:xpath to obtain texts between 2 tags in IMPORTXML formulaxpath 在 IMPORTXML 公式中获取 2 个标签之间的文本
【发布时间】:2020-06-19 23:05:24
【问题描述】:

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

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

我有 3 个需要改进的 xpath。

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

比赛 URL XPATH - //*[@class='component-wrapper form-guide-index']/table1/tbody/tr//td/a/@href

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

Race No XPATH - //*[@class='component-wrapper form-guide-index']/table1/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 返回不同长度的数据。我希望它们都返回相同长度的数据。如果没有数据,则返回空白。

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

【问题讨论】:

    标签: xpath google-sheets google-sheets-importxml


    【解决方案1】:

    对于澳大利亚(适应新西兰),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()
    

    【讨论】:

    • 我对有 ABD 的数据不感兴趣。我可以为赔率、结果和比赛做到这一点。但是如何在不创建具有过滤功能的另一列的情况下将其从 URL 中删除。
    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多