xpath以获取IMPORTXML公式中2个标签之间的文本 [英] xpath to obtain texts between 2 tags in IMPORTXML formula

查看:58
本文介绍了xpath以获取IMPORTXML公式中2个标签之间的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑-我已经改变了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆