xpath - 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 返回不同长度的数据。我希望它们都返回相同长度的数据。如果没有数据,则返回空白。
有人可以帮忙吗。下面的图片显示所需的数据。
解决方案
对于澳大利亚(适应新西兰),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()
推荐阅读
- r - 使用其他包中的函数 - 何时使用 package::function?
- r - 用 xtable 合并几个混淆矩阵
- configuration - Doxygen EXTRACT_ALL = YES 不会全部提取,还显示未记录的警告
- .net-core - '未找到具有不变名称'FirebirdSql.Data.FirebirdClient' 的 ADO.NET 提供程序的实体框架提供程序
- r - 在R中将两个具有不同维度的矩阵相乘
- flutter - 选择复选框的所有值
- r - 跨两个数据框工作:应用还是 for-loop?
- xml - 需要将未关闭的元元素 HTML 转换为 XML
- python - Python,函数中的If语句不会更新函数内的值
- python - 如何在pygame中获得可变键盘输入?