【问题标题】:Web scraping with Google Apps Script使用 Google Apps 脚本进行网页抓取
【发布时间】:2016-07-30 17:23:14
【问题描述】:

我正在尝试使用 Google Apps 脚本从以下示例网页中提取数据:

网址 = http://www.premierleague.com/players/2064/Wayne-Rooney/stats?se=54

使用,UrlFetchApp.Fetch(url)

问题是当我使用 UrlFetchApp.Fetch(url) 执行此操作时,我没有得到由 url 中的“se”参数定义的页面信息。相反,我得到了以下 URL 上的信息,因为它看起来像“se=54”页面是异步加载的: http://www.premierleague.com/players/2064/Wayne-Rooney/stats

有什么方法可以通过其他方式传递参数“se”吗?我正在查看该函数,它允许指定“选项”的规范,正如它们所指的那样,但有关该主题的文档非常有限。

任何帮助将不胜感激。非常感谢

汤米

【问题讨论】:

    标签: google-apps-script web-scraping


    【解决方案1】:

    在浏览器中访问该网站并打开开发者工具(F12 或 ctr-shift-i)。单击网络选项卡并使用 F5 重新加载页面。 将出现一个请求列表。在列表的底部,您应该看到为获取信息而发出的异步请求。这些请求从 footballapi.pulselive.com 获取 json 格式的数据。 您可以在应用程序脚本中执行相同的操作。但是您必须发送正确的“来源”标题行,否则您的请求会被拒绝。 这是一个例子。

    function fetchData() {
      var url = "http://footballapi.pulselive.com/football/stats/player/2064?comps=1";
      var options = {
        "headers": {
          "Origin": "http://www.premierleague.com"
        }
      }
      var json = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()); 
      for(var i = 0; i < json.stats.length; i++) {
        if(json.stats[i].name === "goals") Logger.log(json.stats[i]);
      }
    }
    

    【讨论】:

    • 谢谢!这完美地满足了我的要求,让我看到了一个充满可能性的世界,以及您可以从浏览器中获得的我不知道存在的洞察力。
    【解决方案2】:

    请尝试以下解决方案:

    var options =
    {
       "method"  : "GET",   
       "followRedirects" : true,
       "muteHttpExceptions": true
    };
    
    var result = UrlFetchApp.fetch(url, options);
    

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多