Xpath,在 Google 张纸中获取 table 文本和图像
Xpath, fetching table with text and images in Google sheets
我正在尝试将此 table 解析为 Google 表格:https://exvius.gamepedia.com/Chaining/Bolting_Strike
并从有图片的地方获取标题文本。
我不知道如何从完整的 table 和 img/@alt
中获取文本(如果有的话)。我可以用
得到 table
=IMPORTXML("https://exvius.gamepedia.com/Chaining/Bolting_Strike","//table[@class='wikitable']/tbody/tr[position()>=3]")
而且只有图文
=IMPORTXML("https://exvius.gamepedia.com/Chaining/Bolting_Strike","//table[@class='wikitable']/tbody/tr[position()>=3]/td/a/img/@alt")
但我似乎不能两者都做,这是 Google Sheets IMPORTXML 的限制吗?
我尝试过使用 OR 和其他布尔运算符,但没有成功。尝试过使用斧头,但这对我来说也是行不通的。
我提出这样的建议:
描述:
在B1
中我们有网页的url。
在 B3
中,我们有以下公式来导入 table 的第一部分:
=QUERY(IMPORTHTML(B1;"table";1);"select Col1,Col2,Col3 OFFSET 2";0)
列L
至O
包含以下公式以获取元素名称和能力名称(将用作VLOOKUP
步骤中的键)。 4 个公式,因为一个能力可以有 2 个元素名称。在 L3
、M3
、N3
、03
中,我们有:
=IMPORTXML(B1;"//td/a[1]/img[@srcset]/ancestor::td[1]/preceding::a[1][@title]")
=IMPORTXML(B1;"//td/a[1]/img[@srcset]/@alt")
=IMPORTXML(B1;"//td/a[2]/img[@srcset]/ancestor::td[1]/preceding::a[1][@title]")
=IMPORTXML(B1;"//td/a[2]/img[@srcset]/@alt")
E4
中的公式是单行,其中 2 VLOOKUP
的结果合并在一起。我们使用 VLOOKUP
将每个能力名称与一个元素配对。
=ARRAYFORMULA(REGEXREPLACE(ARRAYFORMULA(IFERROR(VLOOKUP(C4:INDIRECT("C"&COUNTA(C:C)+2);L:M;2;FALSE);"")&"|"&ARRAYFORMULA(IFERROR(VLOOKUP(C4:INDIRECT("C"&COUNTA(C:C)+2);N:O;2;FALSE);"")));"^\||\|$";""))
最后,在 H3
中我们有 table 的最后一部分:
=QUERY(IMPORTHTML(B1;"table";1);"select Col5,Col6 OFFSET 2";0)
其余(颜色、边框等)是标准格式和条件格式。
旁注:我在欧洲工作,因此您可能需要在公式中将 ;
更改为 ,
。
我正在尝试将此 table 解析为 Google 表格:https://exvius.gamepedia.com/Chaining/Bolting_Strike 并从有图片的地方获取标题文本。
我不知道如何从完整的 table 和 img/@alt
中获取文本(如果有的话)。我可以用
=IMPORTXML("https://exvius.gamepedia.com/Chaining/Bolting_Strike","//table[@class='wikitable']/tbody/tr[position()>=3]")
而且只有图文
=IMPORTXML("https://exvius.gamepedia.com/Chaining/Bolting_Strike","//table[@class='wikitable']/tbody/tr[position()>=3]/td/a/img/@alt")
但我似乎不能两者都做,这是 Google Sheets IMPORTXML 的限制吗?
我尝试过使用 OR 和其他布尔运算符,但没有成功。尝试过使用斧头,但这对我来说也是行不通的。
我提出这样的建议:
描述:
在B1
中我们有网页的url。
在 B3
中,我们有以下公式来导入 table 的第一部分:
=QUERY(IMPORTHTML(B1;"table";1);"select Col1,Col2,Col3 OFFSET 2";0)
列L
至O
包含以下公式以获取元素名称和能力名称(将用作VLOOKUP
步骤中的键)。 4 个公式,因为一个能力可以有 2 个元素名称。在 L3
、M3
、N3
、03
中,我们有:
=IMPORTXML(B1;"//td/a[1]/img[@srcset]/ancestor::td[1]/preceding::a[1][@title]")
=IMPORTXML(B1;"//td/a[1]/img[@srcset]/@alt")
=IMPORTXML(B1;"//td/a[2]/img[@srcset]/ancestor::td[1]/preceding::a[1][@title]")
=IMPORTXML(B1;"//td/a[2]/img[@srcset]/@alt")
E4
中的公式是单行,其中 2 VLOOKUP
的结果合并在一起。我们使用 VLOOKUP
将每个能力名称与一个元素配对。
=ARRAYFORMULA(REGEXREPLACE(ARRAYFORMULA(IFERROR(VLOOKUP(C4:INDIRECT("C"&COUNTA(C:C)+2);L:M;2;FALSE);"")&"|"&ARRAYFORMULA(IFERROR(VLOOKUP(C4:INDIRECT("C"&COUNTA(C:C)+2);N:O;2;FALSE);"")));"^\||\|$";""))
最后,在 H3
中我们有 table 的最后一部分:
=QUERY(IMPORTHTML(B1;"table";1);"select Col5,Col6 OFFSET 2";0)
其余(颜色、边框等)是标准格式和条件格式。
旁注:我在欧洲工作,因此您可能需要在公式中将 ;
更改为 ,
。