xpath以获取IMPORTXML公式中2个标签之间的文本 [英] xpath to obtain texts between 2 tags in IMPORTXML formula
问题描述
编辑-我已经改变了xpaths.xpath和结果xpath的赔率正是我想要的.但是Race url和race num与该数据不符.
我发现一个xpath返回我需要的信息,但它返回所有数据,而我只需要澳大利亚和新西兰之间的数据.
我有3个需要完善的xpath.
示例网址:
对于澳大利亚(适用于NZ),四个相同长度的XPath:
URL(41个元素):
//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row starting-race__row--country'] [1] [*/.=澳大利亚]]/td [position()&=; 2]/a/@ href
结果(41个元素):
//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row starting-race__row--country'] [1] [*/.=澳大利亚]]/td [position()&=; 2]/a/text()
种族(30 + 11 = 41个元素):
//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row starting-race__row--country'] [1] [*/.=澳大利亚]]/td [position()&=; 2]//span [@ class =" upcoming-race__race-num]/text()|//tr [@ class =" upcoming-race__row] [在上::tr [@ class ='upcoming-race__row即将到来的种族__row--国家'] [1] [*/.="Australia"]]/td [position()> = 2]/a [.="ABD"]/文本()
赔率(30 + 11 = 41个元素):
//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row starting-race__row--country'] [1] [*/.=澳大利亚]]/td [position()> = 2]//div [@ class =" result-value-1]/following-sibling :: div [3]/text()|//tr [@class="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row即将到来的种族__row--国家'] [1] [*/.="Australia"]]/td [position()> =2]/a [.="ABD"]/text()
对于竞赛和赔率",一旦您在工作表中获得了数据,只需将"ABD"替换为空白.用您将获得的URL列创建一个新列"City"(将文本保留在第二个"/"之后和"_"之前).
如果您不希望使用"ABD"数据,请使用这些数据(URL,结果,比赛,赔率).每个元素30个元素.
//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row starting-race__row--country'] [1] [*/.=澳大利亚]]/td [position()> = 2]/a [not(.=" ABD)]/@ href//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row即将到来的种族–国家'] [1] [*/.="Australia"]]/td [position()> = 2]/a [not(.="ABD")]/text()//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row即将到来的种族–国家'] [1] [*/.="Australia"]]/td [position()&=; 2]//span [@ class ="upcoming-race__race-num"]/text()//tr [@ class ="upcoming-race__row"] [在前:: tr [@ class ='upcoming-race__row即将到来的种族–国家'] [1] [*/.="Australia"]]/td [position()> = 2]//div [@ class ="result-value-1"]/following-sibling :: div [3]/text()
EDIT- I have changed xpaths. odds xpath and result xpath are exactly what I want. But the Race url and race num do not correspond to this data.
I have found an xpath that returns the info that I need but it returns all data and I only need data between Australia and new zealand.
I have 3 xpaths that I need refined.
Sample URL: https://www.punters.com.au/form-guide/2020-02-06/
Race URL XPATH - //*[@class='component-wrapper form-guide-index']/table1/tbody/tr//td/a/@href
Race Result XPATH - //div[@class='upcoming-race__event-info upcoming-race__event-info--has-results']/div[2]/div[2]/div[2]/div/span
Race No XPATH - //*[@class='component-wrapper form-guide-index']/table1/tbody/tr//td/div/div/span
Odds XPATH - //*[@class='component-wrapper form-guide-index']/table/tbody/tr//td/div/div[2]/div[2]/div[4]
The issue is I get all 4 xpaths returning varying lengths of data. I would want all of them to return same lengths of data. If no data, then return blank.
Can someone assist please.Image below to show the data required.
For Australia (adapt it to NZ), 4 XPaths of the same length :
URLs (41 elements) :
//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a/@href
Results (41 elements) :
//tr[@class="upcoming-race__row"][preceding::tr[@class='upcoming-race__row upcoming-race__row--country'][1][*/.="Australia"]]/td[position()>=2]/a/text()
Races (30+11 = 41 elements) :
//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()
Odds (30+11 = 41 elements) :
//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()
For Races and Odds, just replace "ABD" with blank once you get the data in your sheet. Create a new column "City" with the URL column you'll get (keep the text after the second "/" and just before "_").
EDIT : if you don't want "ABD" data, use these (URLS, Results, Races, Odds). 30 elements for each.
//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()
这篇关于xpath以获取IMPORTXML公式中2个标签之间的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!