【问题标题】:google sheet importhtml with click show moregoogle sheet importhtml 点击显示更多
【发布时间】:2022-12-31 12:21:40
【问题描述】:

我正在尝试从 https://www.espn.com/nhl/stats/player/_/view/skating/table/offensive/sort/goals/dir/desc 导入 NHL 数据

问题是我无法导入 733 行,因为“显示更多”只导入了 51 行。我想导入所有 733 行。

这是我放在我的谷歌表格单元格中的代码:

=IMPORTHTML("https://www.espn.com/nhl/stats/player/_/view/skating/table/offensive/sort/goals/dir/desc";"Table";2;)

【问题讨论】:

    标签: google-apps-script google-sheets web-scraping google-sheets-formula urlfetch


    【解决方案1】:

    您可以使用此脚本提取主要信息

    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

    【讨论】:

      【解决方案2】:

      还有一个类似的问题here.

      基本上说,如果显示的数据由 JavaScript 控制,则无法使用进口()Google 表格中的函数。

      在您的情况下,检查您要检索的 NHL 数据是否由 JavaScript 控制 我转到了 URL,禁用了 JavaScript(通过单击 URL 栏中 URL 旁边的挂锁图标 > 单击“站点设置”> 将 JavaScript 设置为“阻止'> 刷新网站)点击“显示更多”时没有显示任何其他内容,因此数据确实由 JavaScript 控制。

      【讨论】:

      • 谢谢您的帮助!我会尝试找到其他网站,但目前大多数网站都在使用 js ...
      【解决方案3】:

      你可以试试导入Json,但你需要写一些脚本。
      攻击此 URL,它将返回所有 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
      我做到了,它导入了所有播放器,但格式不同,也许您需要修复教程中的脚本。 像这样获取数据:

      我希望我能帮助你。

      【讨论】:

      • 由于 IMPORTJSON 不是内置函数,请添加更多有关它的详细信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多