2016-07-30 217 views
2

我试图从使用谷歌Apps脚本下面的示例网页中提取数据,刮痧:网站与谷歌Apps脚本

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

使用,UrlFetchApp.Fetch(URL)

问题是,当我使用UrlFetchApp.Fetch(url)来做到这一点,我没有得到由网址中'se'参数定义的页面信息。相反,我收到以下URL的信息,因为它看起来像'se = 54'页异步加载: http://www.premierleague.com/players/2064/Wayne-Rooney/stats

是否有任何方法可以通过其他方式传递参数'se'?我正在研究这个功能,它允许指定“选项”,因为它们被引用,但是关于该主题的文档非常有限。

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

汤米

回答

3

去那个网站在浏览器中,打开开发工具(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]); 
    } 
} 
+0

谢谢!这完全满足了我的要求,并且让我的眼睛开启了一个可能性的世界,以及您可以从浏览器中获得的洞察力,我不知道它是否存在。 – Tommy

1

请尝试以下解决方案:

var options = 
{ 
    "method" : "GET", 
    "followRedirects" : true, 
    "muteHttpExceptions": true 
}; 

var result = UrlFetchApp.fetch(url, options);