要完成,您可以使用以下命令缩短您的第一个 XPath:
(//a[@title][2])[2]/@href
编辑:由于这个 XPath 有时会失败,所以坚持下去:
//div[@class='container right']/div[@class='last-five']/a[2]/@href
要仅选择球员(不是教练)和替补球员(谁出场),您可以使用:
//div[@class="combined-lineups-container"]//a[@href[contains(.,"players")]][not(parent::p[@class="substitute substitute-out"] or count(ancestor::td/p)=1)]/@href
编辑:
这是一个WORKBOOK,可与IMPORTXML 或IMPORTFROMWEB addon 一起使用(免费计划的请求数量受到限制)。
第一张纸是IMPORTXML(一个衬里)。公式:
=IMPORTXML("https://int.soccerway.com/"&IMPORTXML(C1;"//div[@class='container right']/div[@class='last-five']/a[2]/@href");"//div[@class='combined-lineups-container']//a[@href[contains(.,'players')]]/@href")
第二张是IMPORTHTML(分为两部分)。使用的 XPath(获取 url、玩家 url、玩过比赛的玩家 url):
//div[@class="container right"]/div[@class="last-five"]/a[2]/@href
//div[@class="combined-lineups-container"]//a[@href[contains(.,"players")]]/@href
//div[@class="combined-lineups-container"]//a[@href[contains(.,"players")]][not(parent::p[@class="substitute substitute-out"] or count(ancestor::td/p)=1)]/@href
第三张是IMPORTHTML(一个衬垫)。使用的公式:
=IMPORTFROMWEB("https://int.soccerway.com/"&IMPORTFROMWEB(C1;"//div[@class='container right']/div[@class='last-five']/a[2]/@href");"//div[@class='combined-lineups-container']//a[@href[contains(.,'players')]]/@href")
如果使用 IMPORTXML 或 IMPORTFROMWEB 失败,则另一种选择:IMPORTDATA + 正则表达式。
要使用起始 url 生成第二个 url(第二个 url),请使用类似:
="https://int.soccerway.com"®EXEXTRACT(INDEX(QUERY(IMPORTDATA(A2);"select * WHERE Col1 ENDS WITH '>D</a>' or Col1 ENDS WITH '>W</a>' or Col1 ENDS WITH '>L</a>'");7;1);"href=""(.*?)""")
QUERY 可以使用“匹配”进行优化。
要获取玩家名称(Players v1),请使用:
=ARRAYFORMULA(REGEXEXTRACT(QUERY(IMPORTDATA(B2);"select Col1 WHERE Col1 STARTS WITH '<a' and Col1 CONTAINS 'flag_16 left' and Col1 CONTAINS 'players'");"href=""(.*?)"""))
您可以查阅我的表格HERE。
- 蓝色背景的单元格包含公式(主要是 ARRAYFORMULA)
- 黄色背景的单元格:获取数据的捷径
- 粉红色背景的单元格:过滤真正参加比赛的球员的另一种方法(有点复杂,可以优化)
编辑 2:“阵容”工作表已添加到 IMPORTDATA 工作簿。这是一个提取起始 url 的主客队最近 3 场比赛的阵容(22 名球员)的示例。示例:Lugano vs. Basel - 1 July 2020。
有时,Soccerway 没有阵容。在这种情况下,将返回“无阵容”。