google sheet importhtml 点击显示更多
google sheet importhtml with click show more
我正在尝试从 https://www.espn.com/nhl/stats/player/_/view/skating/table/offensive/sort/goals/dir/desc
导入 NHL 数据
问题是我无法导入 733 行,因为“显示更多”只导入了 51 行。我想导入所有 733 行。
这是我在 google sheet 的单元格中输入的代码:
=IMPORTHTML("https://www.espn.com/nhl/stats/player/_/view/skating/table/offensive/sort/goals/dir/desc";"Table";2;)
感谢您的宝贵时间,
文森特
有一个类似的问题
基本上是说,如果显示的数据由JavaScript控制,则无法使用[=21]的import()函数获取数据=] 张.
在你的情况下,检查你要检索的 NHL 数据是否由 JavaScript 控制 我去了 URL,禁用了 JavaScript(通过单击旁边的挂锁图标URL 栏中的 URL > 单击网站设置 > 将 JavaScript 设置为 'Block'> 刷新网站)单击 'Show more' 时它没有显示任何内容else,所以数据确实是被JavaScript.
控制的
你可以尝试importJson,但你需要写一些脚本。
攻击这个 URL 这将 return 你们所有 970 玩家 json 格式。
https://site.web.api.espn.com/apis/common/v3/sports/hockey/nhl/statistics/byathlete?region=us&lang=en&contentorigin=espn&isqualified=false&limit=1000&sort=offensive.goals%3Adesc&category=skaters.
我做到了,它导入了所有播放器,但格式不同,也许您需要修复教程中的脚本。
获取这样的数据:
希望能帮到你。
您可以使用此脚本提取主要信息
function hockey() {
var url = 'https://site.web.api.espn.com/apis/common/v3/sports/hockey/nhl/statistics/byathlete?region=us&lang=en&contentorigin=espn&isqualified=false&limit=1000&sort=offensive.goals%3Adesc&category=skaters'
var json = JSON.parse(UrlFetchApp.fetch(url).getContentText())
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('extraction')
sh.clearContents()
var labels = []
json.categories[0].labels.forEach(function (e) { labels.push(e) })
json.categories[1].labels.forEach(function (e) { labels.push(e) })
sh.getRange(1, 7, 1, labels.length).setValues([labels])
var names = []
json.categories[0].displayNames.forEach(function (e) { names.push(e) })
json.categories[1].displayNames.forEach(function (e) { names.push(e) })
sh.getRange(2, 7, 1, names.length).setValues([names])
var athletes = []
json.athletes.forEach(function (data) {
var prov = []
prov.push(data.athlete.firstName)
prov.push(data.athlete.lastName)
prov.push(data.athlete.debutYear)
prov.push(data.athlete.age)
prov.push(data.athlete.teamName)
prov.push(data.athlete.teamShortName)
data.categories[0].totals.forEach(function (t) { prov.push(t) })
data.categories[1].totals.forEach(function (t) { prov.push(t) })
athletes.push(prov)
})
sh.getRange(3, 1, athletes.length, athletes[0].length).setValues(athletes)
}
我一次得到了 970 名玩家的所有这些信息
GP +/- TOI/G SHFT PROD WINS L TOI G A PTS PPG PPA S SPCT GWG FW FL FO% SOA SOG SOPCT
我正在尝试从 https://www.espn.com/nhl/stats/player/_/view/skating/table/offensive/sort/goals/dir/desc
导入 NHL 数据问题是我无法导入 733 行,因为“显示更多”只导入了 51 行。我想导入所有 733 行。
这是我在 google sheet 的单元格中输入的代码:
=IMPORTHTML("https://www.espn.com/nhl/stats/player/_/view/skating/table/offensive/sort/goals/dir/desc";"Table";2;)
感谢您的宝贵时间,
文森特
有一个类似的问题
基本上是说,如果显示的数据由JavaScript控制,则无法使用[=21]的import()函数获取数据=] 张.
在你的情况下,检查你要检索的 NHL 数据是否由 JavaScript 控制 我去了 URL,禁用了 JavaScript(通过单击旁边的挂锁图标URL 栏中的 URL > 单击网站设置 > 将 JavaScript 设置为 'Block'> 刷新网站)单击 'Show more' 时它没有显示任何内容else,所以数据确实是被JavaScript.
控制的你可以尝试importJson,但你需要写一些脚本。
攻击这个 URL 这将 return 你们所有 970 玩家 json 格式。
https://site.web.api.espn.com/apis/common/v3/sports/hockey/nhl/statistics/byathlete?region=us&lang=en&contentorigin=espn&isqualified=false&limit=1000&sort=offensive.goals%3Adesc&category=skaters.
我做到了,它导入了所有播放器,但格式不同,也许您需要修复教程中的脚本。
获取这样的数据:
希望能帮到你。
您可以使用此脚本提取主要信息
function hockey() {
var url = 'https://site.web.api.espn.com/apis/common/v3/sports/hockey/nhl/statistics/byathlete?region=us&lang=en&contentorigin=espn&isqualified=false&limit=1000&sort=offensive.goals%3Adesc&category=skaters'
var json = JSON.parse(UrlFetchApp.fetch(url).getContentText())
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('extraction')
sh.clearContents()
var labels = []
json.categories[0].labels.forEach(function (e) { labels.push(e) })
json.categories[1].labels.forEach(function (e) { labels.push(e) })
sh.getRange(1, 7, 1, labels.length).setValues([labels])
var names = []
json.categories[0].displayNames.forEach(function (e) { names.push(e) })
json.categories[1].displayNames.forEach(function (e) { names.push(e) })
sh.getRange(2, 7, 1, names.length).setValues([names])
var athletes = []
json.athletes.forEach(function (data) {
var prov = []
prov.push(data.athlete.firstName)
prov.push(data.athlete.lastName)
prov.push(data.athlete.debutYear)
prov.push(data.athlete.age)
prov.push(data.athlete.teamName)
prov.push(data.athlete.teamShortName)
data.categories[0].totals.forEach(function (t) { prov.push(t) })
data.categories[1].totals.forEach(function (t) { prov.push(t) })
athletes.push(prov)
})
sh.getRange(3, 1, athletes.length, athletes[0].length).setValues(athletes)
}
我一次得到了 970 名玩家的所有这些信息
GP +/- TOI/G SHFT PROD WINS L TOI G A PTS PPG PPA S SPCT GWG FW FL FO% SOA SOG SOPCT