尝试在 google 工作表中使用 importxml 从网站中提取值,但它 returns 与我选择的值完全不同

Trying to use importxml in google sheets to extract a value from a website, but it returns a completely different value than I am selecting

image of my google sheet

我正在尝试创建一个 sheet,我想在其中从 www.tapology.com 个人战士中抓取值并填充创建的列,例如战士的名字、他的记录、他来自哪里等。

我想收集这个战士的一些价值,所以我从名字开始:

https://www.tapology.com/fightcenter/fighters/119825-dominik-mazur

我整理了这样的东西:

=IMPORTXML("https://www.tapology.com/fightcenter/fighters/119825-dominik-mazur", "//div[@id='stats']/ul[1]/li[1]/span[1]")

XPath 应该指向战士的名字,即 Dominik Mazur,但由于某种原因,它 returns 随机出现了不同的战士名字。

我猜它得到了所有具有相同结构的名称,但我不知道如何挑出我正在寻找的值。

一般来说,我的目标是创建一个 google sheet,我将 link 粘贴到任何战斗机的拓扑结构中,它会用我想要的信息填充我的 sheet我手动输入所有内容。

很遗憾,我不是程序员,也不是技术人员,因此非常感谢您的帮助。如果有任何不清楚的地方,请告诉我。

解决方案

试试这个

=arrayformula(split(transpose(split(scraping("yourURLhere"),"♥")),"♦"))

具有自定义功能

function scraping(url){
  var source = UrlFetchApp.fetch(url).getContentText().replace(/(\r\n|\n|\r|\t|  )/gm,"")
  var data = source.match(/<div class='details details_two_columns' id='stats'>[\s\S\w]+?<\/div>/g)
  return (data[0].replace(/<li>/g,'♥').replace(/<span>/g,'♦').replace(/<\/li>|<strong>|<\/strong>|<\/span>/g,'').replace(/(<([^>]+)>)/g,''))
}

抓取多个网址

function infoTapology(url){
  var source = UrlFetchApp.fetch(url).getContentText().replace(/(\r\n|\n|\r|\t|  )/gm,"")
  var data = source.match(/<div class='details details_two_columns' id='stats'>[\s\S\w]+?<\/div>/g)
  var infos = data[0].replace(/<li>/g,'♥').replace(/(<([^>]+)>)/g,'').replace(/&#39;/g,'’').replace(/&quot;/g,'”').split('♥')
  var result = []
  infos.forEach(function(info){
    var x = info.split(':')[0]
    if (info) {x=info.replace(x+':','')}
    result.push(x)
  })
  return([result])
}

importxml与自定义函数的比较:

https://docs.google.com/spreadsheets/d/1se1lWH4g4OSvAW2NldjGiTDS5XB19_5QwSBpMqVRy84/copy