我尝试使用Google 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'其他一些方式?我正在查看该功能,并且它允许指定'选项',因为它们被引用,但有关该主题的文档非常有限。
任何帮助都将非常感激。非常感谢
托米
答案 0 :(得分:6)
在浏览器中访问该网站并打开开发人员工具(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]);
}
}
答案 1 :(得分:3)
请尝试以下解决方案:
var options =
{
"method" : "GET",
"followRedirects" : true,
"muteHttpExceptions": true
};
var result = UrlFetchApp.fetch(url, options);