使用Google Apps脚本进行网页抓取

Tom*_*mmy 4 web-scraping google-apps-script

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

url = 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'?我正在查看该函数,它允许指定'选项',因为它们被引用,但有关该主题的文档非常有限.

非常感激任何的帮助.非常感谢

汤米

Spi*_*Pig 6

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

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]);
  }
}
Run Code Online (Sandbox Code Playgroud)


Eug*_*ene 5

请尝试以下解决方案:

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

var result = UrlFetchApp.fetch(url, options);
Run Code Online (Sandbox Code Playgroud)